Skip to content

Commit

Permalink
specify domain when registering name
Browse files Browse the repository at this point in the history
  • Loading branch information
Alejandro-Morales committed Jul 13, 2023
1 parent 05b2ebc commit 744d87e
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 19 deletions.
14 changes: 10 additions & 4 deletions examples/08-local-network-interaction/agent1.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"],
)

Expand All @@ -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)
Expand Down
6 changes: 3 additions & 3 deletions examples/08-local-network-interaction/agent2.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"],
)

Expand All @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions src/uagents/agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand All @@ -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:
Expand Down
22 changes: 13 additions & 9 deletions src/uagents/network.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
2 changes: 1 addition & 1 deletion src/uagents/resolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
Expand Down

0 comments on commit 744d87e

Please sign in to comment.