Разработка vesting-schedule для команды и инвесторов

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1305 услуг
Разработка vesting-schedule для команды и инвесторов
Простой
~2-3 дня
Часто задаваемые вопросы

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

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

Последние работы

  • 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

Разработка vesting-schedule для токенов команды и инвесторов — задача, которую часто недооценивают. Без правильно настроенного cliff и механизма отзыва проект рискует потерять контроль над распределением токенов. Мы разрабатываем кастомные vesting-схемы, учитывающие специфику токеномики и юридические аспекты. Стандартный industrial-подход — контракты на базе OpenZeppelin VestingWallet с возможностью отзыва (revoke) для сотрудников. Vesting без cliff — типичная ошибка: основатель может уйти с полной аллокацией в первые же месяцы. В наших проектах используем проверенные практики: 1 год cliff + 3 года линейного распределения для команды, 6–12 мес cliff + 18–24 мес для инвесторов. Оценим ваш токеномический план — свяжитесь с нами для консультации.

Мы обеспечиваем полный цикл: от проектирования схемы до деплоя на мейннет и последующей поддержки. Наш опыт — 7+ лет в блокчейн-разработке, более 50 развернутых vesting-контрактов для проектов с совокупным TVL > $10M. Гарантируем прозрачность и безопасность каждой сделки.

OpenZeppelin VestingWallet — отраслевой стандарт. Вот как выглядит его использование:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import "@openzeppelin/contracts/finance/VestingWallet.sol";

// Деплой для конкретного бенефициара
// VestingWallet(beneficiary, startTimestamp, durationSeconds)

// Команда: cliff 1 год, vesting 4 года суммарно
// start = TGE + 1 год (cliff), duration = 3 года
address teamMemberVesting = address(new VestingWallet(
    teamMemberAddress,
    block.timestamp + 365 days,  // start после cliff
    3 * 365 days                  // 3 года линейного vesting
));

// Пополнить токенами
IERC20(tokenAddress).transfer(teamMemberVesting, allocatedAmount);

Почему стоит выбрать отзываемый vesting для сотрудников?

Неотзываемый vesting подходит для инвесторов, но для команды он опасен. Если сотрудник уходит, компания теряет токены, которые уже залочены, но ещё не вестнулись. Revocable контракт позволяет вернуть нераспределенную часть в казну. Например, сотрудник отработал 1 год из 4, у него прошёл cliff, но осталось 3 года вестинга. При увольнении мы отзываем невестнутую часть, а уже залоченные токены переходят сотруднику. Это стандартная практика в топ-проектах: Uniswap, Arbitrum используют revocable vesting для команды.

Технически реализация через RevocableVesting контракт, который наследует Ownable2Step. Функция revoke() моментально фиксирует время отзыва и пересчитывает вестнутую сумму.

contract RevocableVesting is Ownable2Step {
    IERC20 public immutable token;
    address public beneficiary;
    uint256 public immutable start;
    uint256 public immutable cliff;
    uint256 public immutable duration;
    uint256 public immutable totalAllocation;
    uint256 public released;
    bool public revoked;
    uint256 public revokedAt;
    
    constructor(
        address _token,
        address _beneficiary,
        address _owner,
        uint256 _start,
        uint256 _cliff,
        uint256 _duration,
        uint256 _totalAllocation
    ) Ownable2Step() {
        token = IERC20(_token);
        beneficiary = _beneficiary;
        start = _start;
        cliff = _cliff;
        duration = _duration;
        totalAllocation = _totalAllocation;
        _transferOwnership(_owner);
    }
    
    function vestedAmount() public view returns (uint256) {
        uint256 endTime = revoked ? revokedAt : block.timestamp;
        
        if (endTime < start + cliff) return 0;
        if (endTime >= start + cliff + duration) return totalAllocation;
        
        uint256 elapsed = endTime - (start + cliff);
        return totalAllocation * elapsed / duration;
    }
    
    function releasable() public view returns (uint256) {
        return vestedAmount() - released;
    }
    
    function release() external {
        require(msg.sender == beneficiary, "Not beneficiary");
        uint256 amount = releasable();
        require(amount > 0, "Nothing to release");
        
        released += amount;
        token.safeTransfer(beneficiary, amount);
        emit TokensReleased(amount);
    }
    
    // Owner (компания) может отозвать невестед токены
    function revoke() external onlyOwner {
        require(!revoked, "Already revoked");
        revoked = true;
        revokedAt = block.timestamp;
        
        // Уже вестед — отдаём бенефициару
        uint256 vestedNow = vestedAmount() - released;
        if (vestedNow > 0) {
            released += vestedNow;
            token.safeTransfer(beneficiary, vestedNow);
        }
        
        // Невестед — возвращаем в treasury
        uint256 remaining = token.balanceOf(address(this));
        if (remaining > 0) {
            token.safeTransfer(owner(), remaining);
        }
        
        emit VestingRevoked(revokedAt, vestedNow, remaining);
    }
}

