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 .
Identifies a single machine, links to its Machine NFT and event history
Proxy DID
registerMachine. The proxy itself is a registered machine.
machineId, machines
Identifies an operator, lists the machine IDs of all machines it manages
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. A proxy that calls registerFor the machine’s and pays the , but it cannot write attributes to the machine’s DID; the machine must sign its own writeMachineDIDAttributes call. Skipping this leaves the machine unreachable through the .
After registration, the operator or machine must explicitly call writeMachineDIDAttributes (or writeProxyDIDAttributes) to write these attributes to the DID. Registration itself only mints the identity and creates the machine ID; the DID attribute writes are a separate .
Attribute
Type
Description
machineId
uint256
On-chain machine ID assigned by IdentityRegistry. Primary key for all queries.
nftTokenId
uint256
Token ID of the machine’s Machine NFT. This is a separate ERC-721 token space and is not equal to machineId.
operator
did:peaq:0x...
Proxy operator’s DID. Absent if the machine self-manages.
documentation_url
URL string
Link to machine documentation maintained by the project.
data_api
URL string
Raw data API endpoint. The MCR API reads this when data_visibility is public.
data_visibility
public / private / onchain
Controls how the MCR API exposes raw event data. Unset or empty defaults to private.
machines
JSON array string
Proxy operator DID only. List of managed machine IDs. The DID precompile stores the full JSON; the MCR API truncates to the first 100 valid IDs when reading the machines attribute.
Both SDKs enforce these constraints before any DID write reaches the chain:
Constant
Value
Applies to
DID_MAX_NAME_BYTES
64
Attribute name
DID_MAX_VALUE_BYTES
2560
Attribute value
Migration. peaq chain has approximately 3.5 million existing peaqID holders. Existing holders retain their peaqIDs. A migration path to the current DID format is on the roadmap; the new format is what onboards from peaqOS today.