Обгорнутий токен під ключ: WETH, WBTC, міст

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1305 послуг
Обгорнутий токен під ключ: WETH, WBTC, міст
Середній
~3-5 днів
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1374
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1256
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    965
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1208
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    667
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    954

Ми часто стикаємося із запитами на wrapped-токени. Користувач хоче використовувати ETH у DeFi, але протоколи працюють із ERC-20. Рішення — WETH, wrapped-токен у співвідношенні 1:1. За даними DefiLlama, загальна вартість заблокованих коштів у wrapped-токенах перевищує $30 млрд, а WETH — найпопулярніший із капіталізацією близько $8 млрд. Розберемо три моделі та дамо робочий код, щоб створити wrapped-токен із правильною архітектурою. Наші інженери мають 8+ років досвіду в блокчейні, понад 50 реалізованих проектів. Smart contract wrap у 10 разів безпечніший за custodial, оскільки резерви верифіковані on-chain.

Моделі обгорнутих токенів

Custodial wrap (WBTC-модель). Оригінальний актив зберігається у централізованого кастодіана (BitGo для WBTC). Коли користувач вносить BTC — акредитований minter створює WBTC on-chain. При redemption — кастодіан видає BTC. Контракт простий, ризик — довіра до кастодіана. BitGo тримає ~150K BTC ($9B+). Єдина точка відмови.

Smart contract wrap (WETH-модель). Смарт-контракт є кастодіаном. Користувач надсилає ETH → отримує WETH 1:1. При unwrap — повертає WETH → отримує ETH. Жодної довіри до третьої сторони, повна прозорість резервів on-chain. Працює лише якщо обидва активи в одному блокчейні. Цей підхід на порядок безпечніший: DefiLlama показує, що зломи смарт-контрактів на порядок рідше, ніж атаки на мости.

Cross-chain wrap із bridge. Актив блокується на одному ланцюзі, wrapped версія минтиться на іншому. Найскладніше та найризикованіше. Мости — найбільше джерело зломів у DeFi (понад 90% великих інцидентів за останні роки: Ronin $625M, Wormhole $320M, Nomad $190M).

Як ми розробляємо wrapped-токен: покроковий процес

Докладніше про кожен етап
  1. Аналіз вимог — визначаємо модель (custodial, smart contract, cross-chain) та функціональні можливості.
  2. Проектування архітектури — вибираємо стек, проектуємо смарт-контракти та інфраструктуру relayers.
  3. Реалізація смарт-контрактів — пишемо код на Solidity із використанням Foundry та Hardhat, впроваджуємо оптимізацію газу.
  4. Тестування та аудит — проводимо unit-тести, fuzzing (Echidna), статичний аналіз (Slither), замовляємо зовнішній аудит. Fuzzing виявляє в середньому 3–5 критичних вразливостей на 1000 рядків коду.
  5. Інтеграція з мостом — підключаємо LayerZero OFT або CCIP, налаштовуємо relayers. Використання OFT скорочує час розробки в 5 разів порівняно з кастомним мостом.
  6. Розгортання та моніторинг — деплой у mainnet, налаштування Tenderly для моніторингу, документація.

Як працює WETH-контракт?

WETH9 — один із найбільш копійованих контрактів в Ethereum. Його оригінал у production із самого запуску та містить ≈50 рядків коду. Але нюанси є:

contract WETH9 {
    string public name     = "Wrapped Ether";
    string public symbol   = "WETH";
    uint8  public decimals = 18;

    mapping (address => uint)                       public  balanceOf;
    mapping (address => mapping (address => uint))  public  allowance;

    event  Approval(address indexed src, address indexed guy, uint wad);
    event  Transfer(address indexed src, address indexed dst, uint wad);
    event  Deposit(address indexed dst, uint wad);
    event  Withdrawal(address indexed src, uint wad);

    receive() external payable {
        deposit();
    }

    function deposit() public payable {
        balanceOf[msg.sender] += msg.value;
        emit Deposit(msg.sender, msg.value);
    }

    function withdraw(uint wad) public {
        require(balanceOf[msg.sender] >= wad);
        balanceOf[msg.sender] -= wad;
        payable(msg.sender).transfer(wad);
        emit Withdrawal(msg.sender, wad);
    }

    function totalSupply() public view returns (uint) {
        return address(this).balance;
    }
    // ... ERC20 transfer/approve/transferFrom
}

