mirror of
https://github.com/serai-dex/serai.git
synced 2024-12-23 20:19:24 +00:00
9cc35a06ab
Also uses numbered lists for function descriptions.
38 lines
1.3 KiB
Markdown
38 lines
1.3 KiB
Markdown
# 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. `data` is limited to 255 bytes.
|
|
|
|
### Out Instructions
|
|
|
|
`data` is limited to 255 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.
|