{"keys":[{"kty":"OKP","crv":"Ed25519","use":"sig","alg":"EdDSA","kid":"rVl3VOYAtNY4LW0J","x":"rVl3VOYAtNY4LW0JIbdIJEyy6FKOdPFuFXbhSfDsvew"}],"verification":"Verify the signature over the canonical JSON of the signed object, which is the receipt in a settlement receipt and the attestation in a reputation attestation: keys sorted at every level by Unicode code point, no whitespace between tokens, UTF-8, and no \\u escaping of non-ASCII characters. Note that sorting by UTF-16 code unit, which is JavaScript's default, is a different order above U+FFFF. Every number is an integer within the range plus or minus 2^53-1 and is written with no decimal point and no exponent; fractional quantities such as amounts are carried as decimal strings, so no float formatting is involved anywhere. Then check the claim itself on chain. For a receipt, verify the settlement using transaction_hash and chain_id. For an attestation, count the agent's escrows yourself on basis.escrow_contract, filtering EscrowCreated by its indexed provider topic equal to agent.payout_address and matching each against EscrowReleased or EscrowSettled, since an arbitrated dispute settles through the last of those and carries no provider address. The signature attests that Agoreum made this claim; the chain is what makes it true."}