Skip to content

EthBridge pallet

Derived from live runtime metadata on TRN root (pallet index 25, captured 2026-05-02). For prose-style documentation see EthBridge on the curated reference side.

Pallet index
25
Calls
15
Events
23
Errors
19
Storage items
31
Constants
15

Calls (extrinsics)

EthBridge.set_xrpl_door_signers

See [Pallet::set_xrpl_door_signers].

ts
api.tx.ethBridge.set_xrpl_door_signers(new_signers: Vec<(SeedPrimitivesEthyCryptoAppCryptoPublic,bool)>)
ArgumentTypeDoc
new_signersVec&lt;(SeedPrimitivesEthyCryptoAppCryptoPublic,bool)&gt;Vec<(T::EthyId, bool)>

Call index: 0

EthBridge.set_relayer

See [Pallet::set_relayer].

ts
api.tx.ethBridge.set_relayer(relayer: [u8;20])
ArgumentTypeDoc
relayer[u8;20]T::AccountId

Call index: 1

EthBridge.deposit_relayer_bond

See [Pallet::deposit_relayer_bond].

ts
api.tx.ethBridge.deposit_relayer_bond()

Call index: 2

EthBridge.withdraw_relayer_bond

See [Pallet::withdraw_relayer_bond].

ts
api.tx.ethBridge.withdraw_relayer_bond()

Call index: 3

EthBridge.set_event_block_confirmations

See [Pallet::set_event_block_confirmations].

ts
api.tx.ethBridge.set_event_block_confirmations(confirmations: u64)
ArgumentTypeDoc
confirmationsu64u64

Call index: 4

EthBridge.set_delayed_event_proofs_per_block

See [Pallet::set_delayed_event_proofs_per_block].

ts
api.tx.ethBridge.set_delayed_event_proofs_per_block(count: u8)
ArgumentTypeDoc
countu8u8

Call index: 5

EthBridge.set_challenge_period

See [Pallet::set_challenge_period].

ts
api.tx.ethBridge.set_challenge_period(blocks: u32)
ArgumentTypeDoc
blocksu32BlockNumberFor<T>

Call index: 6

EthBridge.set_contract_address

See [Pallet::set_contract_address].

ts
api.tx.ethBridge.set_contract_address(contract_address: H160)
ArgumentTypeDoc
contract_addressH160EthAddress

Call index: 7

EthBridge.set_bridge_paused

See [Pallet::set_bridge_paused].

ts
api.tx.ethBridge.set_bridge_paused(paused: bool)
ArgumentTypeDoc
pausedboolbool

Call index: 8

EthBridge.finalise_authorities_change

See [Pallet::finalise_authorities_change].

ts
api.tx.ethBridge.finalise_authorities_change(next_notary_keys: Vec<SeedPrimitivesEthyCryptoAppCryptoPublic>)
ArgumentTypeDoc
next_notary_keysVec&lt;SeedPrimitivesEthyCryptoAppCryptoPublic&gt;WeakBoundedVec<T::EthyId, T::MaxAuthorities>

Call index: 9

EthBridge.remove_missing_event_id

See [Pallet::remove_missing_event_id].

ts
api.tx.ethBridge.remove_missing_event_id(event_id_range: (u64,u64))
ArgumentTypeDoc
event_id_range(u64,u64)(EventClaimId, EventClaimId)

Call index: 10

EthBridge.submit_missing_event

See [Pallet::submit_missing_event].

ts
api.tx.ethBridge.submit_missing_event(tx_hash: H256, event: Bytes)
ArgumentTypeDoc
tx_hashH256H256
eventBytesVec<u8>

Call index: 11

EthBridge.submit_event

See [Pallet::submit_event].

ts
api.tx.ethBridge.submit_event(tx_hash: H256, event: Bytes)
ArgumentTypeDoc
tx_hashH256H256
eventBytesVec<u8>

Call index: 12

EthBridge.submit_challenge

See [Pallet::submit_challenge].

ts
api.tx.ethBridge.submit_challenge(event_claim_id: u64)
ArgumentTypeDoc
event_claim_idu64EventClaimId

Call index: 13

EthBridge.submit_notarization

See [Pallet::submit_notarization].

