arrow-left

All pages
gitbookPowered by GitBook
1 of 4

Loading...

Loading...

Loading...

Loading...

Fee Monetization

circle-check

Apply to Fee Monetization.

Fee Monetizationarrow-up-right (FeeM) on Sonic lets builders earn 90% of the network fees their apps generate — creating a sustainable revenue stream without relying on fundraising. Inspired by Web2 models like YouTube, FeeM rewards developers for the traffic they drive.

FeeM also challenges the extractive "app chain" model by allowing builders to earn 90% of their app's network fees without the need to launch a separate chain. This approach removes the high costs, infrastructure overhead, and interoperability challenges typically associated with app chains.

By integrating monetization directly into the network layer, FeeM simplifies revenue capture and supports scalable, efficient app development within a unified, developer-friendly ecosystem.

hashtag
Flow of Fees

1

hashtag
Transaction Submitted

A user initiates a transaction on an app and pays a gas fee in S tokens.

2

hashtag
Double-Spend Dilemma

In Fee Monetization, double counting is prevented by accurately tracking gas consumption within the virtual machine. The system traces all internal calls in a transaction and splits the reward based on the gas each sub-operation consumes.

This ensures that the sum of rewards across different projects never exceeds the total transaction fee. An example is given below.

  • A trade consumes 100,000 units of gas with a total FeeM reward of 0.017 S.

  • Inside this transaction, there are operations related to two projects: Project A and Project B.

  • Project A, the DEX aggregator, is responsible for consuming 37,000 units of gas, while Project B, the liquidity pool on the DEX with which the aggregator interacts, uses 63,000 units of gas.

The chart below illustrates how the FeeM oracle infrastructure traces each sub-operation and distributes the transaction fee spent on the calls based on gas consumed.

hashtag
Frequently Asked Questions

chevron-rightMy app uses an upgradeable (proxy) contract. Should I register the implementation too?hashtag

Typically, you only need to register the proxy. Gas consumed by the implementation via delegate-call will be attributed to the proxy address.

chevron-rightWhat if my app deploys many user-specific contracts?hashtag

If those user contracts act as proxies calling a small set of implementations, you only need to register the main implementation proxies. You’ll receive rewards for all the gas consumed within them.

chevron-rightHow do I claim my rewards?hashtag

You initiate a claim transaction on the FeeM contract. The oracles confirm your gas usage, and after enough confirmations, your share is transferred to your rewards recipient. You may want to check the for a user-friendly claim UX.

chevron-rightWhat if I don’t claim my rewards immediately?hashtag

There is no deadline. Unclaimed rewards stay in the FeeM contract until the rightful project claims them.

chevron-rightWhy do my rewards stay the same over a longer time period?hashtag

FeeM processes rewards similarly to the staking rewards via the SFC contract. The accumulated rewards are updated after the active epoch is sealed and confirmed.

circle-info

Questions? Join on Telegram.

hashtag
Validator Allocation

Sonic automatically allocates 10% of this fee to the network validators.

3

hashtag
FeeM Allocation

The remaining 90% is sent to the specialized Fee Monetization (FeeM) contract (sometimes referred to as the fee treasury).

4

hashtag
Off-Chain Oracle Tracking

Multiple off-chain servers (oracles) monitor every transaction on-chain, tracing gas consumption for each registered contract (including sub-calls).

5

hashtag
Rewards Distribution

When an app claims rewards, the FeeM oracles confirm the gas usage on-chain. Once a quorum of oracles confirms, the FeeM contract releases the app’s accumulated rewards.