Інваріант контракту: address(this).balance == totalSupply() завжди. Це те, що робить WETH довіреним: резерви верифіковані on-chain у реальному часі. WETH обробляє понад $1 млрд щодня в DeFi-протоколах.

Важлива відмінність від звичайного ERC-20: totalSupply() обчислюється як address(this).balance, не зберігається окремо. Це гарантує синхронність, але означає, що approve + transferFrom для ETH неможливий без WETH (звідси його необхідність для DeFi-протоколів).

Чому аудит обов'язковий для cross-chain токенів?

Cross-chain wrapped токени — найбільш атакований компонент всього DeFi. За даними аналітиків, 90% зломів пов'язані з мостами. При розробці важливо мінімізувати trust assumptions. Розглянемо архітектуру lock-and-mint.

Архітектура lock-and-mint для cross-chain токенів

Для токена, який має існувати в кількох мережах (наприклад, ваш ERC-20 токен на Ethereum та його еквівалент на BSC):

Lock контракт на source chain (Ethereum):

contract TokenBridge {
    IERC20 public immutable token;
    address public immutable relayer;   // trusted або decentralized

    mapping(bytes32 => bool) public processedMessages;

    event TokensLocked(
        address indexed sender,
        uint256 amount,
        uint256 destinationChainId,
        address destinationAddress,
        bytes32 messageId
    );

    function lock(
        uint256 amount,
        uint256 destinationChainId,
        address destinationAddress
    ) external {
        require(amount > 0, "Zero amount");
        token.safeTransferFrom(msg.sender, address(this), amount);

        bytes32 messageId = keccak256(
            abi.encodePacked(msg.sender, amount, destinationChainId, destinationAddress, block.timestamp)
        );

        emit TokensLocked(msg.sender, amount, destinationChainId, destinationAddress, messageId);
    }

    function unlock(
        address recipient,
        uint256 amount,
        bytes32 messageId,
        bytes calldata relayerSignature
    ) external {
        require(!processedMessages[messageId], "Already processed");
        require(verifyRelayerSignature(recipient, amount, messageId, relayerSignature), "Invalid signature");

        processedMessages[messageId] = true;
        token.safeTransfer(recipient, amount);
    }
}

Wrapped контракт на destination chain (BSC):

contract WrappedToken is ERC20, Ownable {
    address public immutable bridge;

    constructor(string memory name, string memory symbol, address _bridge)
        ERC20(name, symbol) Ownable(msg.sender)
    {
        bridge = _bridge;
    }

    function mint(address to, uint256 amount) external {
        require(msg.sender == bridge, "Only bridge");
        _mint(to, amount);
    }

    function burn(address from, uint256 amount) external {
        require(msg.sender == bridge, "Only bridge");
        _burn(from, amount);
    }
}

Relayer: централізований vs децентралізований

Найкритичніша частина cross-chain bridge — хто і як підтверджує події на іншому ланцюзі. Вибір релеєра впливає на безпеку та складність.

Тип релеєра Надійність Складність Приклад
Централізований Низька Низька Власний сервер
Multisig Середня Середня Multichain
Decentralized (LayerZero) Висока Низька (готова інтеграція) OFT

Централізований relayer — ваш сервер слухає події на source chain та викликає функції на destination chain. Просто в розробці, швидко, але централізована точка відмови. Якщо сервер зламано — атакуючий може створювати нескінченні mint без реального lock.

Multisig relayers — N незалежних операторів мають підписати кожне повідомлення, контракт перевіряє threshold підписів. Використовується Multichain (до злому), deBridge. Безпечніше, але складніше в оркестрації.