ts
api.tx.ethBridge.submit_notarization(payload: {"_enum":{"Call":"{\"callId\":\"u64\",\"authorityIndex\":\"u16\",\"result\":\"PalletEthyCheckedEthCallResult\"}","Event":"{\"eventClaimId\":\"u64\",\"authorityIndex\":\"u16\",\"result\":\"PalletEthyEventClaimResult\"}"}}, signature: [u8;65])
ArgumentTypeDoc
payload{"_enum":{"Call":"{\"callId\":\"u64\",\"authorityIndex\":\"u16\",\"result\":\"PalletEthyCheckedEthCallResult\"}","Event":"{\"eventClaimId\":\"u64\",\"authorityIndex\":\"u16\",\"result\":\"PalletEthyEventClaimResult\"}"}}NotarizationPayload
signature[u8;65]<<T as Config>::EthyId as RuntimeAppPublic>::Signature

Call index: 14

Events

EthBridge.Verified

Verifying an event succeeded

FieldTypeDoc
event_claim_idu64

EthBridge.Invalid

Verifying an event failed

FieldTypeDoc
event_claim_idu64

EthBridge.AuthoritySetChange

A notary (validator) set change is in motion A proof for the change will be generated with the given event_id

FieldTypeDoc
event_proof_idu64
validator_set_idu64

EthBridge.XrplAuthoritySetChange

A notary (validator) set change for Xrpl is in motion A set of proofs for the change will be generated with the given event_proof_ids

FieldTypeDoc
event_proof_idsVec&lt;u64&gt;
validator_set_idu64

EthBridge.ProofDelayed

Generating event proof delayed as bridge is paused

FieldTypeDoc
event_proof_idu64

EthBridge.ProcessingOk

Processing an event succeeded

FieldTypeDoc
event_claim_idu64

EthBridge.ProcessingFailed

Processing an event failed

FieldTypeDoc
event_claim_idu64
router_error{"_enum":{"FailedProcessing":"SpRuntimeDispatchError","NoReceiver":"Null"}}

EthBridge.Challenged

An event has been challenged

FieldTypeDoc
event_claim_idu64
challenger[u8;20]

EthBridge.ProcessAtExtended

The event is still awaiting consensus. Process block pushed out

FieldTypeDoc
event_claim_idu64
process_atu32

EthBridge.EventSend

An event proof has been sent for signing by ethy-gadget

FieldTypeDoc
event_proof_idu64
signing_request{"_enum":{"Ethereum":"PalletEthyEthereumEventInfo","XrplTx":"Bytes"}}

EthBridge.EventSubmit

An event has been submitted from Ethereum

FieldTypeDoc
event_claim_idu64
event_claim{"txHash":"H256","source":"H160","destination":"H160","data":"Bytes"}
process_atu32

EthBridge.RelayerBondDeposit

An account has deposited a relayer bond

FieldTypeDoc
relayer[u8;20]
bondu128

EthBridge.RelayerBondWithdraw

An account has withdrawn a relayer bond

FieldTypeDoc
relayer[u8;20]
bondu128

EthBridge.RelayerSet

A new relayer has been set

FieldTypeDoc
relayerOption&lt;SeedPrimitivesSignatureAccountId20&gt;

EthBridge.XrplDoorSignersSet

Xrpl Door signers are set

FieldTypeDoc
new_signersVec&lt;(SeedPrimitivesEthyCryptoAppCryptoPublic,bool)&gt;

EthBridge.FinaliseScheduleFail

The schedule to unpause the bridge has failed

FieldTypeDoc
scheduled_blocku32

EthBridge.SetContractAddress

The bridge contract address has been set

FieldTypeDoc
addressH160

EthBridge.XrplAuthoritySetChangeRequestFailed

Xrpl authority set change request failed

FieldTypeDoc
error{"_enum":{"Other":"Null","CannotLookup":"Null","BadOrigin":"Null","Module":"SpRuntimeModuleError","ConsumerRemaining":"Null","NoProviders":"Null","TooManyConsumers":"Null","Token":"SpRuntimeTokenError","Arithmetic":"SpArithmeticArithmeticError","Transactional":"SpRuntimeTransactionalError","Exhausted":"Null","Corruption":"Null","Unavailable":"Null","RootNotAllowed":"Null"}}

