Python SDK

A python sdk to resolve .algo names and perform name operations on ANS .algo names.

PY-ANS-SDK

A python sdk to resolve .algo names and perform name operations on ANS .algo names.

Documentation

Install Package

pip

pip3 install anssdk==0.2.0

Import

from anssdk.ans import ANS

Setup

algod_client = "" # set up your algodV2 client
algod_indexer = "" # set up your algod indexer

#indexer is not required if the intention is to only resolve .algo names, but it is required to view the names owned by an algorand wallet address
#indexer and client must point to mainnet

sdk = ANS(algod_client, algod_indexer)

Resolve .algo name

Resolve .algo name to get the address of the owner. The owner of the account is authorized to manage the domain including setting properties and transfer

name = "ans.algo"

owner = sdk.name(name).get_owner()
print(owner)

Get value property

The value property is set by the owner to return a different address when resolving the domain names.

name = "ans.algo"

value_property = sdk.name(name).get_value()
print(value_property)

Get content property

The content property is set by the user to host a website on web3 infrastructure. This is expected to be either a Skylink content ID or an IPFS content ID

name = "ans.algo"

content = sdk.name(name).get_content()
print(content)

Get text record

Return text record (socials, avatar etc) set by the owner.

name = "ans.algo"
key = "discord"
record = sdk.name(name).get_text(key)
print(record)

Get domain information

Return the entire domain information for the given domains.

name = "ans.algo"
information = sdk.name(name).get_all_information()
print(information)

Register a new name

Prepare name registration transactions

name_to_register = "" #.algo name to register
address = "" # owner's algorand wallet address
period = 0 # duration of registration

try:

    name_registration_txns = sdk.name(name_to_register).register(address, period)

    # Returns a tuple of size two
    # name_registration_txns[0] includes the array of transactions
    # name_registration_txns[1] has the logic sig

    if(len(name_registration_txns[0]) == 2):

        # Lsig account previous opted in (name expired)
        # Sign both transactions
        # Send all to network

    elif(len(name_registration_txns[0]) == 4):

        # name_registration_txns[2] must be signed by the sdk
        # Sign name_registration_txns index 0,1,3
        # Submit transactions as a group

        signed_group_txns = []

        txns = [
            signed_group_txns[0],
            signed_group_txns[1],
            signed_group_txns[2], # must be signed by the sdk
            signed_group_txns[3]
        ]

        # send to network

except:
    pass

Update Name (Set name properties)

This method returns transactions to set the social media handles of a domain name

try:

    name = "" #.algo name
    address = "" # owner's algorand address

    edited_handles = {
        'discord': '',
        'github': ''
    }

    update_name_property_txns = sdk.name(name).update(address, edited_handles)

    # Returns an array of transactions
    # Sign each and send to network

except:
    pass

Renew Name

Retrieve transactions to renew a name. The ANS registry currently supports renewal only by the owner hence the transactions will fail if the input address is not the current owner of the name.

try:

    name = "" # .algo name
    owner = "" # owner address
    period = 0 # period for renewal

    name_renewal_txns =  sdk.name(name).renew(owner, period)

    # Returns an array of transactions 
    # Sign each and send to network

except:
    pass

Initiate transfer

This method returns a transaction to initiate name transfer. The owner is required to set the price for transfer and the recipient's algorand account address.

try:
    
    name = "" # .algo name to initiate transfer
    owner = "" # current owner
    new_owner = "" # new owner's address
    price = 0 # price at which the seller is willing to sell the name

    name_transfer_transaction = sdk.name(name).init_transfer( owner, new_owner, price)

    # Returns a transaction to be signed by `owner` 
    # Sign and send to network

except:
    pass

Accept transfer

Retrieve the transactions to complete the transfer by providing the current owner's address, the transfer recipient's address, and the price set by the owner

try:
    
    name = "" # .algo name to accept transfer
    owner = "" # current owner
    new_owner = "" # new owner's address
    price = 0 # price set in the previous transaction

    accept_name_transfer_txns = sdk.name(name).accept_transfer( new_owner, owner, price)

    # Returns an array of transactions to be signed by `newOwner`
    # Sign each and send to network

except:
    pass

Get domains owned by an address

Returns domains owned by an algorand address

address="" # provide an algorand address here
socials=True # return socials along with domain information
metadata=True # return metadata along with domain information
limit=1 #limit the number of domains to retrieve

domains = sdk.address(address).get_names(socials, metadata, limit)
print(domains)

Get default domain

If configured, this method returns the default domain set by an address. If not configured, this method returns the most recently purchased domain by an address

address="" # provide an algorand address here

default_domain = sdk.address(address).get_default_domain()
print(default_domain)

Last updated