{
  "tool_id": "art-390-tip20-memo-commitment-validator",
  "tool_version": "1.0.0",
  "display_name": "TIP-20 Memo/Commitment Validator",
  "mcp_name": "validate_tip20_memo_commitment",
  "mandate_type": "compliance_mandate",
  "wave": 65,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-390-tip20-memo-commitment-validator.html",
  "description": "Validates a TIP-20 TransferWithMemo's 32-byte memo as a hash-or-locator commitment: checks length/hex form, recomputes the SHA-256 commitment over a supplied off-chain payload or a templated invoice-ID locator, and reports whether the memo matches. Integrity-only -- distinct from screen_tip20_transfer_batch (art-38, AML/Travel Rule screening of a transfer batch). Calculator only, zero egress.",
  "input_schema_ref": "chaingraph/art-390-tip20-memo-commitment-validator.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [{"system":"sha256-source","image_id":"sha256:674c4beec75fed25496ab6ea99dffe58a860e683e6c82485de35ac65bcff7fce","valid_from":"2026-07-10"},{"system":"risc0","image_id":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","valid_from":"2026-07-10"}],
  "export_capability": [
    "json"
  ],
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "JxJ/vpa+e8X99f9ECj+cw6JByqiOhx+Br3BdPa3cXL4HMa9VypQR8EkBk61Rsr88kFk/g1nDixKNHVoi2xGRAA8yw4Tvz953M/gULI7gT2wny5RCRNrHIq+7QGcezaCNKcTF/zMIsn0WmaOE4LGtyxTowLeBr2K84llIfhNuQAsbIeog99xD72GX+m8s5eszEuN9L7/Vs06r+MyXawqEgQx5To/jWHkv1W7BlDF9q7qfUxk01jsiHw9ypSW3JQv8Amj33Al5bsEQTA80qkA2aiHPI3Y0aISur56je0DCUTUDyCnNWe26AdNtmzqRBpdAgGDzAfgaBvYH0/IVpEKWlQ==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:674c4beec75fed25496ab6ea99dffe58a860e683e6c82485de35ac65bcff7fce",
      "output": {
        "commitment_source_supplied": true,
        "invoice_locator": null,
        "invoice_locator_commitment": null,
        "invoice_locator_match": null,
        "memo_hex": "4c39ea457ea3882ae9b4482b045f554f3d032babaa7cc90cecf66d92408aeb8f",
        "memo_hex_valid": true,
        "memo_length_valid": true,
        "note": "Integrity check only -- distinct from screen_tip20_transfer_batch (art-38 AML/Travel Rule screening). Memo is a fixed 32-byte hash-or-locator commitment per docs.tempo.xyz/guide/payments/transfer-memos.",
        "overall_valid": true,
        "payload_commitment": "4c39ea457ea3882ae9b4482b045f554f3d032babaa7cc90cecf66d92408aeb8f",
        "payload_commitment_match": true
      }
    }
  }
}
