The Arweave Name System (ArNS)
What is the Arweave Name System?
Arweave Name System ("ArNS") is a decentralized and censorship-resistant naming system stored on Arweave, enabled by ar.io Gateways and used to connect friendly names to PermaWeb dapps, pages and data.
It is the Smartweave-powered phonebook of the PermaWeb.
Why do we need ArNS?
The goal of ArNS is to make Permaweb URLs beautiful and expressive, allowing dApps and notable Arweave transactions to be hosted from inviting and recognizable Arweave gateway subdomains.
Up to this point of the Permaweb history, a URL would be a combination of the an Arweave Gateway’s DNS name plus an Arweave Transaction ID. Transaction IDs are 43 character identifiers that reference an L1 or Bundled Data Item transaction.
Although these cryptographically-verifiable transaction addresses are useful for Arweave’s security and addressability, their unusual appearances may raise the suspicions of individuals and spam filters alike. Furthermore, it can be difficult for users to remember or even recognize the addresses of their favorite Permaweb destinations.
Friendly names on the Permaweb
The Arweave Name System will replace the long, 43 character Arweave transaction IDs with familiar subdomain names that users can remember.
This system works similarly to traditional DNS, where a user can lease a name in a registry and DNS Name Servers resolve these names to IP addresses. Unlike traditional DNS, ArNS inherits the transparency, durability, permissionlessness, decentralization, and censorship resistance afforded by the killer stack of Arweave, Smartweave, and ar.io Network.
Each ar.io Gateway acts as both cache and name resolver. Users utilize a new token standard to create an Arweave Name Token (ANT) that identifies an Arweave transaction ID that they’d like to make eligible for name registration. They then register their ANT to map to the available name of their choice via the ArNS registration system, also powered by a separate Smartweave contract. ANTs are transferrable like any other Smartweave token, and the ANT owner may update the Arweave transaction ID to which it points at any time.
ar.io Gateways will resolve that name as one of their own subdomains, eg. https://my-name.arweave.net and proxy all requests to the associated Arweave Transaction ID.
Once a name is taken in the registry, it cannot be purchased again, however the owner of the ANT can trade it on supported market places or peer to peer.
Here is an example user story showing how a name could be purchased.
- A user browses to the ar.io ArNS Portal and searches for the name sam.
- The web app gets the latest ar.io ArNS Smartweave Contract state and checks if the name is taken.
- If the name is available, the app shows the user the purchase price for sam.
- The user decides to purchase the name sam and provides an initial Arweave Transaction ID eg. tCce4miTTRuDybbuMdLD2voSdrwxOe6nVkzBJRkz-5Q to point the friendly name at. In the registration process, an ANT is created with a Record that holds the default subdomain with the desired Arweave Transaction ID that sam will point to.
- The newly created ANT Smartweave Contract ID is added into the ar.io ArNS Registry along with the friendly name.
- ar.io Network Gateways will continually refresh and locally cache the state of the ArNS Registry in order to proxy friendly name requests to their corresponding ANT Record.
- Instead of browsing to https://arweave.net/tCce4miTTRuDybbuMdLD2voSdrwxOe6nVkzBJRkz-5Q the user can browse to https://sam.arweave.net
- Any other gateway in the ar.io Network will also support this friendly name being added as a prefix to their own DNS A-Record. For example https://sam.ar.io` or https://sam.bobsgateway.com or https://sam.gatewaydao.io will all resolve the same Arweave Transaction ID referenced in the ANT Record used for sam.
- The owner of the ANT can update its Arweave Transaction ID so the friendly name sam points to updated data if they want. Gateways will read the latest state of the contract and resolve valid updates.
Want to get your own? Get in touch.
How names can be used?
Here are some example names that have already been setup and the type of PermaWeb data that is being referenced.
- https://ardrive.arweave.dev ← decentralized web site
- https://rakis-me.arweave.dev ← decentralized personal page
- https://permapages.arweave.dev ← decentralized app
- https://nosferatu.arweave.dev ← movie
- https://sam.arweave.dev ← text file
Want to learn more about ArNS?
Here is the first draft of the Arweave Name System proposal for the ar.io Network:
Arweave Name System Test Contract Source and Test Token:
- GitHub -ar-io/arns-pilot:Smartweave Contract code and tools relating to the Arweave Name System Pilot
- Arweave Name System Test v0.1.5 Token | ViewBlock
Arweave Name Token Test Contract Source template used to register ArNS Subdomains:
- GitHub - ar-io/ant-pilot: Smartweave Contract code and tools for an Arweave Name Token "ANT" that can be registered in the Arweave Name System Pilot program
- Arweave Name Token Source Contract v0.1.5 | ViewBlock
The above GitHub repositories also contain tooling scripts to create tokens, buy names, transfer tokens and other read and write operations needed to support ArNS.