Economics 2.0: one NFT, one ID
Machines activated under Economics 2.0 get one ERC-721 inMachineRegistry, minted inside the same activateMachine transaction that stores the DID document and bonds the tier. The token ID is the machine ID: uint256(keccak256(abi.encode(machineType, credentialSubject))), a full-width value, and the DID is did:peaq:<that id>. There is no separate Identity NFT, no mintNft call, and no tokenIdOf lookup. Transferring the NFT moves ownership of the machine (the account that can rotate the DID controller and transfer again) and leaves the controller in place. Cross-chain movement of a 2.0 machine is a whole-record relocation through MachineBridgeAdapter, which is disabled on chain today. A 2.0 machine can instead be created on Solana: its identity, DID document and Machine NFT are then Solana accounts owned by a Solana key, while the bond is paid on Solana and booked on peaq, where the peaq-side registry entry stays. That is a creation, not a relocation. See Onboard a machine on Solana.
What the Machine NFT represents (Tokenomics 1.0)
The Machine NFT is a financial digital twin, separate from the that IdentityRegistry mints at registration. The two tokens live in different token spaces and are linked by themachineId:
Selling or the Machine NFT does not affect the machine’s , rights, or protocol authorization.
Machine Card
The Machine Card is a peaqOS registration document that follows the ERC-8004 registration file pattern. The serves it for Economics 2.0 machines at/machines/{machine_id}, where machine_id is the decimal machine ID; it has no Machine Card for Tokenomics 1.0 machines. Example for a peaq-homed 2.0 machine:
GET /machines/{machine_id} for every field and the Solana-homed shape.
For the MCR score, use GET /machine/{did} or GET /mcr/{did}; the revenue summary and trend are on /mcr/{did} only. /mcr/{did} is cached for 3600 seconds, except when mcr_degraded is true or the machine is homed on Solana; /machine/{did} is computed on each request.
Ownership semantics
Unlike the Identity NFT, the Machine NFT is not automatically during . The or machine mints it:1
Register
The or machine calls IdentityRegistry’s
register() (proxy uses registerFor(machineAddress)) and receives a machineId. IdentityRegistry simultaneously mints the Identity NFT to machineAddress with tokenId == machineId. SDK helpers: registerMachine / registerFor.2
Mint Machine NFT
The operator or machine then calls MachineNFT’s
mint(machineId, recipient). MachineNFT assigns a new, independent tokenId. Read the assigned token ID back with tokenIdOf(machineId). SDK helper: mintNft.3
Link DID
Call
writeMachineDIDAttributes to store machineId and nftTokenId on the machine’s DID, binding the identity to its financial twin. These attribute writes must be signed by the machine’s own key (the DID subject); the proxy can’t write them on the machine’s behalf. Registration does not write them for you.Metadata flow
For a peaq-homed Economics 2.0 machine,tokenURI on MachineRegistry returns an empty string. For a machine homed on Solana it reverts with ERC721NonexistentToken, because the token lives on Solana. Read a 2.0 machine’s metadata from GET /metadata/{token_id} on https://mcr.peaq.xyz directly (the token ID is the machine ID). It returns the same shape as GET /machine/{did}: the full machine profile.
The Tokenomics 1.0 MachineNFT contract returns https://mcr.peaq.xyz/metadata/<token id> from tokenURI(tokenId). There is no public MCR for Tokenomics 1.0 machines, so that URL does not return 1.0 metadata.
The lighter Machine Card (ERC-8004 registration document) lives at a separate endpoint: GET /machines/{machine_id}.
Cross-chain portability
This is the legacy bridge for Tokenomics 1.0 Machine NFTs: the route is peaq ↔ Base through the SDKs on a client constructed withouttokenomics20 (the CLI has no bridge command). Economics 2.0 machines have no NFT bridge; see Economics 2.0: cross-chain relocation. The Solana lane is closed: its ONFT program HraxgdzfcAi3AnxRP5sGSrXGAb9ZT1tZTMNuh9vQLxTu is closed on Solana mainnet (its program data no longer exists), and the SDKs bridge to Base only. Bridging is -only: LayerZero V2 has no DVN routes from agung, so bridgeNft / bridge_nft cannot be run against the testnet.
The Machine NFT is a plain ERC-721 on peaq that bridges through the LayerZero V2 ONFT standard. peaq is the home chain: its NFT supply is canonical and uses a lock/unlock adapter (MachineNFTAdapter); destination chains use the standard burn/mint pattern. A token is either transferable on peaq or represented by exactly one live twin on one spoke, never both.
peaq (home)
Canonical Machine NFT contract. Minting and DID linking happen here. Bridging out locks the NFT in
MachineNFTAdapter; bridging back unlocks it.Base
Bridged destination via LayerZero V2 ONFT (EID 30184). Bridging in mints; bridging back to peaq burns.
- Identity independence: The machine’s peaqID, DID attributes, and event submission stay on peaq regardless of where the NFT sits.
Cross-links
- peaqID is the DID linked to the Machine NFT via the
nftTokenIdattribute GET /metadata/{token_id}returns the full NFT metadata JSON- Activate function handles the minting flow during onboarding