Как фабрика контрактов упрощает процесс?

Вручную деплоить по контракту на каждого получателя — ошибкоопасно и долго. Фабрика (VestingFactory) создаёт все контракты одним вызовом batchCreate. Вы передаёте массив параметров: адрес бенефициара, сумма, cliff и vesting дни. Фабрика сама переводит токены и эмитирует события. Мы настраиваем фабрику под ваш токен (ERC-20), делаем апрув на нужную сумму и запускаем. Типичное время деплоя — одна транзакция в Etherscan. Использование фабрики снижает затраты на газ в 3-5 раз по сравнению с поштучным деплоем — существенная экономия при большом количестве получателей.

contract VestingFactory is Ownable2Step {
    address public token;
    address[] public allVestings;
    mapping(address => address) public vestingOf; // beneficiary => vesting contract
    
    event VestingCreated(address indexed beneficiary, address vestingContract, uint256 amount);
    
    struct VestingParams {
        address beneficiary;
        uint256 amount;
        uint256 cliffDays;
        uint256 vestingDays;
    }
    
    function batchCreate(
        VestingParams[] calldata params,
        uint256 tgeTimestamp
    ) external onlyOwner {
        for (uint256 i = 0; i < params.length; i++) {
            VestingParams memory p = params[i];
            require(vestingOf[p.beneficiary] == address(0), "Already has vesting");
            
            RevocableVesting vesting = new RevocableVesting(
                token,
                p.beneficiary,
                owner(),
                tgeTimestamp,
                p.cliffDays * 1 days,
                p.vestingDays * 1 days,
                p.amount
            );
            
            IERC20(token).safeTransferFrom(msg.sender, address(vesting), p.amount);
            
            allVestings.push(address(vesting));
            vestingOf[p.beneficiary] = address(vesting);
            
            emit VestingCreated(p.beneficiary, address(vesting), p.amount);
        }
    }
}

Параметры по типам получателей

Тип Cliff Vesting Revocable
Основатели 12 мес 36 мес после cliff Да
Ранние сотрудники 12 мес 24–36 мес после cliff Да
Seed инвесторы 6–12 мес 12–24 мес после cliff Нет
Стратегические партнёры 6 мес 12–18 мес Частично
Советники 3–6 мес 12–18 мес Нет

Для инвесторов контракт нередко неотзываемый — это условие инвестиционного соглашения. Мы всегда согласуем тип vesting с юридической командой.

Сравнение revocable и non-revocable vesting

Характеристика Revocable Non-revocable
Подходит для Команда, сотрудники Инвесторы, партнёры
Возможность отзыва Да Нет
Риск для компании Низкий Высокий при увольнении
Типичный срок cliff 12 мес 6–12 мес
Типичный vesting 24–36 мес 12–24 мес

Что входит в разработку vesting-схемы под ключ

  • Анализ токеномики и дорожной карты проекта
  • Проектирование параметров: cliff, vesting, revocability для каждой категории
  • Написание смарт-контрактов: VestingWallet или кастомный RevocableVesting + фабрика
  • Разработка тестов (Foundry/Hardhat) с покрытием edge-кейсов: частичные отзывы, несколько релизов, переполнение
  • Деплой на тестовую сеть, проверка через Tenderly
  • Аудит кода (опционально, рекомендуется для сумм >$500k)
  • Документация для команды: как релизить токены, как отозвать, как следить за балансом
  • Поддержка после запуска: помощь в первой транзакции release

Сроки и бюджет

