What one row proves
For each manifest row the buyer, or the marketplace verify route, callsgetValidationStatus(requestHash) on the Validation Registry at 0x8004Cb1BF31DAf7788923b405b754f57acEB4272.
The row is accepted only when all of these hold:
paramsHash is keccak256 of one exact line of operations.jsonl. After unlock, the buyer repeats that hash on the file they received. One changed character, one reordered key, or one extra space makes the line fail.
validator, agentId, response, responseHash, tag, lastUpdate.
Verify before you pay
On a listing page, verification callsPOST /api/marketplace/listings/<slug>/verify. That route reads the pinned manifest, not the data file, and runs the table above for every row. The response includes the row count and the first eight rows, each with its index, paramsHash, and requestHash.
You can do the same call yourself:
Pay and unlock
1
Send MON to the payout address
The listing page shows the seller’s payout address and the price. Send at least that amount, from the wallet you will use to unlock. A transfer to any other address does not count.
2
Sign the unlock message
With the same wallet, sign this personal message, with the listing slug and the transaction hash:
3
Submit both
The marketplace reads the transaction on Monad testnet. It must be successful,
from the signer, to the payout address, and worth at least the listing price. A transaction hash can unlock one purchase, once.4
Download
The response includes access to the data file and the manifest. Recompute keccak256 of each line and compare it to
paramsHash, then compare paramsHash to responseHash on chain.cast keccak hashes the raw file bytes. Hash the line exactly as stored, with no added newline, and compare the result to the manifest.
A buyer’s checklist
The agent is the machine you think it is
The agent is the machine you think it is
ownerOf(agentId) on the Identity Registry names the seller. The agent URI set at claim carries the device name. Neither proves the hardware is honest. They tell you which identity produced the signatures.The validator is KineticAttestor
The validator is KineticAttestor
A validation from some other contract is a different scheme. The verify route rejects it, and so should a buyer checking by hand.
The file matches the manifest
The file matches the manifest
Line count, order, and keccak256 of each line. The manifest is the index. The data file is the thing you paid for. Both have to agree, and both have to agree with the chain.
The license matches your use
The license matches your use
research and commercial allow training and forbid resale of the raw file. audit allows review and forbids training. The license is a term on the listing, not something the chain enforces.