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
-
Inflation attack on first deposit. Introduce a virtual initial balance (
VIRTUAL_TOTAL_SUPPLY = 1e18) that is never withdrawn, or require a minimum deposit. - 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.
-
Griefing through staking updates. Make
_updateRewardO(1), avoid array iterations. - Precision loss. Scale with 1e18, accumulate remainders.
Implementation details of boosted rewards
Internal 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
- Analysis (0.5 day). Determine: one or multiple reward tokens, need for boosting, minimum lockup, reward funding method (manual or automatic).
- Architecture design (0.5 day). Pattern selection, rewardRate calculation, event design for indexing.
- Development (2-3 days). Contract implementation with formant tests and fuzzing checks on arithmetic.
- Internal audit (1 day). Run Slither, Mythril, Echidna. Fix issues.
- 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.







