Crates.io | snowbridge-pallet-inbound-queue-v2 |
lib.rs | snowbridge-pallet-inbound-queue-v2 |
version | 0.4.0 |
created_at | 2025-03-24 17:17:36.811912+00 |
updated_at | 2025-08-02 07:07:51.450371+00 |
description | Snowbridge Inbound Queue Pallet V2 |
homepage | |
repository | https://github.com/paritytech/polkadot-sdk.git |
max_upload_size | |
id | 1604018 |
size | 173,489 |
Reads messages from Ethereum and sends them to intended destination on Polkadot, using XCM.
1. Ethereum Gateway Event: A message is first emitted by a GatewayProxy contract on Ethereum in an OutboundMessageAccepted event. This event contains:
v2_registerToken
and v2_sendMessage
is called on Ethereum.2. Relayer Submits Proof: A relayer gathers the event proof (containing the Ethereum event log and the proofs required:
receipts proof and execution header proof) and calls the submit
extrinsic of this pallet.
3. Verification: The supplied proof is verified by an on-chain Verifier (configured in the runtime as the EthereumBeaconClient). The verifier checks that the header containing the message is valid. If verification fails, the submission is rejected.
4. Message Conversion: Once verified, the message data is translated into XCM via a MessageConverter implementation. This translation includes extracting payload details, XCM instructions, and bridging asset references.
5. XCM Dispatch: The resulting XCM message is dispatched to the target AssetHub parachain for further processing. Depending
on the xcm
provided in the payload, more messages may be sent to parachains after AssetHub.
6. Relayer Reward: The relayer is rewarded with Ether (the relayer_fee portion), paid out by the configured RewardPayment handler, which accumulates rewards against a relayer account, which may be claimed.
A trait-based component (snowbridge_inbound_queue_primitives::Verifier) responsible for verifying Ethereum events and proofs. The implementation for the verifier is the Ethereum client.
Translates the Ethereum-provided message data (Message) into XCM instructions. The default implementation uses logic in MessageToXcm.
Handles paying out Ether-based rewards to the relayer.
A gating mechanism allowing governance to halt or resume inbound message processing.
The pallet provides the following public extrinsics:
1. Message Submission: submit
Primary extrinsic for inbound messages. Relayers call this with a proof of the Gateway event from Ethereum. The process is described in message-flow.
pub fn submit(
origin: OriginFor<T>,
event: Box<EventProof>,
) -> DispatchResult
2. Governance: set_operating_mode
Allows governance (Root origin) to set the operating mode of the pallet. This can be used to:
pub fn set_operating_mode(
origin: OriginFor<T>,
mode: BasicOperatingMode,
) -> DispatchResult