Skip to main content
peaqID is a W3C that identifies a machine across every chain it transacts on.

DID format

There are two peaqID formats, one per generation of machine.

Economics 2.0 machines

The machine ID is uint256(keccak256(abi.encode(machineType, credentialSubject))), the same value as the machine’s ERC-721 token ID in MachineRegistry. The DID document (controller, verification methods, authentication indices, service endpoints) is stored in MachineRegistry itself at activation and updated with the DID setters; id is computed on read, never supplied. Documentation and data API URLs live in serviceEndpoints. There is no mapping from an address-form DID to a 2.0 machine ID. A machine homed on Solana keeps the same did:peaq:<decimal id> form; its DID document lives in the machine’s Solana accounts, verification-method controllers are base58 Solana keys, and each list holds at most 8 entries with 128 UTF-8 bytes per string. See Solana onboarding: the DID document and Economics 2.0.

Tokenomics 1.0 machines (onboarded before 2026-09-01)

The is the machine’s on . The DID resolves to a flat key-value attribute store on the peaq DID (0x0000000000000000000000000000000000000800). Any consumer can start from the DID and traverse on chain to the machine’s identity and financial history. The rest of this page describes this format. peaq chain has roughly 3.5 million peaqID holders from before peaqOS, and they keep their peaqIDs.

Per-machine vs per-proxy

Tokenomics 1.0 path. This section and the DID attribute table describe the Tokenomics 1.0 model: registerMachine / registerFor and the DID attribute writers serve machines already onboarded under Tokenomics 1.0. New machines store their DID document in MachineRegistry at activation; see Economics 2.0 machines.
peaqOS assigns one DID per machine and one DID per . The two serve different roles: A machine that self-manages has no operator attribute. A proxy operator’s machines attribute is a JSON array of (e.g., [123, 456, 789]).
DID writes always go to the caller’s DID. The DID precompile keys attributes by msg.sender, so a proxy that calls registerFor the machine’s and pays the but cannot write the machine’s DID attributes. The machine must sign its own writeMachineDIDAttributes call.

DID attribute table

Under Tokenomics 1.0, registration mints the identity and creates the machine ID. Writing these attributes is a separate : call writeMachineDIDAttributes, or writeProxyDIDAttributes for a proxy operator.

Byte limits

Both SDKs enforce these constraints before any DID write reaches the chain:

Resolving a peaqID

The resolves an Economics 2.0 machine at https://mcr.peaq.xyz/machine/did:peaq:<decimal machine id>. It does not resolve address DIDs: did:peaq:0x... returns 400 Invalid machine DID format.
The profile reports data_visibility: "private" for every machine and carries no rows or partner data. data_api is present when the machine’s DID document carries a peaq-data-api service endpoint. The SDK response types keep optional event_data, partner_data, and partner_data_error keys; the MCR API does not return them.
  • Activate function creates the machine and stores its DID document (Economics 2.0), or registers it and writes DID attributes (Tokenomics 1.0)
  • GET /machine/{did} returns the full machine profile, including DID-sourced metadata
  • Machine NFT is linked to the peaqID via the nftTokenId attribute