Skip to content

Public identifiers for the Polkadot Products Devnet: chain IDs, asset IDs, registry addresses and contract addresses. Each section says where to read the current value before you build anything around it.

Only public identifiers appear here. Account keys, mnemonics and seeds are never published: the platform signs on the device, and operator secrets live outside every source repository.

The Devnet runs on the community-operated Paseo network: a relay chain plus a set of system parachains. Product developers usually start with Asset Hub (para 1000) for contracts and assets, People (para 1004) for identity, and Bulletin (para 1010) for app bundle storage.

ChainPara IDRole
Asset Hub1000Contracts (pallet-revive), assets, DotNS gateway
People1004Identity and proof-of-personhood
Bulletin1010Web-app bundle storage
FieldValue
EVM chain id (Asset Hub pallet-revive)420420417
Native tokenPAS, 10 decimals
SS58 prefix (Devnet)42
Web gatewaydev-dot.li

CASH, the balance users see in the app, is a Devnet digital-dollar asset. On Asset Hub its asset ID is 50000413. The same logical asset can be represented on the People chain for app-facing CASH flows.

AssetAsset Hub u32 idDecimalsNotes
pUSD (Digital Dollar / "CASH")500004136The main CASH asset used by the Devnet
USDt (Tether USD)19846

The native token is PAS, with 10 decimals. Devnet tokens carry no value. You can get Devnet funds from the Polkadot faucet.

Two registries make the platform's names and apps discoverable. Each network has its own deployment, so always resolve the address for the network you are targeting.

DotNS records who owns a .dot domain and which app bundle it points to. The gateway reads that record to load the app.

Devnet runs DotNS v1.1.0 (protocolVersion() on DotnsProtocolRegistry).

ContractDevnet address
DotnsProtocolRegistry0xdDF3D3838Ff056F15602fC5a65927f185679C36F
DotnsRegistrar (ERC-721)0xc609e0c2DAB4433d55a32FB098Db8788C1956302
DotnsRegistrarController0x59dcF8BfFFa7239243785C3fC336D8Bb22312e8c
DotnsRegistry0xb052E5EfC5ADEff1f21d48DEfb5169Cb394A1a73
DotnsResolver0xFcB74C073a2d14dc65B178Bb873f4dE51318DDC2
DotnsReverseResolver0x736e067290AE71f841399575ABfc8b2BAA5Eed7E
DotnsContentResolver0x7e75491ecfb04900EB05ee63CABA2B33900aABB5
DotnsPopController0xC3a3EdAb753F91488fD84E6134b5b0325dc22452
DotnsPopResolver0x398912c9bb03180Ff049f0E034FE2E0024fb8406
PopRules0xD5Ee34610F06f7FF4668aB4fabE2393B65a43AE7
DotnsNameEscrow0xb50269322010DeeF2afb162c009Caf897971952C
StoreFactory0x5Df012daA06cA2602DA153309C2E3A83284Cb879
Multicall30x92640655c5c7ee7E42F0B5aD68D205a8A767b81C

Some supporting DotNS contracts vary by network and are not listed here. Read them from DotnsProtocolRegistry (get(key)) or from the dotns-sdk address book for the devnet preset when you need them.

See Naming (DotNS) for how these contracts fit together.

Browse is the app-discovery directory. Publisher records which .dot apps are discoverable; display metadata lives in DotNS records.

ContractDevnet address
Publisher0x8d3CE7Bb2ED68C06306b4C1d5EEe79435AAE0A10

Browse also reads attestation-resolver contracts for compliance badges. Those addresses are network-specific, so read them from the Browse address book for the network you target. See App discovery (Browse).

AccountDataStore is the contract the Polkadot app uses to back up coinage installations. Each install stores a small, client-encrypted record under the account's own address, so restoring the same recovery phrase on a new device can find coins held by earlier installs. The contract has no owner or admin, and only the device holding the key can read a record's contents.

ContractDevnet address
AccountDataStore0x58c9963308c7735cf72ab633e8a9d892f5ab9e05

An EAS-style attestation suite (SchemaRegistry + AttestationService) provides general, permissionless attestations, used by Browse compliance badges and others. Both contracts run on Asset Hub via pallet-revive.

The SchemaRegistry and AttestationService addresses are network-specific and are not listed here. Read them from the attestation-protocol deployment records for the network you target.

Some capabilities are available to contracts at fixed precompile addresses, not as deployed contracts:

PrecompileAddressPurpose
Personhood0x000000000000000000000000000000000a010000personhoodStatus(address, bytes32 context) → tier + per-app alias

Identity & personhood explains how Products use it.

You rarely paste these addresses by hand. The CLIs select the devnet network preset (--env devnet), and that preset carries the RPC endpoints and the full address book. Apps and frontends resolve names to addresses at runtime through the registries above. When you need a value directly, read it from the preset instead of assuming it.

Last updated: