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.