OpenChainGraph Suite · 829 · Safe Multisig Signing Check
Safe Transaction Hash Recompute
Recomputes the hash and decodes known calls. It does not simulate execution and cannot tell you the destination contract is safe. Paste the fields of a Safe transaction and this page recomputes the three values a signer compares with a hardware wallet screen: the domain hash, the message hash and the safeTxHash = keccak256(0x19 || 0x01 || domainHash || messageHash). Safe versions 1.3.0, 1.4.1 and 1.5.0 are supported; earlier versions have no chain id in their domain and are refused.
EIP-712 / Safe 1.3.0, 1.4.1, 1.5.0keccak256 (vendored, no hand-rolled crypto)Hash and decode only, no simulation
🔒 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
Compare the three hashes below with what your signing device shows before you approve. A call reported as not decoded is unexamined, not cleared. An operation of 1 means the Safe runs the destination code with the Safe's own storage and balances (delegatecall); treat it as the highest-attention case.
What This Does and Does Not Prove
This node recomputes hashes from the fields you paste, so a compromised interface that shows you different fields than it submits can be caught by comparing against the device. It does not simulate execution, does not resolve or inspect the destination contract, does not check signatures or owners, and does not fetch anything from a network. The decoder knows a fixed table of common token calls and Safe administration calls; the nested payload of a multiSend batch is reported as not decoded.
Safe and Chain
Transaction
Empty or 0x for a plain ether transfer. Up to 32768 bytes.
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_safe_tx_hash`. Task: Recompute the domain hash, message hash and safeTxHash of a Safe transaction (versions 1.3.0, 1.4.1, 1.5.0) from pasted fields and decodes known calls from a fixed selector table.
Call it with arguments: {"policy_parameters":{"version":"1.3.0","chainId":"1","safe":"0x1111111111111111111111111111111111111111","to":"0x2222222222222222222222222222222222222222","value":"1000000000000000000","data":"0x","operation":"0","safeTxGas":"0","baseGas":"0","gasPrice":"0","gasToken":"0x0000000000000000000000000000000000000000","refundReceiver":"0x0000000000000000000000000000000000000000","nonce":"7"}}
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_safe_tx_hash`.
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.
Over MCP, the run happens on the AINumbers worker. No AINumbers server stores your inputs.
Open the tool with the sample prefilled: https://ainumbers.co/chaingraph/829-safe-tx-hash-recompute.html#p=v1.H4sIAAAAAAAA_wFwAY_-eyJ2ZXJzaW9uIjoiMS4zLjAiLCJjaGFpbklkIjoiMSIsInNhZmUiOiIweDExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEiLCJ0byI6IjB4MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiIsInZhbHVlIjoiMTAwMDAwMDAwMDAwMDAwMDAwMCIsImRhdGEiOiIweCIsIm9wZXJhdGlvbiI6IjAiLCJzYWZlVHhHYXMiOiIwIiwiYmFzZUdhcyI6IjAiLCJnYXNQcmljZSI6IjAiLCJnYXNUb2tlbiI6IjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsInJlZnVuZFJlY2VpdmVyIjoiMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwibm9uY2UiOiI3In1tleOPcAEAAA