Розробка vesting-панелі для інвесторів

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

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

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

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

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

Розробка vesting-панелі для інвесторів

Задача: інвестор купив токени на private round, у нього є vesting контракт в блокчейні, и йому потрібен удобный інтерфейс щоб бачити скільки розблокувалося, скільки ще заблоковано, и забрати доступні токени. Здається простим — поки не зіштовхнешся з десятками контрактів на кількох сетях, multi-sig кошельками інвесторів та wallet-агностик вимогами.

Архітектура панелі

Що повинно відображатися

Мінімальний набір для кожного інвестора:

  • Total allocation — всього токенів виділено
  • Vested — розблоковано до цього моменту
  • Released — вже забрано
  • Releasable — можна забрати прямо зараз
  • Locked — ще під vesting
  • Vesting schedule — графік розблокування (візуально)
  • Next unlock — коли наступний разлок і скільки

Читаємо дані з контрактів

Якщо використовується OpenZeppelin VestingWallet:

import { createPublicClient, http, parseAbi } from "viem";

const VESTING_ABI = parseAbi([
  "function beneficiary() view returns (address)",
  "function start() view returns (uint64)",
  "function duration() view returns (uint64)",
  "function released(address token) view returns (uint256)",
  "function releasable(address token) view returns (uint256)",
]);

multicall обов'язковий — batch запросів. Один вызов до ноди замість чотирьох-п'яти послідовних — критично для продуктивності при кількох контрактах.

Frontend: компонент графіка vesting

Візуалізація допомагає інвестору зрозуміти коли і скільки він отримає.

Claim транзакція

Кнопка "Claim" повинна коректно обробляти всі стани:

import { useWriteContract, useWaitForTransactionReceipt } from "wagmi";

function ClaimButton({ vestingAddress, tokenAddress, releasable, decimals }) {
  // ... логіка claim
}

Multi-wallet та multi-chain підтримка

Інвестори використовують різні гаманці (MetaMask, WalletConnect, Coinbase, Ledger). wagmi v2 з ConnectKit/RainbowKit це обробляє.

Якщо проект задеплоєн на кількох сетях, інвестор повинен бачити всі свої vesting контракти в одному місці.

Інвестор-специфічні фічі

Email/Telegram уведомлення об розлоках: за 7 днів до cliff, за 24 години до кожного значимого unlock. Потребує off-chain сервісу, який мониторить блокчейн і відправляє уведомлення.

CSV експорт для податкової звітності: історія всіх claim транзакцій з датами та сумами. Беремо з подій ERC20Transfer або TokensReleased через getLogs або indexer (The Graph).

Whitelist check: якщо токен нельзя продавати до визначеної дати (lock-up дополнітельний до vesting), це не завжди відбито в vesting контракті — може бути у самому токені. Панель повинна це показувати.

Аутентифікація

Для vesting панелі аутентифікація через кошельок (Sign-In with Ethereum, EIP-4361) достатня і рекомендується — немає паролів, немає баз користувачів.

Стек

Компонент Технологія
Frontend Next.js 14 + TypeScript
Web3 wagmi v2 + viem + RainbowKit
Читання даних viem multicall + The Graph (опц.)
Графіки Recharts або Victory
Auth SIWE (EIP-4361)
Уведомлення cron-сервіс + SendGrid / Telegram Bot API

Термін розробки MVP (read-only dashboard + claim): 2–3 тижні. Повна панель з уведомленнями, multi-chain, CSV експортом — 4–6 тижнів.