Skip to content

TestNet Contracts

Introduction

This page tracks the current TestNet contract addresses for the dotNS deployment on Paseo. A Product or tool that wants to interact with the registry directly on TestNet needs these addresses; the higher-level CLI and Polkadot Product SDK surfaces resolve them internally, but anyone integrating below those layers can look up what to call here.

Resolve addresses rather than pinning them

The CLI and the Register and Publish flow resolve these addresses automatically, and most developers should rely on those rather than calling contracts directly. An integration that does call contracts should hold only the protocol registry address and resolve the rest from it.

Contract Address Table

Contract Responsibility Paseo TestNet Address
DotnsProtocolRegistry Keyed address book every other contract resolves its siblings through. 0xD19e3D0C97CF501125a04A97405e3e6592fa846E
DotnsRegistry Holds (namehash → record) mappings, subnodes, and resolver pointers. 0xf34054fd76BbF85f216cf9908226D5f0A72E50CA
DotnsRegistrar The ERC-721 for public and personhood names. A device name has no token. 0x4f06E818Ba3d987704fd91cf3d868E4b019106Ab
DotnsRegistrarController The public commit-reveal registration path. 0xBdaA01bD1bA67d709F2b1fF286Da0d854977EA30
DotnsPopController The personhood gateway path, and the isPopIssued provenance record. 0xCC932348606cc1f3318cADeC5A5Cd2CA447f8a4b
DotnsPopLens Listing surface for a person's names, gated on isPopIssued. 0xAE374b07c7e6f473CBa21d57e36AC15C631Abc51
PopRules Classification and eligibility: which band a label falls in and who may register it. 0x747B456bE03aec0b42bd85C51513730FBD45DA31
DotnsCostModelRegistry Names the cost model in force; that model is where the deposit amount lives. 0x8bfd1f0957e73716732e725802f13830B5682da4
DotnsFlatPricing The registered model itself: one deposit for every band. 0xD839B281dF72Df44fF275305E72cAEEc0fDAA648
DotnsNameEscrow Holds deposits and runs the release, redeem, withdraw, and reclaim lifecycle. 0x4881Afb78e7C908cAe818168B926229D93376520
DotnsNameWhitelist Per-name grants for reserved registration. 0x420166cD67Ca0233094E492a4BbA67045eD7C38C
DotnsContentResolver The contenthash record a Product resolves through. 0x7F74D7CD50f5a834270E2ad395a01b01891AB37d
StoreFactory Deploys the per-user label store that maps a node back to its text. 0x709A027F446a9e2a4BB9cb9a9c754435b19e32B7

These addresses come from the paseo-assethub deployment artifact, on chain ID 420420417. The authoritative copy is the deployments.json asset published with every dotNS release; read it there if this table falls behind a tag.

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.

Addresses are derived from a CREATE3 factory and a fixed salt namespace, so redeploying to the same network reproduces them. An unchanged address is not evidence of an unchanged interface: regenerate the ABIs you build against on every release.

How to Use These Addresses

For Products that need to read name resolution data directly (most don't: the chain client surface and the resolution code in each Host handle this), 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 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 automatically.

    Reference

  • Learn Architecture


    What each contract in the table above is responsible for and how they cooperate.

    Reference

Last update: September 17, 2026
| Created: June 16, 2026