Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.stablenet.network/llms.txt

Use this file to discover all available pages before exploring further.

Fee delegation lets your application pay gas on behalf of users. Users interact with your dApp without holding any WKRC.

The two roles

A fee-delegated transaction (type 0x16) has two independent signers:
RoleSignsPays
Sender (From)Transaction intent (v, r, s)Transfer value only
Fee Payer (FeePayer)Gas consent (fv, fr, fs)gasLimit × gasPrice
Both signatures are required before the transaction can be submitted. Neither party can act unilaterally — the sender cannot assign fees without the fee payer’s signature, and the fee payer cannot change the transaction contents.

What stays the same

tx.origin is always the sender. Contracts that check msg.sender or tx.origin behave identically to standard transactions — no contract code changes are required. Unused gas is refunded to the fee payer, not the sender.

Why this matters

On standard EVM chains, every user must hold the native gas token. Fee delegation removes this requirement:
  • Gasless onboarding — new users interact with your app before they hold any WKRC
  • Subsidized actions — your backend sponsors gas for specific flows (first mint, daily claim, etc.)
  • Batch relayer — one fee payer account handles gas for many users

How it works (high level)

  1. The sender builds the transaction with the feePayer field set
  2. The sender signs → produces v, r, s
  3. The fee payer reviews the transaction and signs → produces fv, fr, fs
  4. The fully signed transaction is submitted via eth_sendRawTransaction
The node validates both signatures before accepting it into the mempool. If either is missing or invalid, the transaction is rejected.

Developer benefits

  • No changes to existing contract logic
  • Flexible — fee payer can be a backend wallet, a smart contract, or any address
  • Balance isolation — fee payer funds can only cover gas, not the transfer value