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].
api.tx.ethBridge.set_xrpl_door_signers(new_signers: Vec<(SeedPrimitivesEthyCryptoAppCryptoPublic,bool)>)| Argument | Type | Doc |
|---|---|---|
new_signers | Vec<(SeedPrimitivesEthyCryptoAppCryptoPublic,bool)> | Vec<(T::EthyId, bool)> |
Call index: 0
EthBridge.set_relayer
See [
Pallet::set_relayer].
api.tx.ethBridge.set_relayer(relayer: [u8;20])| Argument | Type | Doc |
|---|---|---|
relayer | [u8;20] | T::AccountId |
Call index: 1
EthBridge.deposit_relayer_bond
See [
Pallet::deposit_relayer_bond].
api.tx.ethBridge.deposit_relayer_bond()Call index: 2
EthBridge.withdraw_relayer_bond
See [
Pallet::withdraw_relayer_bond].
api.tx.ethBridge.withdraw_relayer_bond()Call index: 3
EthBridge.set_event_block_confirmations
See [
Pallet::set_event_block_confirmations].
api.tx.ethBridge.set_event_block_confirmations(confirmations: u64)| Argument | Type | Doc |
|---|---|---|
confirmations | u64 | u64 |
Call index: 4
EthBridge.set_delayed_event_proofs_per_block
See [
Pallet::set_delayed_event_proofs_per_block].
api.tx.ethBridge.set_delayed_event_proofs_per_block(count: u8)| Argument | Type | Doc |
|---|---|---|
count | u8 | u8 |
Call index: 5
EthBridge.set_challenge_period
See [
Pallet::set_challenge_period].
api.tx.ethBridge.set_challenge_period(blocks: u32)| Argument | Type | Doc |
|---|---|---|
blocks | u32 | BlockNumberFor<T> |
Call index: 6
EthBridge.set_contract_address
See [
Pallet::set_contract_address].
api.tx.ethBridge.set_contract_address(contract_address: H160)| Argument | Type | Doc |
|---|---|---|
contract_address | H160 | EthAddress |
Call index: 7
EthBridge.set_bridge_paused
See [
Pallet::set_bridge_paused].
api.tx.ethBridge.set_bridge_paused(paused: bool)| Argument | Type | Doc |
|---|---|---|
paused | bool | bool |
Call index: 8
EthBridge.finalise_authorities_change
See [
Pallet::finalise_authorities_change].
api.tx.ethBridge.finalise_authorities_change(next_notary_keys: Vec<SeedPrimitivesEthyCryptoAppCryptoPublic>)| Argument | Type | Doc |
|---|---|---|
next_notary_keys | Vec<SeedPrimitivesEthyCryptoAppCryptoPublic> | WeakBoundedVec<T::EthyId, T::MaxAuthorities> |
Call index: 9
EthBridge.remove_missing_event_id
See [
Pallet::remove_missing_event_id].
api.tx.ethBridge.remove_missing_event_id(event_id_range: (u64,u64))| Argument | Type | Doc |
|---|---|---|
event_id_range | (u64,u64) | (EventClaimId, EventClaimId) |
Call index: 10
EthBridge.submit_missing_event
See [
Pallet::submit_missing_event].
api.tx.ethBridge.submit_missing_event(tx_hash: H256, event: Bytes)| Argument | Type | Doc |
|---|---|---|
tx_hash | H256 | H256 |
event | Bytes | Vec<u8> |
Call index: 11
EthBridge.submit_event
See [
Pallet::submit_event].
api.tx.ethBridge.submit_event(tx_hash: H256, event: Bytes)| Argument | Type | Doc |
|---|---|---|
tx_hash | H256 | H256 |
event | Bytes | Vec<u8> |
Call index: 12
EthBridge.submit_challenge
See [
Pallet::submit_challenge].
api.tx.ethBridge.submit_challenge(event_claim_id: u64)| Argument | Type | Doc |
|---|---|---|
event_claim_id | u64 | EventClaimId |
Call index: 13
EthBridge.submit_notarization
See [
Pallet::submit_notarization].
api.tx.ethBridge.submit_notarization(payload: {"_enum":{"Call":"{\"callId\":\"u64\",\"authorityIndex\":\"u16\",\"result\":\"PalletEthyCheckedEthCallResult\"}","Event":"{\"eventClaimId\":\"u64\",\"authorityIndex\":\"u16\",\"result\":\"PalletEthyEventClaimResult\"}"}}, signature: [u8;65])| Argument | Type | Doc |
|---|---|---|
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
| Field | Type | Doc |
|---|---|---|
event_claim_id | u64 |
EthBridge.Invalid
Verifying an event failed
| Field | Type | Doc |
|---|---|---|
event_claim_id | u64 |
EthBridge.AuthoritySetChange
A notary (validator) set change is in motion A proof for the change will be generated with the given
event_id
| Field | Type | Doc |
|---|---|---|
event_proof_id | u64 | |
validator_set_id | u64 |
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
| Field | Type | Doc |
|---|---|---|
event_proof_ids | Vec<u64> | |
validator_set_id | u64 |
EthBridge.ProofDelayed
Generating event proof delayed as bridge is paused
| Field | Type | Doc |
|---|---|---|
event_proof_id | u64 |
EthBridge.ProcessingOk
Processing an event succeeded
| Field | Type | Doc |
|---|---|---|
event_claim_id | u64 |
EthBridge.ProcessingFailed
Processing an event failed
| Field | Type | Doc |
|---|---|---|
event_claim_id | u64 | |
router_error | {"_enum":{"FailedProcessing":"SpRuntimeDispatchError","NoReceiver":"Null"}} |
EthBridge.Challenged
An event has been challenged
| Field | Type | Doc |
|---|---|---|
event_claim_id | u64 | |
challenger | [u8;20] |
EthBridge.ProcessAtExtended
The event is still awaiting consensus. Process block pushed out
| Field | Type | Doc |
|---|---|---|
event_claim_id | u64 | |
process_at | u32 |
EthBridge.EventSend
An event proof has been sent for signing by ethy-gadget
| Field | Type | Doc |
|---|---|---|
event_proof_id | u64 | |
signing_request | {"_enum":{"Ethereum":"PalletEthyEthereumEventInfo","XrplTx":"Bytes"}} |
EthBridge.EventSubmit
An event has been submitted from Ethereum
| Field | Type | Doc |
|---|---|---|
event_claim_id | u64 | |
event_claim | {"txHash":"H256","source":"H160","destination":"H160","data":"Bytes"} | |
process_at | u32 |
EthBridge.RelayerBondDeposit
An account has deposited a relayer bond
| Field | Type | Doc |
|---|---|---|
relayer | [u8;20] | |
bond | u128 |
EthBridge.RelayerBondWithdraw
An account has withdrawn a relayer bond
| Field | Type | Doc |
|---|---|---|
relayer | [u8;20] | |
bond | u128 |
EthBridge.RelayerSet
A new relayer has been set
| Field | Type | Doc |
|---|---|---|
relayer | Option<SeedPrimitivesSignatureAccountId20> |
EthBridge.XrplDoorSignersSet
Xrpl Door signers are set
| Field | Type | Doc |
|---|---|---|
new_signers | Vec<(SeedPrimitivesEthyCryptoAppCryptoPublic,bool)> |
EthBridge.FinaliseScheduleFail
The schedule to unpause the bridge has failed
| Field | Type | Doc |
|---|---|---|
scheduled_block | u32 |
EthBridge.SetContractAddress
The bridge contract address has been set
| Field | Type | Doc |
|---|---|---|
address | H160 |
EthBridge.XrplAuthoritySetChangeRequestFailed
Xrpl authority set change request failed
| Field | Type | Doc |
|---|---|---|
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
| Field | Type | Doc |
|---|---|---|
confirmations | u64 |
EthBridge.DelayedEventProofsPerBlockSet
DelayedEventProofsPerBlock was set
| Field | Type | Doc |
|---|---|---|
count | u8 |
EthBridge.ChallengePeriodSet
A new challenge period was set
| Field | Type | Doc |
|---|---|---|
period | u32 |
EthBridge.BridgeManualPause
The bridge has been manually paused or unpaused
| Field | Type | Doc |
|---|---|---|
paused | bool |
EthBridge.MissingEventIdsRemoved
A range of missing event Ids were removed
| Field | Type | Doc |
|---|---|---|
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
await api.query.ethBridge.authoritiesChangedThisEra()Returns: bool
Modifier: Default
EthBridge.BridgePaused
Whether the bridge is paused (e.g. during validator transitions or by governance)
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
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
await api.query.ethBridge.challengePeriod()Returns: u32
Modifier: Default
EthBridge.ContractAddress
The bridge contract address on Ethereum
await api.query.ethBridge.contractAddress()Returns: H160
Modifier: Default
EthBridge.EventBlockConfirmations
The minimum number of block confirmations needed to notarize an Ethereum event
await api.query.ethBridge.eventBlockConfirmations()Returns: u64
Modifier: Default
EthBridge.EventNotarizations
Notarizations for queued events Either: None = no notarization exists OR Some(yay/nay)
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()
await api.query.ethBridge.delayedEventProofsPerBlock()Returns: u8
Modifier: Default
EthBridge.NextEventProofId
Id of the next event proof
await api.query.ethBridge.nextEventProofId()Returns: u64
Modifier: Default
EthBridge.NextNotaryKeys
Scheduled notary (validator) public keys for the next session
await api.query.ethBridge.nextNotaryKeys()Returns: Vec<SeedPrimitivesEthyCryptoAppCryptoPublic>
Modifier: Default
EthBridge.NotaryKeys
Active notary (validator) public keys
await api.query.ethBridge.notaryKeys()Returns: Vec<SeedPrimitivesEthyCryptoAppCryptoPublic>
Modifier: Default
EthBridge.NotaryXrplKeys
Active xrpl notary (validator) public keys
await api.query.ethBridge.notaryXrplKeys()Returns: Vec<SeedPrimitivesEthyCryptoAppCryptoPublic>
Modifier: Default
EthBridge.XrplDoorSigners
Door Signers set by sudo (white list)
await api.query.ethBridge.xrplDoorSigners(key1)- Key:
[u8;33](hasher: Twox64Concat) - Returns:
bool
Modifier: Default
EthBridge.NotarySetId
The current validator set id
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
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
await api.query.ethBridge.xrplNotarySetProofId()Returns: u64
Modifier: Default
EthBridge.PendingEventClaims
Queued event claims, can be challenged within challenge period
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
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
await api.query.ethBridge.pendingClaimChallenges()Returns: Vec<u64>
Modifier: Default
EthBridge.PendingClaimStatus
Status of pending event claims
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
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
await api.query.ethBridge.missedMessageIds()Returns: Vec<u64>
Modifier: Default
EthBridge.NextAuthorityChange
The block in which we process the next authority change
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)
await api.query.ethBridge.messagesValidAt(key1)- Key:
u32(hasher: Twox64Concat) - Returns:
Vec<u64>
Modifier: Default
EthBridge.NextEthCallId
Subscription Id for EthCall requests
await api.query.ethBridge.nextEthCallId()Returns: u64
Modifier: Default
EthBridge.Relayer
The permissioned relayer
await api.query.ethBridge.relayer()Returns: [u8;20]
Modifier: Optional
EthBridge.RelayerPaidBond
Maps from relayer account to their paid bond amount
await api.query.ethBridge.relayerPaidBond(key1)- Key:
[u8;20](hasher: Twox64Concat) - Returns:
u128
Modifier: Default
EthBridge.EthCallRequests
Queue of pending EthCallOracle requests
await api.query.ethBridge.ethCallRequests()Returns: Vec<u64>
Modifier: Default
EthBridge.EthCallNotarizations
EthCallOracle notarizations keyed by (Id, Notary)
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
await api.query.ethBridge.ethCallNotarizationsAggregated(key1)- Key:
u64(hasher: Twox64Concat) - Returns:
BTreeMap<PalletEthyCheckedEthCallResult, u32>
Modifier: Optional
EthBridge.EthCallRequestInfo
EthCallOracle request info
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
wss://root.rootnet.live/archive/ws · captured 2026-05-02