XRPLBridge pallet
Derived from live runtime metadata on TRN root (pallet index 18, captured 2026-05-02). For prose-style documentation see XRPLBridge on the curated reference side.
- Pallet index
18- Calls
- 18
- Events
- 19
- Errors
- 27
- Storage items
- 22
- Constants
- 7
Calls (extrinsics)
XRPLBridge.submit_transaction
See [
Pallet::submit_transaction].
api.tx.xRPLBridge.submit_transaction(ledger_index: u64, transaction_hash: H512, transaction: {"_enum":{"Payment":"{\"amount\":\"u128\",\"address\":\"H160\"}","CurrencyPayment":"{\"amount\":\"u128\",\"address\":\"H160\",\"currency\":\"PalletXrplBridgeXrplCurrency\"}","Xls20":"{\"tokenId\":\"[u8;32]\",\"address\":\"H160\"}"}}, timestamp: u64)| Argument | Type | Doc |
|---|---|---|
ledger_index | u64 | LedgerIndex |
transaction_hash | H512 | XrplTxHash |
transaction | {"_enum":{"Payment":"{\"amount\":\"u128\",\"address\":\"H160\"}","CurrencyPayment":"{\"amount\":\"u128\",\"address\":\"H160\",\"currency\":\"PalletXrplBridgeXrplCurrency\"}","Xls20":"{\"tokenId\":\"[u8;32]\",\"address\":\"H160\"}"}} | XrplTxData |
timestamp | u64 | Timestamp |
Call index: 0
XRPLBridge.submit_challenge
See [
Pallet::submit_challenge].
api.tx.xRPLBridge.submit_challenge(transaction_hash: H512)| Argument | Type | Doc |
|---|---|---|
transaction_hash | H512 | XrplTxHash |
Call index: 1
XRPLBridge.set_payment_delay
See [
Pallet::set_payment_delay].
api.tx.xRPLBridge.set_payment_delay(asset_id: u32, payment_delay: Option<(u128,u32)>)| Argument | Type | Doc |
|---|---|---|
asset_id | u32 | AssetId |
payment_delay | Option<(u128,u32)> | Option<(Balance, BlockNumberFor<T>)> |
Call index: 2
XRPLBridge.withdraw_xrp
See [
Pallet::withdraw_xrp].
api.tx.xRPLBridge.withdraw_xrp(amount: u128, destination: H160)| Argument | Type | Doc |
|---|---|---|
amount | u128 | Balance |
destination | H160 | XrplAccountId |
Call index: 3
XRPLBridge.withdraw_xrp_with_destination_tag
See [
Pallet::withdraw_xrp_with_destination_tag].
api.tx.xRPLBridge.withdraw_xrp_with_destination_tag(amount: u128, destination: H160, destination_tag: u32)| Argument | Type | Doc |
|---|---|---|
amount | u128 | Balance |
destination | H160 | XrplAccountId |
destination_tag | u32 | u32 |
Call index: 4
XRPLBridge.withdraw
See [
Pallet::withdraw].
api.tx.xRPLBridge.withdraw(asset_id: u32, amount: u128, destination: H160, destination_tag: Option<u32>)| Argument | Type | Doc |
|---|---|---|
asset_id | u32 | AssetId |
amount | u128 | Balance |
destination | H160 | XrplAccountId |
destination_tag | Option<u32> | Option<u32> |
Call index: 15
XRPLBridge.add_relayer
See [
Pallet::add_relayer].
api.tx.xRPLBridge.add_relayer(relayer: [u8;20])| Argument | Type | Doc |
|---|---|---|
relayer | [u8;20] | T::AccountId |
Call index: 5
XRPLBridge.remove_relayer
See [
Pallet::remove_relayer].
api.tx.xRPLBridge.remove_relayer(relayer: [u8;20])| Argument | Type | Doc |
|---|---|---|
relayer | [u8;20] | T::AccountId |
Call index: 6
XRPLBridge.set_door_tx_fee
See [
Pallet::set_door_tx_fee].
api.tx.xRPLBridge.set_door_tx_fee(door_type: {"_enum":["Main","NFT"]}, fee: u64)| Argument | Type | Doc |
|---|---|---|
door_type | {"_enum":["Main","NFT"]} | XRPLDoorAccount |
fee | u64 | u64 |
Call index: 7
XRPLBridge.set_xrp_source_tag
See [
Pallet::set_xrp_source_tag].
api.tx.xRPLBridge.set_xrp_source_tag(source_tag: u32)| Argument | Type | Doc |
|---|---|---|
source_tag | u32 | u32 |
Call index: 8
XRPLBridge.set_door_address
See [
Pallet::set_door_address].
api.tx.xRPLBridge.set_door_address(door_account: {"_enum":["Main","NFT"]}, door_address: Option<H160>)| Argument | Type | Doc |
|---|---|---|
door_account | {"_enum":["Main","NFT"]} | XRPLDoorAccount |
door_address | Option<H160> | Option<XrplAccountId> |
Call index: 9
XRPLBridge.set_ticket_sequence_next_allocation
See [
Pallet::set_ticket_sequence_next_allocation].
api.tx.xRPLBridge.set_ticket_sequence_next_allocation(door_account: {"_enum":["Main","NFT"]}, start_ticket_sequence: u32, ticket_bucket_size: u32)| Argument | Type | Doc |
|---|---|---|
door_account | {"_enum":["Main","NFT"]} | XRPLDoorAccount |
start_ticket_sequence | u32 | u32 |
ticket_bucket_size | u32 | u32 |
Call index: 10
XRPLBridge.set_ticket_sequence_current_allocation
See [
Pallet::set_ticket_sequence_current_allocation].
api.tx.xRPLBridge.set_ticket_sequence_current_allocation(door_account: {"_enum":["Main","NFT"]}, ticket_sequence: u32, start_ticket_sequence: u32, ticket_bucket_size: u32)| Argument | Type | Doc |
|---|---|---|
door_account | {"_enum":["Main","NFT"]} | XRPLDoorAccount |
ticket_sequence | u32 | u32 |
start_ticket_sequence | u32 | u32 |
ticket_bucket_size | u32 | u32 |
Call index: 11
XRPLBridge.reset_settled_xrpl_tx_data
See [
Pallet::reset_settled_xrpl_tx_data].
api.tx.xRPLBridge.reset_settled_xrpl_tx_data(highest_settled_ledger_index: u32, submission_window_width: u32, highest_pruned_ledger_index: Option<u32>, settled_tx_data: Option<Vec<(H512,u32,PalletXrplBridgeXrpTransaction,SeedPrimitivesSignatureAccountId20)>>)| Argument | Type | Doc |
|---|---|---|
highest_settled_ledger_index | u32 | u32 |
submission_window_width | u32 | u32 |
highest_pruned_ledger_index | Option<u32> | Option<u32> |
settled_tx_data | Option<Vec<(H512,u32,PalletXrplBridgeXrpTransaction,SeedPrimitivesSignatureAccountId20)>> | Option<Vec<(XrplTxHash, u32, XrpTransaction, T::AccountId)>> |
Call index: 12
XRPLBridge.prune_settled_ledger_index
See [
Pallet::prune_settled_ledger_index].
api.tx.xRPLBridge.prune_settled_ledger_index(ledger_index: u32)| Argument | Type | Doc |
|---|---|---|
ledger_index | u32 | u32 |
Call index: 13
XRPLBridge.set_xrpl_asset_map
See [
Pallet::set_xrpl_asset_map].
api.tx.xRPLBridge.set_xrpl_asset_map(asset_id: u32, xrpl_currency: Option<PalletXrplBridgeXrplCurrency>)| Argument | Type | Doc |
|---|---|---|
asset_id | u32 | AssetId |
xrpl_currency | Option<PalletXrplBridgeXrplCurrency> | Option<XRPLCurrency> |
Call index: 14
XRPLBridge.generate_nft_accept_offer
See [
Pallet::generate_nft_accept_offer].
api.tx.xRPLBridge.generate_nft_accept_offer(nftoken_sell_offer: [u8;32])| Argument | Type | Doc |
|---|---|---|
nftoken_sell_offer | [u8;32] | [u8; 32] |
Call index: 16
XRPLBridge.withdraw_nft
See [
Pallet::withdraw_nft].
api.tx.xRPLBridge.withdraw_nft(token_id: (u32,u32), destination: H160)| Argument | Type | Doc |
|---|---|---|
token_id | (u32,u32) | TokenId |
destination | H160 | XrplAccountId |
Call index: 17
Events
XRPLBridge.TransactionAdded
| Field | Type | Doc |
|---|---|---|
LedgerIndex | u64 | |
XrplTxHash | H512 |
XRPLBridge.TransactionChallenge
| Field | Type | Doc |
|---|---|---|
LedgerIndex | u64 | |
XrplTxHash | H512 |
XRPLBridge.PaymentDelaySet
The payment delay was set
| Field | Type | Doc |
|---|---|---|
asset_id | u32 | |
payment_threshold | u128 | |
delay | u32 |
XRPLBridge.PaymentDelayRemoved
The payment delay was removed
| Field | Type | Doc |
|---|---|---|
asset_id | u32 |
XRPLBridge.ProcessingOk
Processing an event succeeded
| Field | Type | Doc |
|---|---|---|
LedgerIndex | u64 | |
XrplTxHash | H512 |
XRPLBridge.ProcessingFailed
Processing an event failed
| Field | Type | Doc |
|---|---|---|
LedgerIndex | u64 | |
XrplTxHash | H512 | |
DispatchError | {"_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"}} |
XRPLBridge.NotSupportedTransaction
Transaction not supported
No payload.
XRPLBridge.WithdrawRequest
Request to withdraw some XRP amount to XRPL
| Field | Type | Doc |
|---|---|---|
proof_id | u64 | |
sender | [u8;20] | |
asset_id | u32 | |
amount | u128 | |
destination | H160 |
XRPLBridge.WithdrawDelayed
A withdrawal was delayed as it was above the min_payment threshold
| Field | Type | Doc |
|---|---|---|
sender | [u8;20] | |
asset_id | u32 | |
amount | u128 | |
destination | H160 | |
delayed_payment_id | u64 | |
payment_block | u32 |
XRPLBridge.RelayerAdded
| Field | Type | Doc |
|---|---|---|
T::AccountId | [u8;20] |
XRPLBridge.RelayerRemoved
| Field | Type | Doc |
|---|---|---|
T::AccountId | [u8;20] |
XRPLBridge.DoorAddressSet
XRPL Door address set/reset
| Field | Type | Doc |
|---|---|---|
door_account | {"_enum":["Main","NFT"]} | |
address | Option<H160> |
XRPLBridge.DoorNextTicketSequenceParamSet
Next ticket sequence params set for the XRPL door account
| Field | Type | Doc |
|---|---|---|
door_account | {"_enum":["Main","NFT"]} | |
ticket_sequence_start_next | u32 | |
ticket_bucket_size_next | u32 |
XRPLBridge.DoorTicketSequenceParamSet
ticket sequence params set for the XRPL door account
| Field | Type | Doc |
|---|---|---|
door_account | {"_enum":["Main","NFT"]} | |
ticket_sequence | u32 | |
ticket_sequence_start | u32 | |
ticket_bucket_size | u32 |
XRPLBridge.LedgerIndexManualPrune
| Field | Type | Doc |
|---|---|---|
ledger_index | u32 | |
total_cleared | u32 |
XRPLBridge.TicketSequenceThresholdReached
ticket sequence threshold reached for the XRPL door account
| Field | Type | Doc |
|---|---|---|
door_account | {"_enum":["Main","NFT"]} | |
current_ticket | u32 |
XRPLBridge.XrplAssetMapSet
| Field | Type | Doc |
|---|---|---|
asset_id | u32 | |
xrpl_currency | {"symbol":"PalletXrplBridgeXrplCurrencyType","issuer":"H160"} |
XRPLBridge.XrplAssetMapRemoved
| Field | Type | Doc |
|---|---|---|
asset_id | u32 | |
xrpl_currency | {"symbol":"PalletXrplBridgeXrplCurrencyType","issuer":"H160"} |
XRPLBridge.XrplTxSignRequest
Submit XRPL Tx signing request
| Field | Type | Doc |
|---|---|---|
proof_id | u64 | |
tx | {"_enum":{"NFTokenAcceptOffer":"PalletXrplBridgeNfTokenAcceptOfferTransaction","NFTokenCreateOffer":"PalletXrplBridgeNfTokenCreateOfferTransaction"}} |
Errors
XRPLBridge.AssetNotSupported
This asset is not supported by the bridge
XRPLBridge.NotPermitted
Only the active relayer is permitted to perform this action
XRPLBridge.NoAvailablePaymentIds
The paymentIds have been exhausted
XRPLBridge.DelayScheduleAtCapacity
The scheduled block cannot hold any more delayed payments
XRPLBridge.NoTransactionDetails
There is no settledXRPTransactionDetails for this ledger index
XRPLBridge.RelayerDoesNotExists
The relayer account does not exist
XRPLBridge.WithdrawInvalidAmount
Withdraw amount must be non-zero and <= u64
XRPLBridge.DoorAddressNotSet
The door address has not been configured
XRPLBridge.TooManySigners
XRPL does not allow more than 8 signers for door address
XRPLBridge.InvalidAssetDecimals
The asset decimals are too high to bridge to XRPL
XRPLBridge.InvalidCurrencyCode
The issued amount currency code is invalid
XRPLBridge.InvalidMantissaExponentConversion
Could not convert Balance to Mantissa Exponent
XRPLBridge.InvalidSigners
The signers are not known by ethy
XRPLBridge.InvalidHighestPrunedIndex
highest_pruned_ledger_index must be less than highest_settled_ledger_index - submission_window_width
XRPLBridge.TxReplay
Submitted a duplicate transaction hash
XRPLBridge.NextTicketSequenceParamsNotSet
The NextTicketSequenceParams has not been set
XRPLBridge.NextTicketSequenceParamsInvalid
The NextTicketSequenceParams is invalid
XRPLBridge.TicketSequenceParamsInvalid
The TicketSequenceParams is invalid
XRPLBridge.CannotProcessMoreTransactionsAtThatBlock
Cannot process more transactions at that block
XRPLBridge.CannotPruneActiveLedgerIndex
This ledger index is within the submission window and can't be pruned
XRPLBridge.OutSideSubmissionWindow
Transaction submitted is outside the submission window
XRPLBridge.TooManyTransactionsPerLedger
Too Many transactions per ledger
XRPLBridge.InvalidSymbolMapping
XRPL symbol to TRN asset id mapping is invalid
XRPLBridge.AssetRoundingTooHigh
The asset rounding due to saturation is too high, reduce the significant digits
XRPLBridge.Xls20Incompatible
XLS20 incompatible NFT
XRPLBridge.Xls20TokenIDNotFound
XLS20 token id not found
XRPLBridge.TestErrorRemoveAfterUsing
Storage
XRPLBridge.Relayer
List of all XRP transaction relayers
await api.query.xRPLBridge.relayer(key1)- Key:
[u8;20](hasher: Blake2_128Concat) - Returns:
bool
Modifier: Optional
XRPLBridge.ProcessXRPTransaction
Temporary storage to set the transactions ready to be processed at specified block number
await api.query.xRPLBridge.processXRPTransaction(key1)- Key:
u32(hasher: Twox64Concat) - Returns:
Vec<H512>
Modifier: Optional
XRPLBridge.ProcessXRPTransactionDetails
Stores submitted transactions from XRPL waiting to be processed Transactions will be cleared according to the submission window after processing
await api.query.xRPLBridge.processXRPTransactionDetails(key1)- Key:
H512(hasher: Identity) - Returns:
(u64,PalletXrplBridgeXrpTransaction,SeedPrimitivesSignatureAccountId20)
Modifier: Optional
XRPLBridge.SettledXRPTransactionDetails
Settled xrp transactions stored against XRPL ledger index
await api.query.xRPLBridge.settledXRPTransactionDetails(key1)- Key:
u32(hasher: Twox64Concat) - Returns:
Vec<H512>
Modifier: Optional
XRPLBridge.AssetIdToXRPL
Map TRN asset Id to XRPL symbol, storage to keep mapping between TRN -> XRPL tokens/assets
await api.query.xRPLBridge.assetIdToXRPL(key1)- Key:
u32(hasher: Twox64Concat) - Returns:
{"symbol":"PalletXrplBridgeXrplCurrencyType","issuer":"H160"}
Modifier: Optional
XRPLBridge.XRPLToAssetId
Map XRPL symbol to TRN asset Id, storage to keep mapping between XRPL -> TRN tokens/assets
await api.query.xRPLBridge.xRPLToAssetId(key1)- Key:
{"symbol":"PalletXrplBridgeXrplCurrencyType","issuer":"H160"}(hasher: Twox64Concat) - Returns:
u32
Modifier: Optional
XRPLBridge.HighestSettledLedgerIndex
Highest settled XRPL ledger index
await api.query.xRPLBridge.highestSettledLedgerIndex()Returns: u32
Modifier: Default
XRPLBridge.SourceTag
Source tag to be used to indicate the transaction is happening from futureverse
await api.query.xRPLBridge.sourceTag()Returns: u32
Modifier: Default
XRPLBridge.HighestPrunedLedgerIndex
Highest pruned XRPL ledger index
await api.query.xRPLBridge.highestPrunedLedgerIndex()Returns: u32
Modifier: Default
XRPLBridge.SubmissionWindowWidth
XRPL transactions submission window width in ledger indexes
await api.query.xRPLBridge.submissionWindowWidth()Returns: u32
Modifier: Default
XRPLBridge.PaymentDelay
Payment delay for any withdraw over the specified Balance threshold
await api.query.xRPLBridge.paymentDelay(key1)- Key:
u32(hasher: Twox64Concat) - Returns:
(u128,u32)
Modifier: Optional
XRPLBridge.DelayedPayments
Map from DelayedPaymentId to (sender, WithdrawTx)
await api.query.xRPLBridge.delayedPayments(key1)- Key:
u64(hasher: Identity) - Returns:
{"sender":"SeedPrimitivesSignatureAccountId20","destinationTag":"Option<u32>","withdrawTx":"PalletXrplBridgeWithdrawTransaction"}
Modifier: Optional
XRPLBridge.DelayedPaymentSchedule
Map from block number to DelayedPaymentIds scheduled for that block
await api.query.xRPLBridge.delayedPaymentSchedule(key1)- Key:
u32(hasher: Identity) - Returns:
Vec<u64>
Modifier: Optional
XRPLBridge.NextDelayProcessBlock
The highest block number that has had all delayed payments processed
await api.query.xRPLBridge.nextDelayProcessBlock()Returns: u32
Modifier: Default
XRPLBridge.NextDelayedPaymentId
The next available delayedPaymentId
await api.query.xRPLBridge.nextDelayedPaymentId()Returns: u64
Modifier: Default
XRPLBridge.ChallengeXRPTransactionList
Challenge received for a transaction mapped by hash, will be cleared when validator validates
await api.query.xRPLBridge.challengeXRPTransactionList(key1)- Key:
H512(hasher: Identity) - Returns:
[u8;20]
Modifier: Optional
XRPLBridge.DoorTicketSequence
The current ticket sequence of the XRPL door accounts
await api.query.xRPLBridge.doorTicketSequence(key1)- Key:
{"_enum":["Main","NFT"]}(hasher: Twox64Concat) - Returns:
u32
Modifier: Default
XRPLBridge.DoorTicketSequenceParams
The Ticket sequence params of the XRPL door accounts for the current allocation
await api.query.xRPLBridge.doorTicketSequenceParams(key1)- Key:
{"_enum":["Main","NFT"]}(hasher: Twox64Concat) - Returns:
{"startSequence":"u32","bucketSize":"u32"}
Modifier: Default
XRPLBridge.DoorTicketSequenceParamsNext
The Ticket sequence params of the XRPL door accounts for the next allocation
await api.query.xRPLBridge.doorTicketSequenceParamsNext(key1)- Key:
{"_enum":["Main","NFT"]}(hasher: Twox64Concat) - Returns:
{"startSequence":"u32","bucketSize":"u32"}
Modifier: Default
XRPLBridge.TicketSequenceThresholdReachedEmitted
Keeps track whether the TicketSequenceThresholdReached event is emitted for XRPL door accounts
await api.query.xRPLBridge.ticketSequenceThresholdReachedEmitted(key1)- Key:
{"_enum":["Main","NFT"]}(hasher: Twox64Concat) - Returns:
bool
Modifier: Default
XRPLBridge.DoorTxFee
The flat fee for XRPL door txs
await api.query.xRPLBridge.doorTxFee(key1)- Key:
{"_enum":["Main","NFT"]}(hasher: Twox64Concat) - Returns:
u64
Modifier: Default
XRPLBridge.DoorAddress
The door address on XRPL
await api.query.xRPLBridge.doorAddress(key1)- Key:
{"_enum":["Main","NFT"]}(hasher: Twox64Concat) - Returns:
H160
Modifier: Optional
Constants
XRPLBridge.XrpAssetId
XRP Asset Id set at runtime
Type: u32
SCALE-encoded value: 0x02000000
XRPLBridge.NativeAssetId
ROOT AssetId set at runtime
Type: u32
SCALE-encoded value: 0x01000000
XRPLBridge.PalletId
This pallet's Id, used for deriving a sovereign account ID
Type: [u8;8]
SCALE-encoded value: 0x7872706c2d706567
XRPLBridge.ChallengePeriod
Challenge Period to wait for a challenge before processing the transaction
Type: u32
SCALE-encoded value: 0x96000000
XRPLBridge.MaxPrunedTransactionsPerBlock
Maximum number of transactions that can be pruned in on_idle
Type: u32
SCALE-encoded value: 0x88130000
XRPLBridge.MaxDelayedPaymentsPerBlock
Maximum number of delayed transactions that can be processed in a single block
Type: u32
SCALE-encoded value: 0xe8030000
XRPLBridge.DelayedPaymentBlockLimit
Upper limit to the number of blocks we can check per block for delayed payments
Type: u32
SCALE-encoded value: 0xe8030000
wss://root.rootnet.live/archive/ws · captured 2026-05-02