Payment Registry

The Payment Registry accepts fulfillments from Market Makers (MMs), transfers funds to users on the destination chain, and records immutable fulfillment data used later for HDP verification.

Storage

  • mapping(bytes32 => bytes32) fulfillments: maps a fulfillment order hash to the MM’s source address (stored as bytes32). A non-zero value indicates the order has been fulfilled and by whom.

HDP Integration

  • The fulfillments mapping is the on-chain ground truth that orders were paid on the destination chain.

  • HDP reads the EVM storage slot for each order’s fulfillment hash to verify non-zero presence and who fulfilled it.

  • The mapping slot index is fixed by the contract’s storage layout and is used by the HDP module to derive the storage key for proofs.

Controls and Safety

  • Pausable admin switch and onlyOwner pause/unpause.

  • ReentrancyGuard on fulfillment entrypoint.

  • Uses SafeERC20 for token transfers.

  • fulfillments[orderHash] == 0 check prevents double-fulfillment.

Last updated