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 to the machine’s identity, financial history, and through the 1.0 MCR API. 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. A migration path to the current DID format is on the roadmap.

Per-machine vs per-proxy

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, or it stays unreachable through the .

DID attribute table

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

Data visibility modes

The data_visibility attribute controls how the MCR API handles raw data for this machine: private is the default when data_visibility is unset or empty.
  • 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/ returns the full machine profile, including DID-sourced metadata
  • Machine NFT is linked to the peaqID via the nftTokenId attribute