Разработка стандартной схемы занимает 3–5 рабочих дней. Включает: написание контрактов, тесты, деплой на Goerli/Sepolia и мейннет. Для крупных проектов с кастомной логикой (например, клаузы на достижение вех) срок может расшириться до 2 недель. Стоимость рассчитывается индивидуально — зависит от сложности схем, количества контрактов и необходимости стороннего аудита. Оцените ваш проект: напишите нам. Закажите разработку vesting-схемы сейчас — мы подготовим индивидуальное предложение в течение дня.

Заключение

Правильный vesting — фундамент доверия сообщества и инвесторов. Мы берём на себя всю техническую часть: от концепции до подписи транзакций. Получите консультацию по вашему токен-распределению.

Разработка токенов: ERC-20, токеномика, вестинг

«ERC-20 — это просто» — фраза, после которой начинаются проблемы. Базовый transfer написать несложно. Но токен, у которого через шесть месяцев не происходит инфляционный коллапс, governance работает как задумано, а вестинг нельзя обойти через хитрую схему с делегированием — это уже проектирование.

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: нельзя занять токены и проголосовать ими в одной транзакции.

Rebasing токены (stETH, Ampleforth) — balanceOf меняется автоматически через изменение internal shares ratio. Высокая сложность интеграции: большинство DeFi протоколов не работают корректно с rebasing без wrapping в non-rebasing версию.

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 — фикция.

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 мгновенно. Если owner key скомпрометирован или команда недобросовестна — все unvested токены могут быть отозваны. Решение: revocation через multisig + governance vote.

Cliff не блокирует governance права — если используется ERC-20Votes, recipient может делегировать voting power с первого дня, даже если токены ещё не unlocked. Нужно явно разделить voting power и claim logic.

Отсутствие emergency pause — если обнаружена уязвимость в vesting контракте, нужна возможность приостановить claim. Pausable + timelock на unpause.

Liquidity Bootstrapping

Запуск ликвидности — критический момент. Три основных подхода:

Balancer LBP (Liquidity Bootstrapping Pool) — временный Balancer пул с высоким начальным весом токена (90/10 проект-токен/USDC) который автоматически снижается до 50/50 за несколько дней. Создаёт нисходящее ценовое давление, препятствуя ботам скупить всё по одной цене. После LBP ликвидность переносится в постоянный пул.

Fjord Foundry — специализированная платформа для LBP и fair launches. Меньше операционного overhead чем прямая интеграция с Balancer.

Uniswap v3 с ограниченным range — добавить ликвидность в узкий диапазон вокруг начальной цены. Высокая capital efficiency, но требует активного управления range.

TWAMM (Time-Weighted AMM) — механика для постепенной продажи/покупки больших объёмов без slippage. Paradigm предложил, реализован в FraxSwap.

Governance токены и voting механики

OpenZeppelin Governor — стандартная реализация on-chain governance. Модульная архитектура: GovernorVotes для counting, GovernorTimelockControl для timelock execution, GovernorSettings для изменяемых параметров.

Quorum — минимальный процент supply для валидности голосования. Слишком высокий quorum = apathy failure (не набирается голосов). Слишком низкий = whale capture. Compound установил quorum 400k COMP (4% supply) — на практике достигается редко без координации крупных holders.

Flash loan governance attack — атакующий занимает токены через flash loan, делегирует их себе, создаёт proposal или голосует, возвращает токены. ERC-20Votes с snapshot по номеру блока полностью блокирует это: нужно иметь токены на момент создания snapshot, который берётся в момент создания proposal.

Delegation — пользователи с малыми балансами часто не голосуют. Liquid delegation (как в Optimism) позволяет делегировать voting power конкретным addresses (delegates) без передачи ownership токенов.

Стек для токен-разработки

Контракты: Solidity 0.8.x, OpenZeppelin Contracts 5.x (ERC20, ERC20Permit, ERC20Votes, Governor, TimelockController, TokenVesting)

Аудит токеномики: Python модели с симуляцией emission/demand, cadCAD для complex systems modeling

Деплой и управление: Foundry scripts, Gnosis Safe для treasury, OpenZeppelin Defender для автоматизации

Аналитика: Dune Analytics для on-chain метрик, Token Terminal для protocol revenue

Процесс

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.

Сроки

  • ERC-20 с permit и basic governance: 2–3 недели
  • Vesting контракт с revocation и cliff: 2–4 недели
  • Полный governance (Governor + Timelock + Token): 4–7 недель
  • Токен + LBP + governance + vesting: 8–14 недель