Skip to main content

3) Launch staking for your NFTs in a few minutes

After finishing 1) Launch your NFT collection sales, successfully, you can provide your collectors a way to stake their NFTs and receive rewards.

There are various reasons to reward your NFT holders with tokens, including:

  • Incentivize collectors to hold their NFTs longer as they receive rewards.
  • Incentivize collectors to not list their NFTs on a marketplace as a signal of their long-term support.
  • Share gaming tokens monthly to your collectors.
  • Share revenue with your NFT owners who funded your album, game, or startup.

What to expect after this tutorial?

  • To create a (staking) rewards pool for your already existing NFT collection.
  • Provide a public link to your collectors where they can claim their rewards.
  • Optionally customize the claiming interface within your own dApp and site.


Step 1. Create or use a token for the rewards

If you already have an ERC20 token, you need to copy the contract address of this token, and go to the next step.

To create a new ERC token for the rewards (e.g. a credit token, before launching your actual ERC20 tokens), go to Flair's dashboard "Tokens" panel, and create and deploy a new token in 2 minutes.


Make sure to grab the ERC20 token address which look something like 0x2d9C9870a002284e04409D7Cba8975B1614E6a3a.

Step 2. Create a new staking stream

Go to "Streams" panel on the dashboard to create and deploy your new staking stream contract.

For that you need to have your ERC721 NFT collection address, and ERC20 token address handy.


What are the values in the creation form?

  • Ticket Token: the ERC721 token of your NFT collection.
  • Claim Token: the ERC20 token you want to reward your collectors.
  • Emission Rate: how many tokens you want to reward to all NFT holders on each epoch.
  • Emission Time Unit: the epoch or unit of time that each NFT is rewarded on.

Simple example if emission time unit is 24 hours, and your NFT supply is 1000, and emission rate is 1000, it means every 24 hours 1 token will be released to each NFT holder. So if I hold 1 NFT, after 1 day, I will be able to claim 1 token.

Another example if emission time unit is 24 hours, and your NFT supply is 8000, and emission rate is 16000, it means every 24 hours 2 tokens will be released to each NFT holder. So if I hold 2 NFTs, after 3 days, I will be able to claim 12 tokens.

Step 3. Top-up your stream with reward tokens

For your collectors to be able to receive rewards, you need to top-up your staking stream with the ERC20 tokens you've configured above.

There are 2 ways to do that:

  • By simply transferring the amount of tokens to the streaming contract.
  • By minting new tokens directly to the streaming contract.


How to calculate the amount of tokens to top-up?

Depending on total duration of your staking pool, Emission Rate you've configured (which is updatable) and the total circulating supply of your NFTs you can calculate the total amount.

For example when:

  • You have 8000 NFTs in your collection, and all are owned by your holders.
  • The emission rate is 16000
  • The emission time unit is 24 hours (1 day)
  • End of your staking pool is in 30 days

Then you can top-up your staking pool with: 16000 x 1 x 30 = 480,000 tokens.


You can top-up with lower amount of tokens, but make sure before the stream is drained to top-up with enough tokens.


If your staking pool doesn't have a duration it means you must top-up your stream with a large number of tokens so that it always has enoguh supply to reward the NFT holders.

Step 4. Share the claiming page with your collectors

Now you are ready to share a ready-mady claiming page with your collectors, or embed it as an iframe within your website.


Optionally you can use the React example community-airdrop-reward-stream repo to fully customize the widget.

🎉 Launch

Your NFT collectors can stake and claim their reawrds: