Liquidity Mining Contract Development: Audit & Gas Optimization

Launching liquidity mining often brings hidden risks, from precision loss in calculations to vulnerabilities against flash loan attacks. We develop staking and reward distribution smart contracts, covering all edge cases and optimizing gas. Our team delivers the project turnkey—from math audit to deployment and ongoing support, ensuring reliability and scalability of your protocol.

Blockchain Development Services

Frequently Asked Questions

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1335
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1293
  • B2B Advance company logo design
    B2B Advance company logo design
    738
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1031
  • AIDER company logo development
    AIDER company logo development
    978
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1087

Liquidity Mining Contract Development

When a protocol launches liquidity mining, the typical task is to distribute token rewards proportionally to the liquidity provided. At first glance, simple staking, but after deployment dozens of edge cases surface: flash loan attacks, inflation attack on an empty contract, precision loss from rounding. One client lost $50,000 due to precision loss in the first version — after that we rewrote the architecture, implementing a virtual initial balance and 1e18 scaling. Our team has solved these problems in 50+ projects, from small IDOs to multi-chain farms with TVL > $200M. We don't write a one-size-fits-all contract — each project requires customization for its specific tokenomics, reentrancy audit, and gas optimization. Contact us to develop reliable contracts — we'll prepare architecture and a cost estimate in one day.

How Reward Distribution Math Works

The base algorithm is MasterChef from Synthetix StakingRewards. The key idea: accumulated reward per unit of stake (rewardPerTokenStored).

uint256 public rewardPerTokenStored;

function rewardPerToken() public view returns (uint256) {
    if (totalSupply == 0) return rewardPerTokenStored;
    return rewardPerTokenStored + (
        (block.timestamp - lastUpdateTime) * rewardRate * 1e18 / totalSupply
    );
}

function earned(address account) public view returns (uint256) {
    return (balanceOf[account] * (rewardPerToken() - userRewardPerTokenPaid[account]) / 1e18) + rewards[account];
}

Updates only occur on stake/withdraw/getReward, not every block — O(1) regardless of participant count. The error from discrete blocks is mitigated by 1e18 scaling.

What About Boosted Rewards and Multi-Reward?

In models like Convex/Curve, effective stake depends on locked governance tokens (veTokens). The formula:

effective_balance = min(0.4 * balance + 0.6 * (totalSupply * veBal / veTotalSupply), balance) 

This reduces sell pressure on the reward token but requires careful testing at zero veBalance. For multi-reward, each token maintains its own rewardPerTokenStored. Reference: Synthetix StakingMultiRewards.

Parameter Masterchef Boosted rewards Multi-reward
Complexity Low Medium High
Gas cost 50-70k 70-90k 90-120k
Inflation attack resistance Yes (virtual balance) Yes Yes
Tokenomics flexibility Low High High
Precision loss risk Low Medium Medium

Protecting Against Liquidity Mining Vulnerabilities

  1. Inflation attack on first deposit. Introduce a virtual initial balance (VIRTUAL_TOTAL_SUPPLY = 1e18) that is never withdrawn, or require a minimum deposit.
  2. Flash loan attack. Set a minimum staking period (lockup) — 1-7 days. Alternative: reward vesting (linear release over N days). Even a 24-hour vesting makes the attack unprofitable.
  3. Griefing through staking updates. Make _updateReward O(1), avoid array iterations.
  4. Precision loss. Scale with 1e18, accumulate remainders.
Implementation details of boosted rewardsInternal logic: on stake/withdraw, recalculate the user's `effectiveBalance` based on their veToken weight. Store a mapping `effectiveBalances`. When updating `rewardPerToken`, use the sum of effective balances instead of raw totalSupply.

Gas Cost Comparison for Complex Schemes

Operation Basic farm Multi-reward Boosted
Stake 60k 90k 80k
Withdraw 55k 85k 75k
GetReward 50k 80k 70k

Our contracts are 20-30% cheaper than typical implementations due to compact storage layout and off-chain calculations. For example, saving 30k gas per operation can save up to $5,000 per month in fees on an active pool. Additional savings: using immutable variables reduces deployment cost by 15-20%.

How We Work

  1. Analysis (0.5 day). Determine: one or multiple reward tokens, need for boosting, minimum lockup, reward funding method (manual or automatic).
  2. Architecture design (0.5 day). Pattern selection, rewardRate calculation, event design for indexing.
  3. Development (2-3 days). Contract implementation with formant tests and fuzzing checks on arithmetic.
  4. Internal audit (1 day). Run Slither, Mythril, Echidna. Fix issues.
  5. Deployment (0.5 day). Deployer script, verification on Etherscan, transferOwnership to multisig.

What's Included in the Work

  • Full source code of contracts with comments and tests (Foundry/Hardhat).
  • Detailed gas optimization report with measurements.
  • Guide to subgraph integration (The Graph) for events.
  • Support for 30 days after deployment: parameter adjustments, redeployment if needed.
  • Coordination with external audit (on request).

Why Order Development from Us?

We have developed contracts for protocols with TVL up to $500M and conducted more than 20 internal audits. Our experience includes integration with Chainlink oracle, cross-chain bridges (LayerZero, Wormhole), and MEV protection. Projects we support pass external audits without critical issues. We conduct a liquidity contract audit for vulnerabilities. Get a consultation for your project right now — contact us to prepare architecture and a cost estimate.