Розробка контрактів ліквідного майнінгу
Відзначимо: коли протокол запускає liquidity mining, типова задача — розподіляти винагороду в токенах пропорційно вкладеній ліквідності. На перший погляд, простий стейкінг, але після впровадження спливають десятки edge cases: flash loan атаки, inflation attack на порожньому контракті, втрата точності при округленні. Один наш клієнт втратив $50 000 через precision loss у першій версії — після цього ми переписали архітектуру, впровадивши віртуальний початковий баланс і масштабування 1e18. Наша команда вирішила ці проблеми в 50+ проектах, від невеликих IDO до мультичейн-ферм з TVL > $200M. Ми не пишемо універсальний контракт — кожен проект потребує налаштування під конкретну токеноміку, аудит на reentrancy та газ-оптимізацію. Звертайтеся до нас для розробки надійних контрактів — підготуємо архітектуру та кошторис за один день.
Як влаштована математика розподілу винагород?
Базовий алгоритм — MasterChef із Synthetix StakingRewards. Ключова ідея: накопичена винагорода на одиницю стейку (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]; } Оновлення відбувається лише при stake/withdraw/getReward, а не в кожному блоці — O(1) при будь-якій кількості учасників. Похибка від дискретних блоків усувається масштабуванням через 1e18.
Що робити з boosted rewards та multi-reward?
У моделях типу Convex/Curve ефективний стейк залежить від заблокованих governance-токенів (veTokens). Формула:
effective_balance = min(0.4 * balance + 0.6 * (totalSupply * veBal / veTotalSupply), balance) Це знижує sell pressure на reward-токен, але потребує ретельного тестування при нульовому veBalance. Для multi-reward кожен токен веде власний rewardPerTokenStored. Референс — Synthetix StakingMultiRewards.
| Параметр | Masterchef | Boosted rewards | Multi-reward |
|---|---|---|---|
| Складність | Низька | Середня | Висока |
| Вартість газу | 50-70k | 70-90k | 90-120k |
| Стійкість до inflation attack | Так (вірт. баланс) | Так | Так |
| Гнучкість токеноміки | Низька | Висока | Висока |
| Ризики precision loss | Низькі | Середні | Середні |
Захист від вразливостей ліквідного майнінгу
-
Inflation attack при першому депозиті. Вводимо віртуальний початковий баланс (
VIRTUAL_TOTAL_SUPPLY = 1e18), який ніколи не знімається, або вимагаємо мінімальний депозит. - Flash loan атака. Встановлюємо мінімальний період стейку (lockup) — 1-7 днів. Альтернатива: vesting винагород (лінійне вивільнення за N днів). Навіть 24-годинний vesting робить атаку нерентабельною.
-
Griefing через оновлення staking. Робимо
_updateRewardO(1), уникаємо ітерацій по масивах. - Precision loss. Масштабування через 1e18, накопичення remainder'ів.
Деталі реалізації boosted rewards
Внутрішня логіка: при stake/withdraw перераховуємо `effectiveBalance` користувача на основі його ваги в veToken. Зберігаємо відображення `effectiveBalances`. При оновленні `rewardPerToken` використовуємо суму effective-балансів замість raw totalSupply.Порівняння газових витрат на складні схеми
| Операція | Базова ферма | Multi-reward | Boosted |
|---|---|---|---|
| Stake | 60k | 90k | 80k |
| Withdraw | 55k | 85k | 75k |
| GetReward | 50k | 80k | 70k |
Наші контракти на 20-30% дешевші за типові реалізації за рахунок компактного storage layout та off-chain розрахунків. Наприклад, економія газу в 30k на кожній операції дозволяє зекономити до $5 000 на місяць на комісіях при активному пулі. Додаткова економія: використання immutable змінних знижує вартість деплою на 15-20%.
Як ми працюємо?
- Аналітика (0.5 дня). Визначаємо: один або декілька reward-токенів, чи потрібен boosting, мінімальний lockup, спосіб поповнення винагород (manual або автомат).
- Проектування архітектури (0.5 дня). Вибір патерну, розрахунок rewardRate, проектування подій для індексації.
- Розробка (2-3 дні). Реалізація контракту з форматними тестами та fuzzing-перевірками арифметики.
- Аудит внутрішній (1 день). Прогін Slither, Mythril, Echidna. Виправлення зауважень.
- Деплой (0.5 дня). Deployer-скрипт, верифікація на Etherscan, transferOwnership на multisig.
Що входить в роботу?
- Повний вихідний код контрактів з коментарями та тестами (Foundry/Hardhat).
- Розгорнутий звіт про газ-оптимізацію з вимірами.
- Гайд по інтеграції субграфа (The Graph) для подій.
- Підтримка протягом 30 днів після деплою: доопрацювання параметрів, редеплой при необхідності.
- Супровід зовнішнього аудиту (за запитом).
Чому варто замовити розробку у нас?
Ми розробили контракти для протоколів з TVL до $500M, провели понад 20 внутрішніх аудитів. Наш досвід включає інтеграцію з Chainlink oracle, кросс-чейн мости (LayerZero, Wormhole) та MEV-захист. Проекти, які ми супроводжуємо, проходять зовнішній аудит без критичних зауважень. Ми проводимо аудит ліквідності контракту на предмет вразливостей. Отримайте консультацію по вашому проекту прямо зараз — зв'яжіться з нами для підготовки архітектури та кошторису.







