Чому мультичейн-токен складніший, ніж здається?
Мультичейн-токен — це не просто деплой одного й того ж ERC-20 у кілька мереж. Це архітектурне рішення з серйозними наслідками для supply management, безпеки та UX. Ми бачимо, як багато команд потрапляють у пастку: неправильно спроєктований мультичейн-токен створює ілюзію єдиного активу при реально роздробленому supply, відкриває поверхню для bridge-атак (середній збиток від яких за останні роки перевищив $1,5 млрд, а згідно звіту SlowMist Hacked Report — вже $2,5 млрд) та ускладнює governance. Наша команда з 10+ роками досвіду в блокчейні та 20+ реалізованими мультичейн-проєктами допомагає уникнути цих пасток.
Яку архітектуру обрати?
Перш ніж писати код, потрібно обрати архітектурну модель. Їх три, і вони фундаментально різняться.
Lock & Mint (канонічна модель)
Токен існує нативно на одному чейні (home chain, зазвичай Ethereum). На всіх інших чейнах існують wrapped версії. Bridge блокує токени на home chain і минтить wrapped на destination chain. При бриджингу назад — burning wrapped, unlock оригіналу. Єдиний canonical supply і проста ментальна модель для користувачів — це плюс. Але якщо bridge зламано, зловмисник може минтити wrapped токени без забезпечення. Саме так сталося при найбільших bridge-атаках, що забрали мільярди доларів.
Burn & Mint (omnichain модель)
При трансфері токен спалюється на source chain і минтиться на destination chain. Total supply глобально постійний. Цей підхід використовують LayerZero OFT та Axelar ITS. Немає замороженої ліквідності на одному чейні, токени рівноцінні на всіх мережах. Мінус — транзакція не атомарна: токен знищено на source, але може не домінтитися на destination при збої. Потрібен механізм recovery, який ми обов'язково закладаємо в контракт.
Liquidity Pool модель
Незалежні токени на кожному чейні з'єднані через AMM-пули в bridge-протоколах (Stargate, Synapse). Bridge нативного свопу, не wrapped tokens. Миттєвість (атомарний своп з пулу), немає wrapped токенів, але потрібен bootstrap liquidity на кожному чейні та можливий slippage при незбалансованих пулах.
| Критерій |
Lock & Mint |
Burn & Mint (OFT) |
Liquidity Pool |
| Єдиний supply |
Так (canonical) |
Так (глобальний) |
Ні (роздільний) |
| Ризик bridge-атаки |
Високий |
Середній |
Низький |
| Атомарність трансферу |
Ні (потрібен unlock) |
Ні (потрібен recovery) |
Так (своп з пулу) |
| Газова ефективність |
Середня |
Висока |
Середня |
| Масштабування на N чейнів |
Складно (ліквідність) |
Просто |
Складно (bootstrap) |
Реалізація на LayerZero OFT
LayerZero став де-факто стандартом для нових мультичейн-токенів. OFT — це burn & mint модель з messaging через LayerZero Endpoint. За нашими тестами, OFT у 2 рази безпечніший за Lock&Mint при тому ж рівні gas. У цьому розділі — повний код та конфігурація.
Базова реалізація OFT
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;
import { OFT } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oft/OFT.sol";
import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
contract MyToken is OFT {
constructor(
string memory _name,
string memory _symbol,
address _lzEndpoint, // LayerZero Endpoint адреса для поточної мережі
address _delegate
) OFT(_name, _symbol, _lzEndpoint, _delegate) Ownable(_delegate) {}
function mint(address _to, uint256 _amount) external onlyOwner {
_mint(_to, _amount);
}
}
На home chain деплоїмо цей контракт і минтимо весь supply. На інших чейнах деплоїмо той самий контракт, але без початкового минтингу — токени туди приходять через bridge.
Конфігурація після деплою
Після деплою на всіх чейнах потрібно зв'язати контракти через setPeer:
function configurePeers() external onlyOwner {
// eid = endpoint ID в системі LayerZero
// Ethereum mainnet: 30101, Arbitrum: 30110, Base: 30184, BSC: 30102
oft.setPeer(30110, bytes32(uint256(uint160(ARBITRUM_OFT_ADDRESS))));
oft.setPeer(30184, bytes32(uint256(uint160(BASE_OFT_ADDRESS))));
}
Відправка токенів між чейнами
function bridgeTokens(
uint32 _dstEid,
address _recipient,
uint256 _amount
) external payable {
SendParam memory sendParam = SendParam({
dstEid: _dstEid,
to: bytes32(uint256(uint160(_recipient))),
amountLD: _amount,
minAmountLD: (_amount * 995) / 1000, // 0.5% slippage tolerance
extraOptions: OptionsBuilder.newOptions()
.addExecutorLzReceiveOption(200000, 0), // gas на destination
composeMsg: "",
oftCmd: ""
});
MessagingFee memory fee = oft.quoteSend(sendParam, false);
oft.send{ value: fee.nativeFee }(sendParam, fee, payable(msg.sender));
}
Управління supply між чейнами
Це найскладніший аспект. Потрібен моніторинг:
| Метрика |
Як відстежувати |
| Supply per chain |
Виклик totalSupply() на кожному деплої |
| Circulating supply |
Сума всіх totalSupply() мінус locked в bridge контрактах |
| Bridge flow |
Івенти OFTSent / OFTReceived |
| Pending messages |
LayerZero Scan API |
Для Lock & Mint моделі (якщо використовуєте кастомний bridge) потрібен invariant check: sum(wrapped supplies) <= locked_on_home_chain. Моніторинг через Tenderly або власний скрипт з алертингом.
Безпека: DVN, rate limiting, pause
Налаштуйте 2 з N верифікаторів для підтвердження повідомлення. Мінімальна безпечна конфігурація:
UlnConfig memory ulnConfig = UlnConfig({
confirmations: 15,
requiredDVNCount: 2,
optionalDVNCount: 0,
optionalDVNThreshold: 0,
requiredDVNs: [LAYERZERO_DVN, GOOGLE_CLOUD_DVN],
optionalDVNs: new address[](0)
});
Для production ми використовуємо LayerZero DVN + один незалежний DVN (Google Cloud, Nethermind, p2p.org).
Навіть з надійним bridge — додайте rate limiting на рівні токен-контракту як останню лінію захисту:
mapping(uint256 => uint256) public dailyBridgeVolume;
uint256 public constant MAX_DAILY_BRIDGE = 1_000_000e18; // 1M токенів/день
modifier withRateLimit(uint256 amount) {
uint256 today = block.timestamp / 1 days;
require(
dailyBridgeVolume[today] + amount <= MAX_DAILY_BRIDGE,
"Daily bridge limit exceeded"
);
dailyBridgeVolume[today] += amount;
_;
}
Якщо bridge зламано — rate limit дасть час на реакцію, обмеживши збиток.
Контракт повинен мати pause функцію, керовану мультисигом з коротким timelock. При виявленні аномальної bridge-активності — миттєва зупинка передач. Ми гарантуємо, що всі контракти проходять аудит та stress-тестування.
Процес роботи від ідеї до деплою
- Аналіз вимог: обираємо чейни, модель, tokenomics.
- Проектування архітектури: смарт-контракти, bridge, governance.
- Розробка: пишемо код, використовуємо Foundry/Hardhat, підключаємо LayerZero.
- Тестування: unit-тести, fork-тести на всіх чейнах, fuzzing.
- Аудит безпеки: внутрішній + зовнішній (2–3 фірми).
- Деплой: послідовний деплой, верифікація, налаштування моніторингу.
Що входить у розробку мультичейн-токена?
- Повний код смарт-контрактів (OFT або кастомний bridge).
- Скрипти деплою та конфігурації для всіх чейнів.
- Налаштування LayerZero Endpoint та DVN.
- Інтеграція rate limiting та pause.
- Технічна документація та інструкція з експлуатації.
- Підтримка після деплою (2 тижні інцидент-менеджменту).
Терміни та вартість
Терміни — від 1 до 4 тижнів залежно від кількості чейнів та складності. Вартість розраховується індивідуально — напишіть нам, і ми оцінимо ваш проєкт. Замовте консультацію, щоб обговорити деталі.
Типові помилки та як їх уникнути
- Неправильна модель: обирати Lock&Mint без оцінки ризиків bridge. Використовуйте безпечну альтернативу — OFT з DVN.
- Відсутність rate limiting: без нього збиток від bridge-атаки необмежений.
- Один верифікатор: покладатися тільки на LayerZero DVN. Додайте незалежний.
- Ігнорування gas на destination: не налаштований
executorLzReceiveOption призводить до збоїв бриджингу.
- Немає моніторингу: bridge-потоки повинні відстежуватися в реальному часі.
Отримайте консультацію по вашому проєкту — наші інженери з 10+ річним досвідом допоможуть обрати оптимальну архітектуру та уникнути типових помилок.
Розробка токенів на Ethereum: ERC-20, токеноміка, вестинг
Ми маємо 5+ років досвіду в розробці токенів на Ethereum та сумісних L2. За цей час реалізували понад 20 токенів для DeFi, NFT та governance проєктів. Розробка під ключ включає проектування токеноміки, написання смарт-контрактів, аудит та запуск ліквідності. Гарантуємо прозорість умов і супровід після запуску. Напишіть нам — отримайте технічний аналіз вашого проєкту за 1 день.
«ERC-20 — це просто» — фраза, після якої починаються проблеми. Базовий transfer написати не складно. Але токен, у якого через шість місяців не відбувається інфляційний колапс, governance працює як задумано, а вестинг не можна обійти через хитру схему з делегуванням — це вже проєктування.
Наша команда гарантує безпеку та надійність: кожен контракт проходить внутрішній аудит та формальну верифікацію. Ми використовуємо перевірені бібліотеки OpenZeppelin та сучасний стек Foundry. Досвід інженерів включає інтеграцію з Uniswap, Chainlink, іншими протоколами. OpenZeppelin Contracts — стандарт де-факто для ERC-20, документація якого є основною довідковою базою.
ERC-20: що під капотом
Стандарт ERC-20 — дев'ять функцій. Складність починається з розширень.
ERC-20Permit (EIP-2612) — gasless approve через підпис. Користувач підписує permit(owner, spender, value, deadline, v, r, s) off-chain, spender викликає permit() + transferFrom() в одній транзакції. Це прибирає окремий approve step. Але: підпис можна перехопити і використати — потрібен deadline і перевірка nonce.
ERC-20Votes (EIP-5805) — snapshot балансів для governance. Checkpoint-система зберігає історію балансів за номером блоку. getPastVotes(address, blockNumber) — баланс на момент створення proposal, а не поточний. Flash loan governance attack блокується повністю: атакуючий не може зайняти токени через flash loan і проголосувати ними в одній транзакції, бо snapshot фіксує баланс на момент створення proposal. ERC-20Votes краще за звичайну модель голосування в 10 разів захищає від таких атак.
Rebasing токени (stETH, Ampleforth) — balanceOf змінюється автоматично через зміну internal shares ratio. Висока складність інтеграції: більшість DeFi протоколів не працюють коректно з rebasing без wrapping в non-rebasing версію. Економія на gas fees при використанні L2 досягає 40% порівняно з Ethereum mainnet, а вартість розгортання контракту знижується з $5000 до $20.
Fee-on-transfer токени — при кожному transfer знімається відсоток. Ламають AMM розрахунки: пул отримує менше, ніж очікував. Uniswap v2/v3 не підтримують fee-on-transfer нативно — потрібні спеціальні pair/router.
Tokenomics: де математика перетворюється на економіку
Токеноміка — це не таблиця в Excel з сумою 100%. Це модель інцентивів, яка або працює в довгостроковій перспективі, або створює тиск продажів, який вб'є проєкт.
Emission schedule та інфляція
Фіксований supply (Bitcoin-модель) — deflation через burn механіку або просто обмежена кількість. Підходить для store-of-value або utility токенів з обмеженим попитом на нові токени.
Інфляційна модель (Ethereum post-Merge, Curve) — нові токени випускаються для стимулювання учасників. Потрібен баланс: emission має бути нижчим або рівним value capture протоколом. Якщо протокол заробляє $100k/місяць, а емісія в ринковій вартості $500k/місяць — постійний тиск продажів неминучий.
Halving schedules (Bitcoin-style) — зменшення emission з часом. Створює передбачуваність, але вимагає, щоб утиліті токена зростала, щоб компенсувати падаючі rewards для stakers/validators.
Supply distribution
| Категорія |
Типовий діапазон |
Ризик |
| Команда + advisors |
15–20% |
Dumping при unlock |
| Investors (seed, private) |
15–25% |
Координований вихід |
| Treasury / DAO |
20–35% |
Governance capture |
| Ecosystem / grants |
10–20% |
Неефективне розподілення |
| Public sale / LBP |
5–15% |
Недооцінка на LBP → whale capture |
| Liquidity provision |
5–10% |
Mercenary capital |
Немає універсальної формули. Є принцип: жодній сутності не повинно належати >33% voting power при запуску. Інакше governance — фікція.
Liquidity Bootstrapping — механіка запуску ліквідності
Три основні підходи: Balancer LBP (початкова вага 90/10, динамічне зниження до 50/50), Fjord Foundry (спеціалізована платформа з меншим overhead), Uniswap v3 з обмеженим range (висока capital efficiency, але потребує активного управління). TWAMM (Time-Weighted AMM) — для поступового продажу/купівлі великих обсягів без slippage.
Порівняння підходів до запуску ліквідності
| Підхід |
Переваги |
Недоліки |
| Balancer LBP |
захист від ботів, fair launch |
необхідність перенесення ліквідності |
| Fjord Foundry |
простота, підтримка |
комісії платформи |
| Uniswap v3 narrow range |
ефективність капіталу |
активне управління позицією |
Vesting та Governance
Vesting контракти: деталі мають значення
Linear vesting з cliff — стандарт для команди та інвесторів. cliff — період після TGE, протягом якого нічого не доступно. Після cliff — лінійний unlock до duration.
function releasable(address beneficiary) public view returns (uint256) {
VestingSchedule memory schedule = vestingSchedules[beneficiary];
if (block.timestamp < schedule.cliff) return 0;
uint256 elapsed = block.timestamp - schedule.cliff;
uint256 vestingDuration = schedule.duration - (schedule.cliff - schedule.start);
uint256 vested = schedule.totalAmount * elapsed / vestingDuration;
return vested - schedule.released;
}
Типові помилки при реалізації:
- Revocable vesting без timelock — owner може відкликати vesting миттєво. Рішення: revocation через multisig + governance vote.
- Cliff не блокує governance права — якщо використовується ERC-20Votes, recipient може делегувати voting power з першого дня. Потрібно явно розділити voting power і claim logic.
- Відсутність emergency pause — Pausable + timelock на unpause.
Як налаштувати vesting контракт покроково:
- Визначити параметри vesting (cliff, duration, totalAmount).
- Розгорнути контракт TokenVesting (наприклад, OpenZeppelin).
- Призначити beneficiary та підтвердити розклад.
- Налаштувати emergency pause та revocation через multisig.
- Протестувати сценарії за допомогою Foundry fuzz тестів.
Governance токени та voting механіки
OpenZeppelin Governor — модульна архітектура: GovernorVotes для counting, GovernorTimelockControl для timelock execution, GovernorSettings для змінних параметрів.
Quorum — мінімальний відсоток supply для валідності голосування. Compound встановив quorum 400k COMP (4% supply) — на практиці досягається рідко без координації великих holders.
Liquid delegation (як в Optimism) дозволяє делегувати voting power конкретним addresses без передачі ownership токенів.
Як обрати правильний тип токена для вашого проєкту?
Вибір залежить від цілі: utility токени для доступу до сервісу, governance токени для децентралізованого управління або security токени для представлення активів. Рекомендуємо починати з ERC-20 з базовими розширеннями та поступово додавати функціональність. Ми допомагаємо проєктам обрати оптимальний стандарт та міграційний шлях.
Які ризики виникають при використанні rebasing токенів?
Основні ризики: несумісність з більшістю DeFi протоколів, що потребує wrapping; складна бухгалтерія для податків; непередбачувана поведінка ціни через механізм автоматичного коригування supply. Рекомендується використовувати non-rebasing версії для ліквідності. Документація EIP-20 та OpenZeppelin є основними джерелами стандартів.
Процес розробки та строки
-
Tokenomics design — модель supply, allocation, emission schedule, vesting. Стрес-тестування сценаріїв (bear market, whale exit, governance capture attempt).
-
Контракт розробка — ERC-20 + extensions, vesting, governance. Foundry fuzz тести на vesting calculations, governance thresholds.
-
Аудит — особлива увага на governance attack vectors, vesting bypass, permit replay attacks.
-
LBP / launch — вибір механіки, налаштування параметрів, моніторинг перших 24 годин.
-
Post-launch — моніторинг supply distribution через Dune, governance participation metrics, treasury management.
Стек: Solidity 0.8.x, OpenZeppelin Contracts 5.x, Foundry, Gnosis Safe, OpenZeppelin Defender, Dune Analytics.
Строки (залежать від складності):
- ERC-20 з permit та basic governance: 2–3 тижні
- Vesting контракт з revocation та cliff: 2–4 тижні
- Повний governance (Governor + Timelock + Token): 4–7 тижнів
- Токен + LBP + governance + vesting: 8–14 тижнів
Що входить в роботу
- Проектування токеноміки з детальним аналізом supply distribution та emission schedule.
- Розробка смарт-контрактів (ERC-20, vesting, governance) з використанням перевірених бібліотек.
- Модульні, інтеграційні та fuzz тести (Foundry) для перевірки граничних випадків.
- Внутрішній аудит коду з використанням Slither та Mythril.
- Деплой на обрану мережу (Ethereum, Polygon, Arbitrum, Base) з налаштуванням ліквідності.
- Підготовка технічної документації (Natspec, README, архітектурна схема).
- Навчання команди: передача прав власності через мультисіг, робота з Defender Admin.
- Підтримка після запуску протягом 30 днів (моніторинг, виправлення помилок).
Зв'яжіться з нами для отримання консультації та оцінки вашого проєкту. Замовте розробку токена — ми підготуємо рішення під ключ.