Skip to content

ERC7863 Compatibility

Catalyst is ERC-7683* compatible. *The implementation differs in 2 ways:

  1. A Catalyst OrderKey is returned on initiate(...). For implementations that wants to verify that orders were correctly collected, this adds an option for further data validation. This change is compatible with ERC-7683 since it does not change any function signatures and ERC-7683 specifies that the function has no return. For naive implementations this slightly increases gas costs as Solidity always places RETURNDATACOPY after external calls.
  2. ERC-7683 defines the 2 elements of Output: token and recipient to be type address. The type of both elements have been changed to bytes32. Solidity ABI encoding encodes structs elements such that they fill 32 bytes. As a result, all returned objects of ResolvedCrossChainOrder remains compatible with implementations that assumes these are address (except when read, those values are truncated). When possible, important contextual information is placed in the 20 rightmost bytes. Off-chain listeners should always read the entire 32 bytes.