Use Tempo Transactions
Tempo Transactions are a new EIP-2718 transaction type, exclusively available on Tempo.
If you're integrating with Tempo, we strongly recommend using Tempo Transactions, and not regular Ethereum transactions. Learn more about the benefits below, or follow the guide on issuance here.
Pay transaction fees with any USD-denominated TIP-20 token via automatic Fee AMM conversion.
Sponsor gas fees for users, enabling feeless transaction experiences in your application.
Batch multiple transactions together for higher throughput and simpler wallet management.
Delegate transaction signing capabilities to specific keys with customizable permissions.
Execute transactions in parallel using independent nonces for improved throughput.
Create nonces that automatically expire after a set time window.
Use two-dimensional nonces for flexible transaction ordering.
Schedule transactions to execute within a specific time window for automated payments.
Integration Guides
Integrating Tempo Transactions is easy and can be done quickly by a developer in multiple languages. See below for quick links to some of our guides.
| Language | Source | Integration Time |
|---|---|---|
| TypeScript | tempoxyz/tempo-ts | < 1 hour |
| Rust | tempo-alloy | < 1 hour |
| Golang | tempo-go | < 1 hour |
| Python | pytempo | < 1 hour |
| Other Languages | Reach out to us! The specification is here and easy to build against. | 1-3 days |
If you are an EVM smart contract developer, see the Tempo extension for Foundry.
Properties
Configurable Fee Tokens
A fee token is a permissionless TIP-20 token that can be used to pay fees on Tempo.
When a TIP-20 token is passed as the fee_token parameter in a transaction,
Tempo's Fee AMM automatically facilitates conversion between the
user's preferred fee token and the validator's preferred token.
Fee Sponsorship
Fee sponsorship enables a third party (the fee payer) to pay transaction fees on behalf of the transaction sender.
The process uses dual signature domains: the sender signs their transaction, and then the fee payer signs over the transaction with a special "fee payer envelope" to commit to paying fees for that specific sender.
Batch Calls
Batch calls enable multiple operations to be executed atomically within a single transaction.
Instead of sending separate transactions for each operation, you can bundle multiple calls together using the calls
parameter.
Access Keys
Access keys enable you to delegate signing authority from a primary account to a secondary key, such as device-bound non-extractable WebCrypto key. The primary account signs a key authorization that grants the access key permission to sign transactions on its behalf.
This authorization is then attached to the next transaction (that can be signed by either the primary or the access key), then all transactions thereafter can be signed by the access key.
Concurrent Transactions
Concurrent transactions enable higher throughput by allowing multiple transactions from the same account to be sent in parallel without waiting for sequential nonce confirmation.
By utilizing nonce keys, you can submit multiple transactions simultaneously that don't conflict with each other, enabling parallel execution and significantly improved transaction throughput for high-activity accounts.
Concurrent transactions can be achieved with nonce keys via:
In Viem and Wagmi, expiring nonces are handled automatically.
Expiring Nonces
TIP-1009 introduces expiring nonces: transactions automatically expire if not executed within a specified time window.
Benefits:
- No nonce tracking required
- Automatic replay protection via circular buffer
- No permanent state bloat from unused nonce keys
Expiring nonces can be used by setting nonceKey to maxUint256 and validBefore to a time in the future (within 30 seconds).
2D Nonces
For cases requiring ordered sequences within a key, Tempo's 2D nonce system enables parallel transaction execution:
- Protocol nonce (key 0): The default sequential nonce. Transactions must be processed in order.
- User nonces (keys 1+): Independent nonce sequences that allow concurrent transaction submission.
Scheduled Transactions
Scheduled transactions allow you to sign a transaction in advance and specify a time window for when it can be
executed onchain. By setting validAfter and validBefore timestamps, you define the earliest and latest times
the transaction can be included in a block.