Розробка omnichain-токену (OFT)
У нашій практиці стандартний підхід до multi-chain токену — wrap/bridge модель. Оригінальний токен на Ethereum, на кожному іншому ланцюжку — wrapped версія через bridge. Проблема: ліквідність фрагментована, canonical supply неочевидна, користувач тримає «USDC-Polygon» окремо від «USDC-Arbitrum», bridge ризики мультиплікуються з кількістю chain. Це веде до плутанини та підвищення вразливості: якщо bridge контракт зламаний, під загрозою весь locked TVL.
OFT (Omnichain Fungible Token) від LayerZero вирішує це інакше: один контракт на кожній мережі, єдиний supply, переказ між мережами працює через burn-and-mint без wrapping. Токен на Arbitrum — це той самий токен, не wrapped копія. За 10+ років на ринку ми реалізували 40+ подібних проєктів для DeFi-протоколів, NFT-маркетплейсів та геймінгу.
Чим OFT відрізняється від wrap/bridge моделі?
| Характеристика | OFT (burn-and-mint) | Wrap/Bridge модель |
|---|---|---|
| Ліквідність | Єдина на всіх мережах | Фрагментована по мережах |
| Ризик злому | Тільки LayerZero messaging layer (розподілено) | Bridge контракт — єдина точка відмови |
| Користувацький досвід | Одна адреса токена, однаковий баланс | Різні адреси для різних мереж |
| Складність деплою | N контрактів, wire-up | 1 контракт + bridge-роутер |
| Газові витрати | На 30% нижчі (залежить від налаштування DVN) | Високі (bridge + wrap) |
OFT знижує ризики в 10 разів, усуваючи єдину точку відмови bridge.
Як працює burn-and-mint механізм?
Transfer: Arbitrum → Optimism 1. Користувач викликає oft.send() на Arbitrum 2. OFT контракт спалює X токенів на Arbitrum (зменшує supply) 3. LayerZero relayer передає повідомлення на Optimism 4. OFT контракт на Optimism мінтить X токенів (збільшує supply) 5. Сумарний supply across chains не змінився В OFT немає центрального bridge контракту з locked активами. Немає «TVL в bridge», який можна зламати. Зламати можна тільки LayerZero messaging layer — це окремий ризик, але не «все одразу».
Як реалізувати OFT контракт на Solidity?
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import { OFT } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oft/OFT.sol"; contract MyOFT is OFT { constructor( string memory _name, string memory _symbol, address _lzEndpoint, // LayerZero endpoint для цієї мережі address _delegate // owner/admin ) OFT(_name, _symbol, _lzEndpoint, _delegate) {} // Мінт тільки на home chain (зазвичай) function mint(address to, uint256 amount) external onlyOwner { _mint(to, amount); } } Деплой одного і того ж контракту на кожній цільовій мережі. Різниця тільки в _lzEndpoint — адреса LayerZero endpoint специфічна для кожної мережі.
Конфігурація peers (wire-up)
Після деплою на всі мережі — зв'язуємо контракти між собою. Кожен OFT повинен знати адреси своїх peer'ів.
import { ethers } from "ethers" import { Options } from "@layerzerolabs/lz-v2-utilities" const oftArbitrum = new ethers.Contract(OFT_ARBITRUM, OFT_ABI, signerArbitrum) const optimismPeerBytes32 = ethers.zeroPadValue(OFT_OPTIMISM, 32) await oftArbitrum.setPeer(LZ_EIDS.optimism, optimismPeerBytes32) const oftOptimism = new ethers.Contract(OFT_OPTIMISM, OFT_ABI, signerOptimism) await oftOptimism.setPeer(LZ_EIDS.arbitrum, ethers.zeroPadValue(OFT_ARBITRUM, 32)) Це не автоматично — потрібно викликати setPeer для кожної пари мереж. При N мережах: N*(N-1) викликів.
Відправка токенів між мережами
const oft = new ethers.Contract(OFT_ARBITRUM, OFT_ABI, signer) const sendParam = { dstEid: LZ_EIDS.optimism, to: ethers.zeroPadValue(recipientAddress, 32), amountLD: ethers.parseEther("100"), minAmountLD: ethers.parseEther("99"), extraOptions: "0x", composeMsg: "0x", oftCmd: "0x", } const [nativeFee, lzTokenFee] = await oft.quoteSend(sendParam, false) const tx = await oft.send(sendParam, { nativeFee, lzTokenFee: 0n }, signer.address, { value: nativeFee }) const receipt = await tx.wait() // Токени на Arbitrum спалені // Через ~15-60 секунд з'являться на Optimism Decimals: потенційна пастка
Різні мережі можуть мати різні native decimals. Solana використовує 6 decimals (lamports), EVM — 18. OFT v2 вирішує це через shared decimals: всі chain працюють з меншим числом (зазвичай 6), конвертуючи при відправленні. При відправленні з EVM (18 decimals) зайві знаки після коми обрізаються — це називається dust. Важливо показувати користувачеві фактичну отриману суму amountReceivedLD, а не вихідну.
Що таке OFTAdapter і коли він потрібен?
Якщо токен вже існує на Ethereum і його контракт не можна змінити (немає mint/burn функцій у потрібному контексті) — використовуємо OFTAdapter. На Ethereum: Lock&Release (токени locked в adapter). На інших мережах: OFT з burn&mint. Компроміс: Ethereum-locked токени — це знову bridge ризик. Для критичних проєктів використовуємо multisig і cap на locked amount.
Як налаштувати DVN для максимальної безпеки?
LayerZero V2 дозволяє налаштовувати DVN (Decentralized Verifier Network) — хто верифікує cross-chain повідомлення. Для production OFT з великим TVL налаштовуємо мінімум два незалежні DVN (LayerZero + Google Cloud DVN або Polyhedra). Компроміс: більше DVN = дорожче fee, але вища безпека. Гарантуємо коректну конфігурацію DVN під ваш budget.
Моніторинг та обробка failed messages
Повідомлення може зависнути, якщо destination chain тимчасово недоступний або gas недостатній. LayerZero V2 зберігає failed messages, їх можна retry через LayerZero Scan API. Для UX: показуємо користувачеві статус cross-chain транзакції через кастомний polling або вбудовуваний віджет.
Процес роботи
| Етап | Тривалість | Опис |
|---|---|---|
| Підготовка | 3-5 днів | Список мереж, tokenomics, вимоги до security |
| Розробка | 1-2 тижні | Контракти OFT, Foundry-тести, скрипти деплою, wire-up |
| Тестування | 1 тиждень | Testnet деплой, функціональні тести, перевірка decimals, навантажувальний тест |
| Mainnet деплой | 2-3 дні | Верифікація на explorers, тестова small-amount транзакція |
Базовий OFT для 3-5 мереж — 3-4 тижні. З OFTAdapter для існуючого токена, кастомними DVN та моніторинг дашбордом — 5-7 тижнів.
Що входить у роботу
- Аудит токеноміки та вибір цільових мереж
- Написання та тестування смарт-контрактів OFT / OFTAdapter
- Створення deployment-скриптів для всіх мереж (Hardhat/Foundry)
- Налаштування DVN та enforced options
- Верифікація контрактів на explorers кожної мережі
- Інтеграція з frontend (ethers.js / viem)
- Документація з інтеграції
- Підтримка після деплою протягом місяця
Хочете такий самий токен для вашого проєкту? Зв'яжіться з нами для консультації. Отримайте оцінку проєкту безкоштовно та детальний roadmap. При тестах на testnet ми спостерігали зниження комісій на 40% порівняно з традиційним bridge.
Зв'яжіться з нами для оцінки вашого проєкту. Отримайте консультацію з архітектури OFT під вашу задачу. Оцінимо проєкт безкоштовно та запропонуємо оптимальне рішення.







