Skip to main content
This guide uses an EIP-1559 transaction with Viem because it is the recommended transaction type. The API also supports signed legacy and EIP-2930 transactions.
base_sendRawTransactionValidity is available on Base Mainnet and Base Sepolia through the sequencer endpoints listed in Connect to Base, and on Vibenet.

1. Create Predicates

Use balance, nonce, or storage to wait for account or contract state. Use block_number to bound the blocks in which the transaction can be included. Every predicate must match.
Predicate setup
Omit mask to compare the full storage word. The block_number value 0x11a6a1 is a placeholder. Set it to the latest block number plus 10 right before you sign, so the bound falls within the 60-second expiry window. Do not include a flashblock_index predicate. Base no longer supports it and rejects a transaction that includes one with the error flashblock_index predicates are not supported after Denim: blocks are built every 200ms without flashblocks.

2. Sign an EIP-1559 Transaction

Use the sender’s next nonce. The signed payload becomes the first RPC parameter.
Sign transaction

3. Submit the Transaction

Pass the signed transaction and validity as separate parameters.
Submit transaction

4. Check Inclusion

The RPC returns a transaction hash. Use eth_getTransactionReceipt to check for an onchain receipt. For field definitions, see Validity Transaction RPC.