Transaction Mining Rewards V2

This an updated version of [WIP] Liquidity mining rewards. The motivation and direction are the same but the implementation details are a bit different.

We expect to launch this in the next few days assuming no major issues


In no particular order, the following are some of the items we wanted to focus on with this proposal

  • Reward early traders with PERP rewards
  • Attract more traders to Perpetual Protocol and boost our trading volume.
  • Distribute PERP to continue our route to decentralisation
  • Create a positive feedback loop for traders and stakers - the liquidity mining should increase trading volume which in turn leads to more trading fees which flow into the insurance fund as well as higher yields for stakers. This in turn then drives the demand of PERP as there is greater visibility and then starts the loop again as new traders discover the protocol
  • Prevent wash trading
  • Reward traders who keep their positions open for longer


The following is a high-level proposal of how we are looking to structure the initial program

  • Provide liquidity mining rebates for trading fees
  • The Liquidity Mining program will run for 2 weeks as a test program
  • The weekly rewards will be capped at 150K of PERP in the trial period
  • Taker fee rebates are given out to traders
  • 6-month lockup and all rewards paid in PERP (is used to mitigate wash trading so a trader can’t simply just trade at a loss for as many fees as possible as if the price of PERP goes down during the lockup period they make a loss)

Reward Calculation Time

  • Every Monday at 06:00 UTC

Off-Chain Process

The following are the details

  1. For all the traders who traded last week (From Monday 0:00 UTC to Sunday 23:59:59 UTC), we calculate the trading activities for each trader by:

    TradingActivity = Sum of individual Trades

    Where a trade is defined as either:

    // 1. Where position duration is > 30 minutes
    Trade = position size * position duration
    // 2. Where the case where position duration < 30 minutes then 
    Trade = (position size * position duration) / 3
    // Where position size is the actual change that occurs in USD 
    // (e.g. if a position is already open and is reduced by 50K, then the position size is 50K)
    // Position duration is in seconds
  2. The team will aggregate the TradingActivities from all traders and calculate the weight of each trader:

    Weight = TradingActivity / Sum of all the TradingActivities
  3. Once we have weights for all the traders, we then distribute the weekly rewards to trades by weight:

    PerpRewardCap = Sum of all trading fees by trader in this week
    (Fees are converted to PERP by TWAP of last day from CoinGecko)
    PerpRewardByTrader = PERP rewards weekly * Weight
    // Note that if PerRewardByTrader > PerRewardCap then
    PerRewardByTrader = PerRewardCap
  4. Reward vesting schedule:

    • Tokens immediately claimable: PerpRewardByTrader * 55%
    • Tokens to be unlocked in 6 months time: PerpRewardByTrader * 55%
  5. The result will be uploaded to IPFS for everyone who wants to verify it.

  6. Traders will be able to claim their rewards on a site similar to the Balancer one (see


Untitled Diagram (1)

  1. Alice opened a 2x long position using 25K USDC
  2. Alice closed half of her long position
  3. Alice closed her long position and opened a new 1x short position using 25K USDC
  4. Alice closed her short position

At the end of this period, Alice’s TradingActivity is:

TradingActivity = (50K * 20 * 1/3) + (25K * 30) + (25K * 30) = 1.83M

Alice’s trading fees paid during this period is:

(50K * 0.1%) + (25K * 0.1%) + (50K * 0.1%) + (25K * 0.1%) = 150 USDC 
= 30 PERP (Suppose 1 PERP = 5 USDC)

Suppose that the overall total TradingActivities are 1.83B, Alice’s PERP reward is:

// Weekly amount * weight
PerpReward = 150K * (1.83M / 1.83B) = 150 PERP

But because Alice’s trading fees paid during this period is 30 PERP, the reward will be capped by the trading fees. In the end, the PERP reward she will get is:

Right away: 30 PERP * 55% = 16.5 PERP
6 months later: 30 PERP * 55% = 16.5 PERP


  • What happens when someone opens a long and short position at the same time?

    Opening long and short positions at the same time is more like buying PERP futures that expired in 6 months.

  • Will I still receive rewards when I opened a position two weeks ago and don’t make any trade last week?

    You will receive 0 transaction mining rewards if you don’t make any trades last week. It sounds a little strange but it’s to prevent wash trading.


Capping based on trading fees paid is definitely a good idea, won’t overspend in that case and it encourages traders to trade more and go LONG PERP in a way.

About the vesting, I feel we can release all at once without a vesting schedule, but instead PERP claimed goes directly to staking. So, if the trader wants to sell it, he/she needs to explicitly unstake and wait for the staking 7-days epoch to be over. It will change the mentality of these traders imo.

In the meantime, as staking is not live yet, the PERP that traders earn will be locked till staking goes live.

1 Like

great proposal. The only thing I don’t get here is how rewards will be calculated if I opened 25k position and 20 minutes after I increased it to 75k and closed the entire position 10 minutes later. In this case, my initial 25k position was active for more than 30 min, but another part of 50k was active only for 10 min. What will be the formula for rewards?

1 Like

It’s quite like the example we have above. The initial 25k will not be counted as > 30mins. It will get pretty complicated if we want to trace everything based on the cost basis. It’s just a quick proposal and we will iterate on it after.

1 Like

While I really appreciate the team effort to engage more traders to perp by proposing this, it appears to me that traders, unfortunately, care more about the reliability of the system so that they can trade confidently during peak hours.

So, making the app blazing fast, mobile friendly and reliable, traders will surely come with or without rebates.

I also would like to take this opportunity to thank the team for the great app.

They are not mutually exclusive, the team can do both at the same time. They shouldn’t stop trying to grow while trying to improve the UX. And I’m pretty sure they’re trying to do that like dedicated xdai endpoints among other things.