The total reward is split based on the gas consumption:
  • Project A receives 37% of the reward (0.00629 S).

  • Project B receives 63% of the reward (0.01071 S).

  • The total reward still adds up to 100% of the 0.017 S FeeM reward, ensuring no over-distribution.

  • Fee Monetization dashboardarrow-up-right
    Sonic Buildersarrow-up-right

    Dispute

    If a contract is already registered under a different app in Fee Monetization, your registration attempt will fail with ContractAlreadyRegistered(contract, projectID).

    If you believe the contract rightfully belongs to you, file a dispute using the steps below.

    1. Visit the Fee Monetization dashboardarrow-up-right and connect your admin wallet

    2. Click My FeeM in the menu and then Create Dispute

    3. Enter your dispute contact email address and the contracts you wish to dispute

    4. Click Submit and pay the 50 S fee, which will be refunded if the dispute is accepted

    Once submitted, we will process your dispute as quickly as possible and notify you via email. If resolved in your favor, the dispute fee is refunded and the disputed contracts are moved to your app.

    circle-info

    To manually dispute a contract, use the to open a dispute. Attach a refundable dispute fee and call openDispute() providing all the details required to resolve the issue. If resolved in your favor, the dispute fee is refunded back to you and the disputed contracts are moved to your app.

    Apply

    All apps on Sonic are eligible to participate in Fee Monetization. To apply, visit the and click Apply for FeeM.

    The application process consists of registering your app to participate in FeeM, followed by registering your app's associated contracts to verify ownership.

    hashtag
    Step 1 — App Registration

    Visit the , connect your admin wallet, and click Apply for FeeM. The registration form will request several details from you.

    FeeM Vault

    The FeeM Vault is a multisig operated by Sonic Labs. It accumulates 90% of transaction fees generated by core token contracts on Sonic:

    • wS

    • USDC

    • USDT

    DisputeResolverarrow-up-right
  • Owner address Wallet that will manage your FeeM registration.

  • Rewards recipient address Address that will receive FeeM revenue when claimed.

  • Dispute contact Email to be used for communication if you dispute a contract.

  • Metadata Information about your app, such as logo, name, and website.

  • After completing this step, the UI will guide you through registering your app's associated contracts to verify ownership.

    circle-info

    The 25 S registration fee will be refunded once your app has been added to FeeM.

    hashtag
    Step 2 — Contract Registration

    To verify ownership of the contracts you want to include in your FeeM application, you’ll need to add a small code snippet to them.

    1. Choose the Auto-verify option

    2. Copy and paste the code snippet into your contract

    3. Deploy your contract and run the new registerMe function

    Your contracts are now verified and included in FeeM, and you can proceed to the next step.

    If your contract is not upgradable or you're unable to interact with them from an EOA or through other means, please choose the Manual verification option and follow the steps.

    hashtag
    Step 3 — Claim Revenue

    Once your app is approved to FeeM, you will start earning 90% of the network fees it generates.

    To claim, visit the Fee Monetization dashboardarrow-up-right, connect with your admin wallet, and claim your rewards. These will be sent to the recipient address you provided during the initial application step.

    circle-info

    For assistance, join Sonic Buildersarrow-up-right on Telegram.


    hashtag
    Manual Registration

    If you prefer to register your app and its contracts manually instead of using the UI described above, follow the instructions below. However, we recommend using the Fee Monetization dashboardarrow-up-right to register.

    1. Create a metadata config file in JSON format with the following parameters:

    1. Host the file in a publicly accessible location. Ensure that anyone can download the JSON file via a browser and that the hosting site supports HTTPS. A 200×200px PNG logo, no larger than 32 KiB, is sufficient.

    2. Go to the FeeM ProjectsRegistrararrow-up-right smart contract and execute the register function providing all the required information. A unique Project ID will be assigned to your registration in response. Use this ID to identify your project in subsequent calls.

    3. Include the code snippet below directly in your contract and run the new function. Replace the <Your FeeM Project ID> placeholder with your actual FeeM Project ID.

    Your app and its contracts are now integrated into FeeM. Proceed to Step 3 above to learn how to claim your rewards.

    If your contract is not upgradable or you're unable to interact with them from an EOA or through other means, please contact Sam Harcourtarrow-up-right on Telegram for manual contract verification.


    hashtag
    Contracts to Interact With

    • The FeeM Core: 0x0b5f073135df3f5671710f08b08c0c9258aecc35

    • Projects Registrar: 0x897d37f040Ec8DEFFD0ae1De743e1b1a14cf221f

    • Projects' Contracts Registrar: 0xDC2B0D2Dd2b7759D97D50db4eabDC36973110830

    • Dispute Resolver: 0xF2169D8A17aA40cc31e1b43E4FbB2d19CA099310


    hashtag
    Frequently Asked Questions

    chevron-rightMy app uses an upgradeable (proxy) contract. Should I register the implementation too?hashtag

    Typically, you only need to register the proxy. Gas consumed by the implementation via delegate-call will be attributed to the proxy address.

    chevron-rightWhat if my app deploys many user-specific contracts?hashtag

    If those user contracts act as proxies calling a small set of implementations, you only need to register the main implementation proxies. You’ll receive rewards for all the gas consumed within them.

    chevron-rightHow do I claim my rewards?hashtag

    You initiate a claim transaction on the FeeM contract. The oracles confirm your gas usage, and after enough confirmations, your share is transferred to your rewards recipient. You may want to check the Fee Monetization dashboardarrow-up-right for a user-friendly claim UX.

    chevron-rightWhat if I don’t claim my rewards immediately?hashtag

    There is no deadline. Unclaimed rewards stay in the FeeM contract until the rightful project claims them.

    chevron-rightWhy do my rewards stay the same over a longer time period?hashtag

    FeeM processes rewards similarly to the staking rewards via the SFC contract. The accumulated rewards are updated after the active epoch is sealed and confirmed.

    FeeM dashboardarrow-up-right
    Fee Monetization dashboardarrow-up-right

    EURC

  • WETH

  • WBTC

  • Funds in the FeeM Vault will be strategically deployed to strengthen the Sonic ecosystem, provide targeted support where apps need it most, and enhance asset incentives.

    The tokens that generate the revenue for the FeeM Vault will also shape how it is spent. Apps that integrate and optimize for the tokens above will be first in line to benefit.

    Key areas of deployment include:

    circle-info

    More information about the distribution of funds from the FeeM Vault will be available soon.

    hashtag
    FeeM Vault Flywheel

    The FeeM Vault is designed to compound growth across Sonic apps. As activity around key tokens increases, the Vault fills, and a self-reinforcing flywheel begins to spin:

    1. More usage of key tokens increases the transaction fees redirected to the FeeM Vault.

    2. More revenue in the FeeM Vault means more funding available for apps on Sonic.

    3. More funding for apps leads to more integrations and incentives involving key tokens, attracting more users.

    4. More users drive more activity and usage of those same tokens.

    5. And the cycle continues.

    {
      "name": "MySuperCoolProject",
      "image_url": "https://mysupercoolproject.com/icons/icon.png",
      "website": "https://mysupercoolproject.com/"
    }
    /// @dev Register my contract on Sonic FeeM
    function registerMe() external {
            (bool _success,) = address(0xDC2B0D2Dd2b7759D97D50db4eabDC36973110830).call(
                abi.encodeWithSignature("selfRegister(uint256)", <Your FeeM Project ID>)
            );
            require(_success, "FeeM registration failed");
    }

    Liquidity Incentives Directing FeeM Vault revenue toward strategic pools to deepen liquidity and reduce borrowing costs.

    Protocol Integrations Funding integrations of core assets like USDC.e, WETH, and wS into apps.