EthBridge.EventBlockConfirmationsSet

Ethereum event confirmations were set

FieldTypeDoc
confirmationsu64

EthBridge.DelayedEventProofsPerBlockSet

DelayedEventProofsPerBlock was set

FieldTypeDoc
countu8

EthBridge.ChallengePeriodSet

A new challenge period was set

FieldTypeDoc
periodu32

EthBridge.BridgeManualPause

The bridge has been manually paused or unpaused

FieldTypeDoc
pausedbool

EthBridge.MissingEventIdsRemoved

A range of missing event Ids were removed

FieldTypeDoc
range(u64,u64)

Errors

EthBridge.NoLocalSigningAccount

EthBridge.OffchainUnsignedTxSignedPayload

EthBridge.InvalidNotarization

A notarization was invalid

EthBridge.HttpFetch

EthBridge.InvalidClaim

Claim was invalid e.g. not properly ABI encoded

EthBridge.OcwConfig

offchain worker not configured properly

EthBridge.EventReplayPending

Event was already submitted and is pending

EthBridge.EventReplayProcessed

Event was already submitted and is complete

EthBridge.BridgePaused

The bridge is paused pending validator set changes (once every era / 24 hours) It will reactive after ~10 minutes

EthBridge.Internal

Some internal operation failed

EthBridge.NoPermission

Caller does not have permission for that action

EthBridge.NoClaim

There is no event claim associated with the supplied claim_id

EthBridge.ClaimAlreadyChallenged

There is already a challenge for this claim

EthBridge.CantUnbondRelayer

The relayer is active and cant unbond the specified amount

EthBridge.CantBondRelayer

The relayer already has a bonded amount

EthBridge.NoBondPaid

The relayer hasn't paid the relayer bond so can't be set as the active relayer

EthBridge.MaxNewSignersExceeded

Someone tried to set a greater amount of validators than allowed

EthBridge.MaxChallengesExceeded

No more challenges are allowed for this claim_id

EthBridge.MessageTooLarge

The supplied message length is above the specified bounds

Storage

EthBridge.AuthoritiesChangedThisEra

Flag to indicate whether authorities have been changed during the current era

ts
await api.query.ethBridge.authoritiesChangedThisEra()

Returns: bool

Modifier: Default

EthBridge.BridgePaused

Whether the bridge is paused (e.g. during validator transitions or by governance)

ts
await api.query.ethBridge.bridgePaused()

Returns: {"manualPause":"bool","authoritiesChange":"bool"}

Modifier: Default

EthBridge.ChallengerAccount

Maps from event claim id to challenger and bond amount paid

ts
await api.query.ethBridge.challengerAccount(key1)
  • Key: u64 (hasher: Twox64Concat)
  • Returns: (SeedPrimitivesSignatureAccountId20,u128)

Modifier: Optional

EthBridge.ChallengePeriod

The (optimistic) challenge period after which a submitted event is considered valid

ts
await api.query.ethBridge.challengePeriod()

Returns: u32

Modifier: Default

EthBridge.ContractAddress

The bridge contract address on Ethereum

ts
await api.query.ethBridge.contractAddress()

Returns: H160

Modifier: Default

EthBridge.EventBlockConfirmations

The minimum number of block confirmations needed to notarize an Ethereum event

ts
await api.query.ethBridge.eventBlockConfirmations()

Returns: u64

Modifier: Default

EthBridge.EventNotarizations

Notarizations for queued events Either: None = no notarization exists OR Some(yay/nay)

ts
await api.query.ethBridge.eventNotarizations(key1, key2)
  • Key: (u64,SeedPrimitivesEthyCryptoAppCryptoPublic) (hashers: Twox64Concat, Twox64Concat)
  • Returns: {"_enum":["Valid","DataProviderErr","TxStatusFailed","UnexpectedContractAddress","NoTxLogs","NotEnoughConfirmations","UnexpectedData","NoTxReceipt","UnexpectedSource"]}

Modifier: Optional

EthBridge.DelayedEventProofsPerBlock

The maximum number of delayed events that can be processed in on_initialize()

ts
await api.query.ethBridge.delayedEventProofsPerBlock()

Returns: u8

Modifier: Default

EthBridge.NextEventProofId

