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 (type0x16) has two independent signers:
| Role | Signs | Pays |
|---|---|---|
Sender (From) | Transaction intent (v, r, s) | Transfer value only |
Fee Payer (FeePayer) | Gas consent (fv, fr, fs) | gasLimit × gasPrice |
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)
- The sender builds the transaction with the
feePayerfield set - The sender signs → produces
v,r,s - The fee payer reviews the transaction and signs → produces
fv,fr,fs - The fully signed transaction is submitted via
eth_sendRawTransaction
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
Related
- Fee Delegation Use Case — full implementation with ethers.js code
- Fee Delegation Tutorial — step-by-step build guide
- Transaction Types — type 0x16 field reference

