EVM
Ethereum light client is based on a merkle proofs of a DAG. Ethereum block considered as finalized after 30 confirmations
To verify messages from substrate on Ethereum side we use light client based on BEEFY. Full validation of BEEFY commitment require to send at least 2/3 of validator signatures which is require a lot of gas on Ethereum side. Instead we use small randomized subset of signatures to verify BEEFY commitment.
ethereum-light-client
Pallet used to validate and store Ethereum headers and for transaction receipts verification.
Relayer interact with this pallet via ‘import_header’ extrinsic
basic(incentivized)-inbound-channel
Pallet used to send messages from Ethereum. This pallet use ethereum-light-client pallet to verify receipt
Relayer interact with this pallet via ‘submit’ extrinsic
basic(incentivized)-outbound-channel
Pallet used by another pallets to send messages to Ethereum. Every 10 blocks creates commitment with queued messages. Messages is saved in offchain DB, commitment hash with network id and channel id added to digest.
dispatch
Pallet used by inbound channels to decode and dispatch calls
eth-app
Pallet used to handle native Ethereum token transfers
User interact with ‘burn’ extrinsic
erc20-app
Pallet used to handle ERC20 tokens transfers
This pallet interact with ERC20App.sol for sidechain ERC20 tokens and with SidechainApp for tokens owned by SORA
User interact with ‘burn’ extrinsic
migration-app
Pallet used to migrate from old Ethereum bridge.
leaf-provider
This pallet provides MMR leaf extra data with hash of the digest items used by bridge
BeefyLightClient
Contract used to update MMR tree root and validators Merkle tree root
Relayer interact with
newSignatureCommitment
and completeSignatureCommitment
functionsValidatorRegistry
Used to functions to store and verify validators
Basic(Incentivized)InboundChannel
Used by relayer to submit commitments from Substrate. Verifies commitment using BeefyLightClient and dispatch calls to App contracts
Basic(Incentivized)OutboundChannel
Used by App contracts to send messages to Substrate. Works only with allowed contracts
EthApp
Handle native Ethereum token transfers
ERC20App
Handle common ERC20 tokens transfers
SidechainApp
Handle transfers with tokens owned by SORA
Substrate to Ethereum message sequence

image
Ethereum to Substrate message sequence

image
wss://ws.framenode-1.b1.stg1.sora2.soramitsu.co.jp
wss://ws.framenode-2.b1.stg1.sora2.soramitsu.co.jp
wss://ws.framenode-3.b1.stg1.sora2.soramitsu.co.jp
- BeefyLightClient:
0x93a668Afa9055235c27FE017bE510e3BeA68297E
- Bitfield:
0xd6eC25735308cBC8370dd83Bbd14d069AbC61d24
- ERC20App:
0x42d90437f0a0D9a97D71a909B740f4A4E7Ad783F
- ETHApp:
0xf5Aa7f6E47d37133612a80432141C0EFDD4cd77C
- InboundChannel:
0xa1BB118A2912D536E292EFeD93c7b70Ab4dc8f89
- MerkleProof:
0xd960Da7cB929758B033ff25C02a9C071d0d08DC2
- MigrationApp:
0xB95E6f19dB0AF089Af28cF76D40336147eA8CDC7
- OutboundChannel:
0x3B7A22BCF40910C2e98CC6017E7390900B726b9a
- ScaleCodec:
0x5ae337AC707E579f55cD8A9d35d522CE9064E7E1
- SidechainApp:
0xFE0016cB30cEAe9bf0F0893A4A5917c74B9E58c7
- SimplifiedMMRVerification:
0xe3c8D6F7503c95E1D757b01581aFBC9e8FbD3E60
- ValidatorRegistry:
0x6c36Bf19801F10104C3e00ed0aDE9b5e75362552
Last modified 4mo ago