Transaction Relaying
The relay action enables co-signed transaction execution, where the XOXNO relayer adds its signature to transactions before broadcasting. This supports gasless transactions and meta-transaction patterns using MultiversX Relayer V3 format.
Overview
Transaction relaying allows:
Gasless transactions - Users sign, relayer pays gas
Meta-transactions - Execute on behalf of users
Relayer V3 format - Native MultiversX relayer support
Relayer Addresses
Critical: You must use the correct relayer address based on the sender's shard. Each shard has a dedicated relayer wallet.
0
erd1l0x0n5yxsfcy93gm0vyvx9m9f7cte9h9vuq4am33ugpw3d5r3hvqx6f59h
1
erd12yxd5phejzw83gn8qh6jfz6q9a0ekyyhkfd3c49r03mxw25l3a5swq3nf7
2
erd13jxp0yjh7gjvzgrg5mj7e8rzhn5lzcye45l0p6e5996d543r7vrq9e50za
How It Works
Determine sender shard - Calculate which shard the sender address belongs to
Select relayer address - Use the relayer address for that shard
Build transaction with
relayerfield - Include the relayer address in the transactionUser signs transaction - User signs the complete transaction (including relayer field)
Send to relayer - Submit via WebSocket relay action
Relayer adds signature - Backend appends
relayerSignatureBroadcast - Transaction sent to P2P network
Shard Calculation
The sender's shard is determined by the last byte of their address:
Relay Request
The relayer field is mandatory - you must include the correct relayer address:
Transaction Fields
nonce
number
Yes
Sender's transaction counter
value
string
Yes
EGLD value in atomic units
receiver
string
Yes
Receiver's bech32 address
sender
string
Yes
Sender's bech32 address
gasPrice
number
Yes
Gas price in atomic units
gasLimit
number
Yes
Maximum gas units
data
string
No
Transaction data payload
chainID
string
Yes
Chain identifier
version
number
Yes
Transaction version
signature
string
Yes
User's signature (hex)
relayer
string
Yes
Relayer address for sender's shard
Batch Relay
Response
Success
Partial Success
Complete Integration Example
Transaction Signing Flow
The user must sign the complete transaction including the relayer field:
Error Handling
Common Errors
invalid relayer address
Wrong relayer for sender's shard
Use correct relayer from table above
relayer field missing
Transaction missing relayer
Include relayer in transaction
invalid user signature
User didn't sign with relayer field
Re-sign including relayer
nonce too low
Transaction already processed
Get fresh nonce
Relay vs Broadcast
relayer field
Required
Not needed
User signs
With relayer field
Without relayer field
Backend adds
relayerSignature
Nothing
Gas payer
Relayer
User
Use case
Gasless, meta-tx
Standard tx
Rate Limits
Relay requests per second
100
Max batch size
100 transactions
Pending relays per sender
10
Always verify you're using the correct relayer address for the sender's shard. Using the wrong relayer will cause the transaction to fail.
Last updated
Was this helpful?