Skip to content

MainNet Contracts

Introduction

This page lists the contract addresses for the dotNS deployment on Polkadot Hub. A Product or tool that calls the registry directly on MainNet needs these addresses; the CLI ships with them for its polkadot environment.

Resolve addresses rather than pinning them

An integration that calls contracts should hold only the protocol registry address and resolve the rest from it.

Contract Address Table

Contract Responsibility Polkadot MainNet Address
DotnsProtocolRegistry Keyed address book every other contract resolves its siblings through. 0x371693bEeAD209FBb94E2Fe5a6E43C3C15fe376F
DotnsRegistry Holds (namehash → record) mappings, subnodes, and resolver pointers. 0x1Ae9a72865eC7092fC7036892f3349748d31A71e
DotnsRegistrar The ERC-721 for public and personhood names. A device name has no token. 0x37442d086e282F7C497FC4Ffe00D0A06B84a1f81
DotnsRegistrarController The public commit-reveal registration path. 0x76c19abE11404e43445670F13173AFA60BED53f8
DotnsPopController The personhood gateway path, and the isPopIssued provenance record. 0xA06d1CB1e3FedFF7b5dFa779b4Cc61703F8A46A1
DotnsPopLens Listing surface for a person's names, gated on isPopIssued. 0xE98fE2437eEc5e867B232409D29dAE61A0255C31
PopRules Classification and eligibility: which band a label falls in and who may register it. 0x088C8de68FD3c199E64C65153B3B628760413BD7
DotnsCostModelRegistry Names the cost model in force; that model is where the deposit amount lives. 0xc6ef04dcD0f7d4F8E6d918d8101eC5f9D5a16198
DotnsFlatPricing The registered model itself: one deposit for every band. 0x1Ad2d2078adEd836eced1D1ac297Cb664Da8DE75
DotnsNameEscrow Holds deposits and runs the release, redeem, withdraw, and reclaim lifecycle. 0xd76134522FAF788F8dF110E1166441E4468d2c81
DotnsNameWhitelist Per-name grants for reserved registration. 0xEc2f4c007b51c35DEfa96bF654f357Fc850362Ab
DotnsContentResolver The contenthash record a Product resolves through. 0xF460c6406217E62A0d2717cD45D6385fe5832001
StoreFactory Deploys the per-user label store that maps a node back to its text. 0xFe75036170a5c800a939DF476D756c3d8FF56A8A

These addresses belong to the Polkadot Hub deployment, on chain ID 420420419, which runs dotNS 1.0.0 under the .dot TLD and is operated by the Polkadot Community Foundation. They differ from the TestNet Contracts. The dotNS repository records them in deployments/polkadot/420420419.json, and the protocol registry is the authoritative source: get(key) returns the address each key points at now.

Only DotnsProtocolRegistry needs to be configured by hand. Every other address is resolved from it at call time, so an integration that holds the registry address can find the rest without pinning them.

How to Use These Addresses

To read name resolution data directly, point your typed chain client at DotnsContentResolver using the standard PAPI descriptor for Polkadot Hub, resolving its address from DotnsProtocolRegistry rather than pinning it. The query is a standard contract call; the resolver returns the record fields you read against.

For tools or batch jobs that need to mutate state (a CI pipeline registering a name on every release, for example), use the @parity/dotns-cli instead of building contract calls by hand. The CLI targets this deployment by default and handles the encoding, the PopRules pre-check, and the signing path consistently.

Where to Go Next

  • Learn CLI


    The command-line surface that targets these contracts by default.

    Reference

  • Learn TestNet Contracts


    The Paseo TestNet addresses, for building and testing before you register on MainNet.

    Reference

Last update: October 15, 2026
| Created: October 15, 2026