Fee Sponsorship
Fee sponsorship enables gasless transactions where applications can subsidize user costs. Users can interact with the blockchain without holding fee tokens.
This specification describes how one account can pay transaction fees on behalf of another account using the Tempo Transaction type with the feePayerSignature field.
How It Works
The Tempo Transaction type includes an optional feePayerSignature field. When present, this signature authorizes a third party to pay the transaction's gas costs while the original sender executes the transaction logic.
Sender signs the transaction
The sender signs the transaction with their private key, signing over a blank fee token field. This means the sender delegates the choice of which fee token to use to the fee payer.
Fee payer selects and signs
The fee payer selects which fee token to use, then signs over the transaction.
Transaction submission
The fee token and fee payer signature is added to the transaction using the feePayerSignature field and is then submitted.
Transaction Fields
The TempoTransaction includes:
- Standard EIP-1559 fields (chainId, maxPriorityFeePerGas, maxFeePerGas, gasLimit)
- TempoTransaction-specific fields:
signature,nonceKey,nonce,calls(batch of calls to execute) - Optional
feeTokenfield to specify which stablecoin pays fees - Optional
feePayerSignaturefield when sponsored - Optional
validBeforeandvalidAfterfor scheduled transactions
Dual Signatures
Sender signs: The transaction they want to execute using their preferred signature scheme (secp256k1, P256, or WebAuthn) Fee payer signs: Authorization to pay fees for that specific transaction and sender
Each signature is recovered independently to determine the sender and fee payer addresses.
Validation
When feePayerSignature is present:
- Both sender and fee payer signatures must be valid
- Fee payer must have sufficient balance in the fee token
- Transaction is rejected if either signature fails or fee payer's balance is insufficient
When feePayerSignature is absent:
- Sender pays their own fees (standard behavior)
Execution
- Recover both sender and fee payer addresses from their signatures
- Charge gas fees to the fee payer's balance
- Execute transaction with sender as the transaction origin
- Refund unused gas to the fee payer
Security
- Fee payer signature commits to both the transaction details and specific sender
- Prevents signature reuse or unauthorized fee charging
- Replay protection via chain ID and 2D nonce system (nonceKey + nonce)
- Fee payers cannot be drained beyond the transaction's gas limit
- Support for multiple signature schemes (secp256k1, P256, WebAuthn) with automatic detection based on signature length