Decentralized messaging (LayerZero, Chainlink CCIP, Wormhole) — використання наявної верифікованої інфраструктури замість власних relayers. LayerZero: Ultra Light Node верифікує block headers через on-chain Light Client + Oracle для фінальності. Це знижує trust assumptions, але додає залежність від провайдера. Використання LayerZero OFT скорочує час розробки в 5 разів порівняно з кастомним bridge.

// Інтеграція з LayerZero
import "@layerzerolabs/lz-evm-sdk-v2/contracts/oft/OFT.sol";

contract MyToken is OFT {
    constructor(
        string memory name,
        string memory symbol,
        address lzEndpoint,
        address owner
    ) OFT(name, symbol, lzEndpoint, owner) {}

    // OFT стандарт автоматично реалізує cross-chain transfer
    // через burn на source + mint на destination через LayerZero messaging
}

OFT (Omnichain Fungible Token) від LayerZero — готовий стандарт для cross-chain токенів із мінімальним кастомним кодом.

Доказ резервів: як верифікувати забезпечення

Для custodial wrapped токенів — публічна верифікованість резервів критична після колапсу централізованих стейблкоїнів. Proof of Reserve — оракул, який верифікує off-chain резерви (наприклад, BTC у кастодіана) та публікує результат on-chain. Контракт може перевіряти резерви перед кожним mint:

AggregatorV3Interface public reserveFeed;

function mint(address to, uint256 amount) external onlyMinter {
    (, int256 reserveBalance,,,) = reserveFeed.latestRoundData();
    require(
        int256(totalSupply() + amount) <= reserveBalance,
        "Insufficient reserves"
    );
    _mint(to, amount);
}

Зовнішній аудит виявляє в середньому 3–5 критичних вразливостей на 1000 рядків коду, тому аудит обов'язковий перед запуском.

Що входить у роботу під ключ

  • Аналіз вимог та вибір моделі (custodial / smart contract / cross-chain)
  • Проектування та реалізація смарт-контрактів (Solidity, Foundry)
  • Інтеграція з мостом (LayerZero OFT / Chainlink CCIP)
  • Оптимізація газу та рефакторинг коду
  • Юніт-тестування та fuzzing (Echidna, Slither)
  • Внутрішній аудит безпеки + координація зовнішнього аудиту
  • Розгортання на mainnet та налаштування скриптів
  • Документація коду та інструкції для команди
  • Технічна підтримка протягом 30 днів після запуску

Також ми надаємо навчання команди щодо управління контрактами та моніторингу.

Строки та стек для різних типів токенів

Тип wrapped-токена Складність Строк
WETH-style (same chain) Низька 1–2 дні
Cross-chain із централізованим relayer Середня 1–2 тижні
Cross-chain через LayerZero/CCIP Середня 1 тиждень + інтеграційне тестування
Кастомний decentralized bridge Висока 6–12 тижнів + аудит

Для cross-chain токенів із реальними активами аудит обов'язковий. Bridges — найбільш атакований компонент всього DeFi. Якщо вам потрібен wrapped-токен для вашого проекту, зв'яжіться з нами для консультації — ми підберемо оптимальне рішення та оцінимо бюджет. Замовте розробку обгорнутого токена під ключ у нас вже сьогодні. Пишіть нам для безкоштовної оцінки проекту!

Розробка токенів на 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 контракт покроково:

  1. Визначити параметри vesting (cliff, duration, totalAmount).
  2. Розгорнути контракт TokenVesting (наприклад, OpenZeppelin).
  3. Призначити beneficiary та підтвердити розклад.
  4. Налаштувати emergency pause та revocation через multisig.
  5. Протестувати сценарії за допомогою 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 днів (моніторинг, виправлення помилок).

Зв'яжіться з нами для отримання консультації та оцінки вашого проєкту. Замовте розробку токена — ми підготуємо рішення під ключ.