ERC7863 Compatibility
Catalyst is ERC-7683* compatible. *The implementation differs in 2 ways:
- 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 placesRETURNDATACOPY
after external calls. - ERC-7683 defines the 2 elements of
Output
:token
andrecipient
to be typeaddress
. The type of both elements have been changed tobytes32
. Solidity ABI encoding encodes structs elements such that they fill 32 bytes. As a result, all returned objects ofResolvedCrossChainOrder
remains compatible with implementations that assumes these areaddress
(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.