Id of the next event proof

ts
await api.query.ethBridge.nextEventProofId()

Returns: u64

Modifier: Default

EthBridge.NextNotaryKeys

Scheduled notary (validator) public keys for the next session

ts
await api.query.ethBridge.nextNotaryKeys()

Returns: Vec<SeedPrimitivesEthyCryptoAppCryptoPublic>

Modifier: Default

EthBridge.NotaryKeys

Active notary (validator) public keys

ts
await api.query.ethBridge.notaryKeys()

Returns: Vec<SeedPrimitivesEthyCryptoAppCryptoPublic>

Modifier: Default

EthBridge.NotaryXrplKeys

Active xrpl notary (validator) public keys

ts
await api.query.ethBridge.notaryXrplKeys()

Returns: Vec<SeedPrimitivesEthyCryptoAppCryptoPublic>

Modifier: Default

EthBridge.XrplDoorSigners

Door Signers set by sudo (white list)

ts
await api.query.ethBridge.xrplDoorSigners(key1)
  • Key: [u8;33] (hasher: Twox64Concat)
  • Returns: bool

Modifier: Default

EthBridge.NotarySetId

The current validator set id

ts
await api.query.ethBridge.notarySetId()

Returns: u64

Modifier: Default

EthBridge.NotarySetProofId

The event proof Id generated by the previous validator set to notarize the current set. Useful for syncing the latest proof to Ethereum

ts
await api.query.ethBridge.notarySetProofId()

Returns: u64

Modifier: Default

EthBridge.XrplNotarySetProofId

The event proof Id generated by the previous validator set to notarize the current set. Useful for syncing the latest proof to Xrpl

ts
await api.query.ethBridge.xrplNotarySetProofId()

Returns: u64

Modifier: Default

EthBridge.PendingEventClaims

Queued event claims, can be challenged within challenge period

ts
await api.query.ethBridge.pendingEventClaims(key1)
  • Key: u64 (hasher: Twox64Concat)
  • Returns: {"txHash":"H256","source":"H160","destination":"H160","data":"Bytes"}

Modifier: Optional

EthBridge.PendingEventProofs

Queued event proofs to be processed once bridge has been re-enabled

ts
await api.query.ethBridge.pendingEventProofs(key1)
  • Key: u64 (hasher: Twox64Concat)
  • Returns: {"_enum":{"Ethereum":"PalletEthyEthereumEventInfo","XrplTx":"Bytes"}}

Modifier: Optional

EthBridge.PendingClaimChallenges

List of all event ids that are currently being challenged

ts
await api.query.ethBridge.pendingClaimChallenges()

Returns: Vec<u64>

Modifier: Default

EthBridge.PendingClaimStatus

Status of pending event claims

ts
await api.query.ethBridge.pendingClaimStatus(key1)
  • Key: u64 (hasher: Twox64Concat)
  • Returns: {"_enum":["Pending","Challenged","ProvenValid"]}

Modifier: Optional

EthBridge.ProcessedMessageIds

Tracks processed message Ids (prevent replay) Must remain unbounded as this list will grow indefinitely

ts
await api.query.ethBridge.processedMessageIds()

Returns: Vec<u64>

Modifier: Default

EthBridge.MissedMessageIds

Tracks message Ids that are outside of the MessageId buffer and were not processed These message Ids can be either processed or cleared by the relayer

ts
await api.query.ethBridge.missedMessageIds()

Returns: Vec<u64>

Modifier: Default

EthBridge.NextAuthorityChange

The block in which we process the next authority change

ts
await api.query.ethBridge.nextAuthorityChange()

Returns: u32

Modifier: Optional

EthBridge.MessagesValidAt

Map from block number to list of EventClaims that will be considered valid and should be forwarded to handlers (i.e after the optimistic challenge period has passed without issue)

ts
await api.query.ethBridge.messagesValidAt(key1)
  • Key: u32 (hasher: Twox64Concat)
  • Returns: Vec<u64>

Modifier: Default

EthBridge.NextEthCallId

Subscription Id for EthCall requests

ts
await api.query.ethBridge.nextEthCallId()

Returns: u64

Modifier: Default

EthBridge.Relayer

The permissioned relayer

ts
await api.query.ethBridge.relayer()

