Apply

All apps on Sonic are eligible to participate in Fee Monetization. To apply, visit the FeeM dashboard 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.

Step 1 — App Registration

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

  • 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.

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

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.

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 dashboard, connect with your admin wallet, and claim your rewards. These will be sent to the recipient address you provided during the initial application step.

For assistance, join Sonic Builders on Telegram.


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 dashboard to register.

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

{
  "name": "MySuperCoolProject",
  "image_url": "https://mysupercoolproject.com/icons/icon.png",
  "website": "https://mysupercoolproject.com/"
}
  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 ProjectsRegistrar 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.

/// @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");
}

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 Harcourt on Telegram for manual contract verification.


Contracts to Interact With

  • The FeeM Core: 0x0b5f073135df3f5671710f08b08c0c9258aecc35

  • Projects Registrar: 0x897d37f040Ec8DEFFD0ae1De743e1b1a14cf221f

  • Projects' Contracts Registrar: 0xDC2B0D2Dd2b7759D97D50db4eabDC36973110830

  • Dispute Resolver: 0xF2169D8A17aA40cc31e1b43E4FbB2d19CA099310


Frequently Asked Questions

My app uses an upgradeable (proxy) contract. Should I register the implementation too?

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

What if my app deploys many user-specific contracts?

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.

How do I claim my rewards?

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 dashboard for a user-friendly claim UX.

What if I don’t claim my rewards immediately?

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

Why do my rewards stay the same over a longer time period?

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.

Last updated