Skip to content
LogoLogo

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.

Network validation

The network validates both signatures and executes the transaction.

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 feeToken field to specify which stablecoin pays fees
  • Optional feePayerSignature field when sponsored
  • Optional validBefore and validAfter for 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:

  1. Both sender and fee payer signatures must be valid
  2. Fee payer must have sufficient balance in the fee token
  3. 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

  1. Recover both sender and fee payer addresses from their signatures
  2. Charge gas fees to the fee payer's balance
  3. Execute transaction with sender as the transaction origin
  4. 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