Returns: [u8;20]

Modifier: Optional

EthBridge.RelayerPaidBond

Maps from relayer account to their paid bond amount

ts
await api.query.ethBridge.relayerPaidBond(key1)
  • Key: [u8;20] (hasher: Twox64Concat)
  • Returns: u128

Modifier: Default

EthBridge.EthCallRequests

Queue of pending EthCallOracle requests

ts
await api.query.ethBridge.ethCallRequests()

Returns: Vec<u64>

Modifier: Default

EthBridge.EthCallNotarizations

EthCallOracle notarizations keyed by (Id, Notary)

ts
await api.query.ethBridge.ethCallNotarizations(key1, key2)
  • Key: (u64,SeedPrimitivesEthyCryptoAppCryptoPublic) (hashers: Twox64Concat, Twox64Concat)
  • Returns: {"_enum":{"Ok":"([u8;32],u64,u64)","ReturnDataExceedsLimit":"Null","ReturnDataEmpty":"Null","DataProviderErr":"Null","InvalidEthBlock":"Null","InvalidTimestamp":"Null"}}

Modifier: Optional

EthBridge.EthCallNotarizationsAggregated

map from EthCallOracle notarizations to an aggregated count

ts
await api.query.ethBridge.ethCallNotarizationsAggregated(key1)
  • Key: u64 (hasher: Twox64Concat)
  • Returns: BTreeMap<PalletEthyCheckedEthCallResult, u32>

Modifier: Optional

EthBridge.EthCallRequestInfo

EthCallOracle request info

ts
await api.query.ethBridge.ethCallRequestInfo(key1)
  • Key: u64 (hasher: Twox64Concat)
  • Returns: {"input":"Bytes","target":"H160","timestamp":"u64","maxBlockLookBehind":"u64","tryBlockNumber":"u64","checkTimestamp":"u64"}

Modifier: Optional

Constants

EthBridge.AuthorityChangeDelay

Length of time the bridge will be paused while the authority set changes

Type: u32
SCALE-encoded value: 0x4b000000

EthBridge.BridgePalletId

The pallet bridge address (destination for incoming messages, source for outgoing)

Type: [u8;8]
SCALE-encoded value: 0x6574687962726467

EthBridge.ChallengeBond

Bond required by challenger to make a challenge

Type: u128
SCALE-encoded value: 0x00e1f505000000000000000000000000

EthBridge.EpochDuration

Type: u64
SCALE-encoded value: 0x100e000000000000

EthBridge.MaxNewSigners

Max amount of new signers that can be set an in extrinsic

Type: u8
SCALE-encoded value: 0x14

EthBridge.NativeAssetId

The native token asset Id (managed by pallet-balances)

Type: u32
SCALE-encoded value: 0x02000000

EthBridge.NotarizationThreshold

The threshold of notarizations required to approve an Ethereum event

Type: Percent
SCALE-encoded value: 0x42

EthBridge.RelayerBond

Bond required for an account to act as relayer

Type: u128
SCALE-encoded value: 0x00e1f505000000000000000000000000

EthBridge.MaxProcessedMessageIds

Maximum number of processed message Ids that will we keep as a buffer to prevent replays.

Type: u32
SCALE-encoded value: 0xe8030000

EthBridge.MaxXrplKeys

Max Xrpl notary (validator) public keys

Type: u8
SCALE-encoded value: 0x08

EthBridge.MaxAuthorities

Maximum count of notary keys

Type: u32
SCALE-encoded value: 0x00100000

EthBridge.MaxEthData

Maximum size of eth abi and message data

Type: u32
SCALE-encoded value: 0x800c0000

EthBridge.MaxChallenges

Maximum number of pending challenges

Type: u32
SCALE-encoded value: 0x64000000

EthBridge.MaxMessagesPerBlock

Maximum number of valid messages per block

Type: u32
SCALE-encoded value: 0xe8030000

EthBridge.MaxCallRequests

Maximum number of Eth Call Requests

Type: u32
SCALE-encoded value: 0xe8030000

Source: live chain metadata from wss://root.rootnet.live/archive/ws · captured 2026-05-02

Curated independently by Codeology. Source-attributed reference for The Root Network. Not affiliated with Futureverse / TRN Labs.