OpenChainGraph Suite · ART-590 · x402 / EIP-3009 Crypto Primitive
x402 EIP-712 Digest Recomputer
Recomputes the EIP-712 typed-data digest for an EIP-3009 TransferWithAuthorization struct, the authorization primitive underneath the x402 payments rail: digest = keccak256(0x19 || 0x01 || domainSeparator || structHash). All four EIP-712 domain fields (name, version, chainId, verifyingContract) are mandatory inputs and are never defaulted or guessed (a guessed verifyingContract would defeat the entire point of domain separation). This node performs no signature recovery and no domain/nonce/window checks; it makes no claim about signature validity, on-chain settlement, or spend.
EIP-712 / EIP-3009keccak256 (vendored, no hand-rolled crypto)Digest recompute only, no recovery, no settlement
๐ All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data โ use synthetic or anonymised inputs only.
Scope
Root node of the x402-spend-evidence chain (art-590→591→592). Recomputes the exact digest bytes that signer recovery (art-591) verifies against. See x402-spend-evidence chain.
What This Does and Does Not Prove
This node recomputes the exact 32 bytes a wallet signs for an EIP-3009 transfer authorization. It does not verify a signature, recover a signer address, or check domain/nonce/window validity (those are the sibling x402-signer-recovery-verifier and x402-domain-nonce-window-checker nodes). An authorization digest is not a settlement. This node never fetches chain state, never calls a facilitator, and is never a party to a payment.
EIP-712 Domain (all four fields mandatory, never defaulted)
A guessed or omitted domain field defeats domain separation: this node refuses to compute a digest without all four (SPEC-X402-CRYPTO-CORE-1-2026-08-09.md ยง4).
Copy this paragraph into Claude, OpenClaw, or any MCP-aware agent to run this exact tool, with this sample, and verify the artifact.
Run the AINumbers MCP tool `recompute_x402_eip712_digest`. Task: Recompute the EIP-712 digest (domain separator, struct hash, final digest) for an EIP-3009 TransferWithAuthorization struct from caller-supplied domain and authorization fields.
Call it with arguments: {"policy_parameters":{"name":"USD Coin","version":"2","chainId":1,"verifyingContract":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","from":"0x2A1530C4C41db0B0b2bB646CB5Eb1A67b7158667","to":"0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f2","value":1000000,"validAfter":0,"validBefore":2000000000,"nonce":"0x0000000000000000000000000000000000000000000000000000000000000001"}}
Verify before trusting: call `verify_execution_hash` on mcp.ainumbers.co (https://mcp.ainumbers.co/mcp) with the parameter `claimed_hash` set to the returned `execution_hash`, passing the full artifact the run returned (the object containing `policy_parameters` + `output_payload` + `execution_hash`; equivalently `policy_parameters` + `output_payload` with `claimed_hash`), not the bare hash string, or re-run the in-page WebMCP tool `recompute_x402_eip712_digest`.
Return the ledger link https://ledger.ainumbers.co/ so a human can re-verify without contacting us.
PII rule: All inputs are processed locally in your browser. No data is transmitted. Do not enter real personal data โ use synthetic or anonymised inputs only.
Open the tool with the sample prefilled: https://ainumbers.co/chaingraph/art-590-x402-eip712-digest-recomputer.html#p=v1.H4sIAAAAAAAA_wFZAab-eyJuYW1lIjoiVVNEIENvaW4iLCJ2ZXJzaW9uIjoiMiIsImNoYWluSWQiOjEsInZlcmlmeWluZ0NvbnRyYWN0IjoiMHhBMGI4Njk5MWM2MjE4YjM2YzFkMTlENGEyZTlFYjBjRTM2MDZlQjQ4IiwiZnJvbSI6IjB4MkExNTMwQzRDNDFkYjBCMGIyYkI2NDZDQjVFYjFBNjdiNzE1ODY2NyIsInRvIjoiMHhGRmNmOEZERUU3MmFjMTFiNWM1NDI0MjhCMzVFRUY1NzY5QzQwOWYyIiwidmFsdWUiOjEwMDAwMDAsInZhbGlkQWZ0ZXIiOjAsInZhbGlkQmVmb3JlIjoyMDAwMDAwMDAwLCJub25jZSI6IjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMSJ9wCzVOlkBAAA