Static reference mapping from ISO 20022 message fields to DLT parameters across R3 Corda, Hyperledger Fabric, and Hyperledger Besu. Highlights critical interoperability gaps — including the SHA-256 vs keccak256 hash incompatibility. Generates translation stub code in Kotlin, Go, or Solidity.
Key hash conventions: Fabric chaincode stores trHash = SHA-256(canonicalXml) where canonicalXml is the W3C Canonical XML 1.1 representation of the pacs.008 payload. The public ledger stores only this hash; the full payload is stored in the PDC_TR_DE_SA private data collection. Besu uses iso20022Hash = keccak256(canonicalXml) stored in the EurDepositToken PaymentMeta struct as meta[uetr]. These hash conventions are incompatible across platforms — rows flagged as interoperability gaps require a bridge layer to recompute the hash in the target format.
UETR field: The UETR (Unique End-to-End Transaction Reference) from pacs.008/GrpHdr/MsgId is the primary correlation key in all three platforms but is stored differently: Corda uses linearId (UUID), Fabric uses uetr as a world state key suffix, and Besu uses meta.uetr in the PaymentMeta struct.