mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-08 12:19:24 +00:00
Move docs to spec
This commit is contained in:
38
spec/integrations/Ethereum.md
Normal file
38
spec/integrations/Ethereum.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user