Addresses, deployment transactions, and explorers are on Deployments.
How a claim uses all three
1
KineticRegistry.claim
Mints an ERC-8004 agent to the caller, checks the device’s claim ticket, and calls
DeviceVault.bindLimits with the starting caps.2
IdentityRegistry.setApprovalForAll
The owner approves
KineticAttestor. The registry cannot do this. It only holds the NFT for the duration of claim.3
DeviceVault.deposit
Anyone can fund the agent. The device spends through
pay and topUpGas. The owner recovers funds with withdraw.4
KineticAttestor.attest
The device signs an action proof. The attestor checks the active device and the owner approval, then writes response
100 to the Validation Registry.Rules that hold in every contract
- The owner is always
ownerOfon the Identity Registry. KineticVM does not keep a second copy that can drift. - The device key is never the NFT owner, and no KineticVM contract approves it as an operator.
- Raising a cap, adding a recipient, or unpausing requires the owner wallet or an EIP-712 signature from it. Tightening and pausing are direct owner calls.
activeDevicereverts when the NFT has moved, so a sold machine cannot keep spending on the previous owner’s terms.- The attestor never calls
giveFeedback. Reputation is a separate ERC-8004 surface, and this deployment does not write it.
contracts/src, compiled with Solidity 0.8.28 and the optimizer at 200 runs. Tests live next to the contracts in contracts/test.