From 744d87e6dd544dd19875bb1c24c74f173e4e3a70 Mon Sep 17 00:00:00 2001 From: Alejandro-Morales Date: Thu, 13 Jul 2023 16:56:00 -0600 Subject: [PATCH] specify domain when registering name --- .../08-local-network-interaction/agent1.py | 14 ++++++++---- .../08-local-network-interaction/agent2.py | 6 ++--- src/uagents/agent.py | 4 ++-- src/uagents/network.py | 22 +++++++++++-------- src/uagents/resolver.py | 2 +- 5 files changed, 29 insertions(+), 19 deletions(-) diff --git a/examples/08-local-network-interaction/agent1.py b/examples/08-local-network-interaction/agent1.py index 2dfef5c9..a5a924f2 100644 --- a/examples/08-local-network-interaction/agent1.py +++ b/examples/08-local-network-interaction/agent1.py @@ -11,9 +11,9 @@ class Message(Model): bob = Agent( - name="agent bob", + name="bob-local", port=8001, - seed="agent bob secret phrase", + seed="agent bob-local secret phrase", endpoint=["http://127.0.0.1:8001/submit"], ) @@ -22,8 +22,14 @@ class Message(Model): @bob.on_event("startup") async def register_name(ctx: Context): - await bob.register_name() - print("agent bob registered address: ", get_agent_address(ctx.name)) + # The domain where the name will be registered. + domain = "agent" + + await bob.register_name(domain) + print( + "agent bob-local registered address: ", + get_agent_address(ctx.name + "." + domain), + ) @bob.on_message(model=Message) diff --git a/examples/08-local-network-interaction/agent2.py b/examples/08-local-network-interaction/agent2.py index b7f251b3..2202a0a8 100644 --- a/examples/08-local-network-interaction/agent2.py +++ b/examples/08-local-network-interaction/agent2.py @@ -7,9 +7,9 @@ class Message(Model): alice = Agent( - name="alice", + name="alice-local", port=8000, - seed="alice secret phrase", + seed="alice-local secret phrase", endpoint=["http://127.0.0.1:8000/submit"], ) @@ -18,7 +18,7 @@ class Message(Model): @alice.on_interval(period=2.0) async def send_message(ctx: Context): - await ctx.send("agent bob", Message(message="Hello there bob.")) + await ctx.send("bob-local.agent", Message(message="Hello there bob.")) @alice.on_message(model=Message) diff --git a/src/uagents/agent.py b/src/uagents/agent.py index c558d1ae..1330014d 100644 --- a/src/uagents/agent.py +++ b/src/uagents/agent.py @@ -249,7 +249,7 @@ async def _register(self, ctx: Context): def _schedule_registration(self): return self._almanac_contract.get_expiry(self.address) - async def register_name(self): + async def register_name(self, domain: str): self._logger.info("Registering name...") if not self._almanac_contract.is_registered(self.address): @@ -259,7 +259,7 @@ async def register_name(self): return transaction = self._service_contract.get_registration_tx( - self.name, str(self.wallet.address()), self.address + self.name, str(self.wallet.address()), self.address, domain ) if transaction is None: diff --git a/src/uagents/network.py b/src/uagents/network.py index 4268161b..b5f18c76 100644 --- a/src/uagents/network.py +++ b/src/uagents/network.py @@ -84,35 +84,39 @@ def get_sequence(self, address: str) -> int: class NameServiceContract(LedgerContract): - def is_name_available(self, name: str): - query_msg = {"domain_record": {"domain": f"{name}.agent"}} + def is_name_available(self, name: str, domain: str): + query_msg = {"domain_record": {"domain": f"{name}.{domain}"}} return self.query(query_msg)["is_available"] - def is_owner(self, name: str, wallet_address: str): + def is_owner(self, name: str, domain: str, wallet_address: str): query_msg = { "permissions": { - "domain": f"{name}.agent", + "domain": f"{name}.{domain}", "owner": {"address": {"address": wallet_address}}, } } permission = self.query(query_msg)["permissions"] return permission == "admin" - def _get_registration_msg(self, name: str, address: str): + def _get_registration_msg(self, name: str, address: str, domain: str): return { "register": { - "domain": f"{name}.agent", + "domain": f"{name}.{domain}", "agent_address": address, } } - def get_registration_tx(self, name: str, wallet_address: str, agent_address: str): - if not self.is_name_available(name) and not self.is_owner(name, wallet_address): + def get_registration_tx( + self, name: str, wallet_address: str, agent_address: str, domain: str + ): + if not self.is_name_available(name, domain) and not self.is_owner( + name, domain, wallet_address + ): return None transaction = Transaction() - registration_msg = self._get_registration_msg(name, agent_address) + registration_msg = self._get_registration_msg(name, agent_address, domain) transaction.add_message( create_cosmwasm_execute_msg( diff --git a/src/uagents/resolver.py b/src/uagents/resolver.py index cb1791ec..11425d98 100644 --- a/src/uagents/resolver.py +++ b/src/uagents/resolver.py @@ -15,7 +15,7 @@ def query_record(agent_address: str, service: str) -> dict: def get_agent_address(name: str) -> str: - query_msg = {"domain_record": {"domain": f"{name}.agent"}} + query_msg = {"domain_record": {"domain": f"{name}"}} result = get_service_contract().query(query_msg) if result["record"] is not None: registered_address = result["record"]["records"][0]["agent_address"]["records"]