serai/spec/integrations/Ethereum.md
2024-03-11 17:55:05 -04:00

1.2 KiB

Ethereum

Addresses

Ethereum addresses are 20-byte hashes.

In Instructions

Ethereum In Instructions are present via being appended to the calldata transferring funds to Serai. origin is automatically set to the party from which funds are being transferred. For an ERC20, this is from. For ETH, this is the caller.

Out Instructions

data is limited to 512 bytes.

If data is provided, the Ethereum Router will call a contract-calling child contract in order to sandbox it. The first byte of data designates which child child contract to call. After this byte is read, data is solely considered as data, post its first byte. The child contract is sent the funds before this call is performed.

Child Contract 0

This contract is intended to enable connecting with other protocols, and should be used to convert withdrawn assets to other assets on Ethereum.

  1. Transfers the asset to destination.
  2. Calls destination with data.
Child Contract 1

This contract is intended to enable authenticated calls from Serai.

  1. Transfers the asset to destination.
  2. Calls destination with data[.. 4], serai_address, data[4 ..], where serai_address is the address which triggered this Out Instruction.