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.
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
%% Per-chain colour — palette lives in theme.css (.relayNode etc.)
classDef relayNode stroke-width:1px;
classDef assethubNode stroke-width:1px;
classDef peopleNode stroke-width:1px;
classDef bulletinNode stroke-width:1px;
class Relay relayNode
class AH assethubNode
class People peopleNode
class Bulletin bulletinNode
| 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 The PolkaVM smart-contract environment. CDM, DotNS, and application contracts run here.
Assets + ERC-20 precompiles On-chain assets exposed to contracts through ERC-20-style precompiles, so contracts read and transfer supported assets without Substrate storage details.
DotNS gateway
Connects .dot domains to the contract environment. See Naming for how names resolve to app bundles.
Personhood precompile Contracts read a user's personhood tier through a precompile, 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 are network-specific: they change when a
network is redeployed, so nothing in the platform hard-codes them. Instead, each
command-line tool selects a network preset — --env devnet for pad and
dotns, -n devnet for CDM — and the preset carries the endpoints and address
book for that network.
For the addresses themselves, see Addresses & registries.
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 domain + 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
%% Per-chain colour — palette lives in theme.css (.relayNode etc.)
classDef developerNode stroke-width:1px;
classDef assethubNode stroke-width:1px;
classDef dotnsNode stroke-width:1px;
classDef bulletinNode stroke-width:1px;
classDef gatewayNode stroke-width:1px;
classDef userNode stroke-width:1px;
class Dev developerNode
class Revive assethubNode
class DotNS dotnsNode
class Store bulletinNode
class GW gatewayNode
class User userNode
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
- paseo-network/runtimes — the chain runtimes
- pallet-revive — the PolkaVM contract environment