Penalty Structure

To encourage timely claims, unclaimed airdrops are subject to penalties starting from the 8th day after the airdrop has been initiated. The penalty is applied at a rate of 2% per day with a maximum of 100% (after day 57):

if (elapsedDays < 7) {
    penaltyRate = 0;
} else if (elapsedDays >= 7) {
    penaltyRate = elapsedDays > 57 ? 100 : (elapsedDays - 7) * 2;
}

Important: After 57 days from airdrop start (50 days of penalties), any remaining unclaimed tokens are considered fully forfeited.

Penalty Distribution

The 2% daily penalty is actually applied as two 1% operations

First Aidrop (Week 1):

// 1% penalty rate but applied twice
uint256 tmptaxedWNM = airdrop.unclaimedWNM / 100;
uint256 tmptaxedWBLK = airdrop.unclaimedWBLK / 100;
uint256 tmptaxedWUNI = airdrop.unclaimedWUNI / 100;

if (weekId == 1 && (tmptaxedWNM > 0 || tmptaxedWBLK > 0 || tmptaxedWUNI > 0)) {
    // 60% of the 1% penalty is burned
    tWNM.mint(deadWallet, tmptaxedWNM * 6 / 10);
    tWBLK.mint(deadWallet, tmptaxedWBLK * 6 / 10);
    tWUNI.mint(deadWallet, tmptaxedWUNI * 6 / 10);
    
    // 40% of the 1% penalty goes to stakers
    wnmContract.assignExternalStakingRewards(tmptaxedWNM * 4 / 10, tmptaxedWBLK * 4 / 10, tmptaxedWUNI * 4 / 10);
}

// The other 1% goes to liquidity pools
liquidityWNM += tmptaxedWNM;
liquidityWBLK += tmptaxedWBLK;
liquidityWUNI += tmptaxedWUNI;
First-week penalty flow (2 % total)
• 1 % of unclaimed tokens: 60 % burned, 40 % to stakers
• 1 % of unclaimed tokens: 100 % routed to the liquidity programme
Net effect: 50 % liquidity, 30 % burn, 20 % stakers.

This fee structure applies only to the first airdrop and incentivizes liquidity provision and staking while reducing the total supply by burning part of the unclaimed tokens.

Subsequent Airdrops (Week 2+):

else if (tmptaxedWNM > 0 || tmptaxedWBLK > 0 || tmptaxedWUNI > 0) {
    // First 1% goes to stakers
    wnmContract.assignExternalStakingRewards(tmptaxedWNM, tmptaxedWBLK, tmptaxedWUNI);
}

// Second 1% goes to liquidity pools
liquidityWNM += tmptaxedWNM;
liquidityWBLK += tmptaxedWBLK;
liquidityWUNI += tmptaxedWUNI;
For all airdrops after the first one, the penalty structure is as follows:
    50% of the penalties are allocated to the liquidity program.
    50% of the penalties are distributed to stakers.

The system will automatically apply penalties to unclaimed airdrops:

function updateDailyPenalty() external {
    uint256 _currentDay = wnmContract.getCurrentDay();
    if (_currentDay <= lastProcessedDay) return;

    uint256 startWeek = currentWeek > 8 ? currentWeek - 7 : 1;
    for (uint256 weekId = startWeek; weekId <= currentWeek; weekId++) {
        _applyDailyPenalty(weekId);
    }
    lastProcessedDay = _currentDay;
}

Penalty Calculation

This penalty is applied when users claim their airdrop

function calculateMintAfterPenalty(uint256 amount, uint256 rate) internal pure returns (uint256) {
    uint256 base = amount * 1e18;  // Scale up for precision
    uint256 penalty = base * rate / 100;
    return base - penalty;
}

This fee structure ensures that unclaimed airdrops continue to support the liquidity program and staking rewards, maintaining the ecosystem’s growth.

Last updated