Skip to content

The network

The Polkadot Products Devnet is a public developer preview that runs on the community-operated Paseo network: a Paseo relay chain plus a set of system parachains. Applications are built against three of those chains — Asset Hub, People, and Bulletin. This page maps what each chain is responsible for and how they fit together when a Product is deployed and opened.

Note

This is a devnet. Tokens have no real value, and flows may still change. Never paste secrets (mnemonics, seed phrases, private keys) into any tool or page.

Topology

The relay chain is the root of trust. Product flows mostly touch three system parachains: Asset Hub for contracts and assets, People for identity and money flows, and Bulletin for web-app bundle storage.

graph TD
  Relay["Paseo relay chain"]
  AH["Asset Hub (para 1000)<br/>contracts / assets / DotNS"]
  People["People (para 1004)<br/>identity + proof-of-personhood"]
  Bulletin["Bulletin (para 1010)<br/>transaction storage (web bundles)"]
  Relay --> AH
  Relay --> People
  Relay --> Bulletin
  People -->|identity and CASH signals| AH
  AH -.->|contenthash points to bundle CID| Bulletin
Chain Para ID Role
Relay Root of trust; anchors the system parachains
Asset Hub 1000 Contracts (PolkaVM/EVM), assets, DotNS gateway
People 1004 Identity and proof-of-personhood
Bulletin 1010 Web-app content storage

Asset Hub (para 1000)

Asset Hub is the primary chain for Product developers. It carries the contract, asset, and naming machinery used by deployed apps.

pallet-revive (PolkaVM contracts)

pallet-revive provides the PolkaVM smart-contract environment. CDM, DotNS, and application contracts run here.

Assets suite and ERC-20 precompiles

Asset Hub exposes on-chain assets to contracts through ERC-20-style precompiles, so Product contracts can read and transfer supported assets without learning Substrate storage details.

DotNS gateway

The DotNS gateway connects .dot names to the contract environment. For how names resolve to app bundles, see Naming.

Personhood precompile

Contracts on Asset Hub can read proof-of-personhood through a precompile. That lets apps ask for a user's personhood tier without calling the identity backend.

People (para 1004)

The People chain holds identity, proof-of-personhood, and Coinage state. It is where usernames are attested, personhood status is recorded, and CASH is held and sent through Coinage.

Bulletin (para 1010)

The Bulletin chain stores published web-app bundles that the gateway serves.

Note

Bulletin uploads are authorization-based, not fee-based. Rather than charging tokens per upload, storage is gated by an authorizer (Root, sibling parachains, or registered authorizers). This is why publishing an app bundle does not consume devnet tokens.

The deployments register

Concrete addresses, endpoints, and CIDs for a given deployment are recorded in the summit-net-deployments register, not hard-coded in this documentation. Treat that register, plus the tooling address books, as the source of truth for live Devnet addresses.

Command-line tools select a network preset (--env <network> for pad and dotns, -n/--name <network> for CDM); the concrete name for a given deployment is provided by the team operating that network. Read addresses and CIDs from the register files rather than assuming them.

Deploy and serve flow

The three chains combine into a single application lifecycle:

graph LR
  Dev["App developer"]
  Revive["pallet-revive on Asset Hub<br/>(PolkaVM/EVM contract)"]
  DotNS["DotNS<br/>.dot name + resolver"]
  Store["Bulletin transaction storage<br/>(auth-gated, CID)"]
  GW["Gateway dev-dot.li"]
  User["Polkadot app / web user"]
  Dev -->|deploy contract| Revive
  Dev -->|reserve name| DotNS
  Dev -->|upload web bundle| Store
  DotNS -->|contenthash = CID| Store
  GW -->|resolve .dot -> CID| DotNS
  User -->|https://label.dev-dot.li| GW
  User -->|contract calls| Revive

A developer deploys contracts to Asset Hub via pallet-revive, reserves a .dot name through the DotNS gateway, and uploads the web bundle to Bulletin. The name's contenthash resolver is bound to the bundle's CID, and the gateway at https://dev-dot.li serves the app at https://<label>.dev-dot.li. For how contracts and naming fit together, see the contracts and naming architecture pages, and the developer guides.

Learn more