IdentityRegistry model. The paper is at peaq.xyz/economics-2-0; this page documents what the deployed contracts do. Live figures (activated machines, PEAQ bonded, tier prices at the current oracle rate) are on the Machine Explorer.
What is live
Activation and the bond
One transaction toMachineStateAndSync.activateMachine mints the machine’s ERC-721 in MachineRegistry, stores its DID document, bonds PEAQ in MachineSubscription on a tier, and records peaq as the home chain in CrossChainMirror. The sender is the owner and the payer.
The bond is quoted in USD per tier and converted to PEAQ at the oracle rate when you call:
MachineSubscription). The machine’s recorded bond stays at the full amount. A voucher can cover the whole bond, in which case nothing is transferred and the machine is still bonded in full.
The bond is not withdrawable. It stays bonded while the subscription is renewed, and unwinds through grace and runoff when it is not.
Tiers
Tier prices are protocol parameters set by governance (
InfoDesk.setTierPriceUsd), quoted per 365-day period. When governance changes a price, the quote changes with it. Always preview before you spend: peaqos activate ... --dry-run, previewMachineActivation, or preview_machine_activation. The PEAQ figure moves with the oracle price every day; the preview prints it.
Tiers also carry points that weight bonding rewards per operator. Higher tiers earn more points per machine.
Paying in USDT
Not available on peaq mainnet:SubscriptionTokenProvisionPool has no USDT token configured, so USDT settlement fails. Pay the bond in PEAQ. On a deployment where the token is set, --payment usdt (CLI) or activateMachineWithUsdt / activate_machine_with_usdt (SDKs) settles the PEAQ-quoted bond in USDT through SubscriptionTokenProvisionPool, which performs the conversion. You approve a maximum USDT amount derived from the quote and your accepted slippage; the call never spends more than that maximum. The bond, the voucher credit, and the net amount stay denominated in PEAQ.
Subscription lifecycle
Parameters inInfoDesk on peaq mainnet:
- Renew at any point in Active, Grace, or Runoff. Renewal extends from the stored period end, not from now, and cures Grace or Runoff immediately. It keeps the stored tier. The contracts also allow a tier change, up or down, once the period has ended (Grace or Runoff), priced at the full bond of the new tier, and refuse one while the machine is Active, but the published deployment records do not enable tier selection on renewal:
peaqos machine subscription renew --tierand the SDKs’tierparameter fail withRENEWAL_TIER_UNSUPPORTEDbefore anything is sent, and a renewal keeps the stored tier. - Runoff moves the decayed part of the bond half to the burn address and half to the treasury (
InfoDesk.treasury(), theTreasuryPoolcontract), applied by the dailysettleLifecyclerun, so at most one step per day. The burn address inInfoDeskis unset, so the burn half does not reduce supply yet. - Terminated machines are retired: the NFT is burned and the subscription record deleted. A machine that is relocating is never terminated mid-flight.
- Fraud termination (protocol owner only) forfeits the whole bond immediately, 50% to the burn address and 50% to the treasury. The burn half does not reduce supply until the burn address is set.
- Suspend / resume is a flag the owner or controller sets on the machine, for example to mark it as under maintenance. It is a signal to operators and does not change the subscription: the period end, grace, runoff and bond decay continue while a machine is suspended, and renewal is due on the same date.
Credits, not payouts
Bonding rewards and onboarding vouchers are never paid out as PEAQ to a wallet. Two kinds of credit accrue to the machine owner and are redeemed against the next bond:
Both are funded from the same surplus (
epochPool, whatever PEAQ sits in MachineSubscription beyond bonds, committed credits and pending runoff payouts; the Machine Pool’s 30% of block rewards refills it every block) and split by one protocol parameter each epoch. A controller who pays for a renewal does not receive the credit; it lands on the owner.
Machine ID and DID
uint256 (bigint in JavaScript, int in Python, a decimal string on every wire). There is no mapping from legacy sequential IDs or from did:peaq:0x<address>: a legacy machine that migrates gets a new 2.0 ID. See peaqID.
Ownership and control
Transferring the NFT moves ownership and retains the controller. There is no operator-sponsored activation: the account that signs
activateMachine owns the machine and pays the bond. Fleets use machine-owned, operator-controlled activation; see Fleet onboarding.
Trust validators
Three different roles are easy to confuse. Keep them apart:
Until the oracle holds a price,
activateMachine reverts with PriceNotAvailable. Prices are 8-decimal USD values keyed by keccak256("PEAQ").
Coordination fees and x402
CoordinationFeeCollector can charge a per-tier USD coordination fee on machine services and accepts x402-style payments through EIP-3009 transferWithAuthorization. The fee is configured at 0 for every tier, so no coordination fee is collected today. When it is set, the collector splits it half to the treasury address and half to TrustValidatorStaking, and the rest of a payment stays claimable by the machine owner. Not exposed in the SDKs or CLI.
Legacy machines
Machines onboarded under Tokenomics 1.0 (IdentityRegistry, 1 PEAQ native bond, separate MachineNFT) keep working on the 1.0 contracts. MachineMigrationHub mirrors them into Economics 2.0: peaq mirrors a legacy machine as a 2.0 machine owned by the hub, and the hub pays the tier bond. Handing the permanent 2.0 ID to the machine’s owner is a later step. Mirroring is operated by peaq for partner fleets and is not exposed in the SDKs or the CLI.
A mirrored machine’s legacy 1 PEAQ bond stays in IdentityStaking; the 2.0 tier bond is bonded in addition.
Cross-chain relocation
Economics 2.0 relocates a whole machine record between registered chains throughMachineBridgeAdapter and CrossChainMirror (LayerZero V2 transport). This differs from the 1.0 Machine NFT bridge, which moves only the NFT. Relocation is switched off on peaq mainnet and agung (InfoDesk.isMachineRelocationEnabled() is false), and the SDKs expose relocation status reads only. The 1.0 bridgeNft / bridge_nft path throws MACHINE_RELOCATION_UNAVAILABLE in Tokenomics mode. See Omni-chain.
Solana mainnet is the first registered relocation peer: peaq’s MachineBridgeAdapter has the Solana adapter’s store account as its LayerZero peer (protocol chain 5, LayerZero EID 30168), and the eleven Solana programs are live. No machine can relocate while the flag is off. Program IDs are on Smart contracts.
Relocation is disabled on chain, so a machine gets to Solana by being created there: the peaq operator registers the Solana owner wallet once, the owner pays the tier’s bond on Solana (in PEAQ, or in USDC swapped to exactly the bond) through MachineSubscriptionTerminal, peaq’s trust validator node books it on peaq, and the owner mints the machine and sends the link push back to peaq, which the node delivers. Points, vouchers and the subscription record live on peaq; the identity, DID document and NFT are Solana accounts. See Onboard a machine on Solana.
Related
- Activate: the one-transaction onboarding
- Smart contracts: addresses on peaq mainnet and agung
- Tokenomics: supply, inflation, the block reward split, and the wallet consolidation
- CLI: machine: lifecycle, subscription, ownership, and DID commands

