Ми розробляємо дашборди токенсейлів, які витримують пікові навантаження перших годин продажу, коли сотні тисяч користувачів одночасно підключають гаманці та відправляють транзакції. Помилка в UI/UX у цей момент коштує втрачених продажів та репутаційної шкоди. Наш досвід — понад 5 років у Web3 і більше 30 успішних токенсейлів — гарантує, що дашборд працюватиме безвідмовно.
Дашборд токенсейлу — це не просто сторінка з прогрес-баром. Це складна система, що об'єднує смарт-контракти, real-time дані та UX, розрахований на тисячі одночасних користувачів. Наприклад, при продажі токенів проєкту XYZ з хардкапом 10 млн USDC перші 5 хвилин обробляється до 15 000 транзакцій — кожна вимагає перевірки whitelist, симуляції та газ оцінки.
Які завдання вирішує дашборд токенсейлу?
Дашборд — це фронтенд до sale-контракту. Він повинен відображати прогрес збору, стан продажу, whitelist-статус користувача та дозволяти здійснювати покупку в один клік. Ключові завдання:
- Real-time моніторинг: прогрес-бар hardcap, кількість учасників, статус (Not Started → Active → Ended).
- Whitelist-верифікація: перевірка через Merkle proof без розкриття всього списку.
- Мультивалютні платежі: підтримка USDC, USDT, ETH та інших токенів з автоматичною перевіркою allowance.
- Симуляція транзакції: перед відправкою показуємо очікуваний результат (або помилку) без витрати газу.
Для порівняння: верифікація через Merkle tree вимагає всього 32 байти кореня в контракті, тоді як зберігання повного whitelist (10 000 адрес) обійшлося б у ~1.5 млн газу при кожному оновленні. Merkle proof у 100 разів економніший.
Як ми будуємо архітектуру дашборду?
Стан продажу як state machine
Sale-контракт проходить через фази: not_started, whitelist_only, public, ended_success, ended_failed, distribution, refund_available. UI повинен коректно відображати кожну фазу та блокувати кнопку покупки в неактивних фазах. Ми реалізуємо детектор фази на основі часових міток і зібраних коштів.
Real-time оновлення: WebSocket + резервний polling
Оптимальний спосіб — підписка на події контракту через WebSocket:
const provider = new ethers.WebSocketProvider(WS_RPC_URL);
const saleContract = new ethers.Contract(SALE_ADDRESS, SALE_ABI, provider);
saleContract.on('TokensPurchased', (buyer, paymentAmount, tokenAmount, event) => {
setTotalRaised(prev => prev + paymentAmount);
setParticipantCount(prev => prev + 1);
});
Для стабільності додаємо polling кожні 15 секунд як fallback. Критичні дані (totalRaised, hardCap) отримуємо через Multicall, щоб зменшити кількість RPC-викликів. WebSocket у 10 разів швидший за polling — затримка оновлення знижується з 15 секунд до 100 мс.
Whitelist-верифікація через Merkle Tree
Дерево Меркла дозволяє зберігати корінь хешу whitelist у контракті, а UI генерує proof для кожного користувача.
function buildMerkleTree(whitelist: string[]): MerkleTree {
const leaves = whitelist.map(addr =>
keccak256(Buffer.from(addr.toLowerCase().slice(2), 'hex'))
);
return new MerkleTree(leaves, keccak256, { sortPairs: true });
}
function getMerkleProof(tree: MerkleTree, address: string): string[] {
const leaf = keccak256(Buffer.from(address.toLowerCase().slice(2), 'hex'));
return tree.getHexProof(leaf);
}
Чому важлива симуляція транзакції перед відправкою?
Симуляція (staticCall) дозволяє виловити помилки до відправки: користувач не в whitelist, перевищено індивідуальний ліміт, недостатньо allowance. Це рятує від зайвих газ-витрат і негативного досвіду. Ми показуємо зрозуміле повідомлення про помилку прямо в інтерфейсі.
try {
await saleContract.buy.staticCall(paymentAmount, proof, { value: ethValue });
} catch (err) {
setError(parseContractError(err));
return;
}
Gas estimation з буфером
Для EIP-1559 мереж оцінюємо газ із запасом 20%:
async function estimateGasWithBuffer(tx: ContractTransaction) {
const estimated = await provider.estimateGas(tx);
return (estimated * 120n) / 100n;
}
За специфікацією EIP-1559, оптимальна ціна газу обчислюється на основі базової комісії та пріоритетної націнки. Наш буфер у 20% гарантує, що транзакція буде включена до блоку протягом 30 секунд навіть при різких стрибках мережевої активності.
Продуктивність при піковому навантаженні
Перші хвилини продажів — максимальне навантаження на RPC і frontend. Готуємося:
- Використовуємо enterprise-ноди (Alchemy/QuickNode) з високими лімітами.
- Кешуємо статику (токеноміка, таблиця розподілу) через CDN.
- Оптимізуємо RPC виклики через Multicall.
- Впроваджуємо Optimistic UI: показуємо передбачуваний статус до підтвердження транзакції.
Детальніше про навантажувальне тестування
Моделюємо пік у 50 000 одночасних підключень за допомогою k6 і Artillery. Перевіряємо, що час відповіді API не перевищує 200 мс, а RPC-виклики не перевищують ліміт 10 000 за хвилину. Типова помилка — забути про rate limiting провайдера. Ми додаємо чергу запитів з пріоритетами.
Порівняння методів оновлення даних
| Метод |
Затримка |
Навантаження на RPC |
Вартість підтримки |
| WebSocket |
~100 мс |
Низьке (push) |
Середня |
| Polling (15 сек) |
15 с |
Високе (часті запити) |
Низька |
| Websocket + Polling |
<100 мс |
Низьке (з резервом) |
Середня |
Ми рекомендуємо гібридну схему: WebSocket для real-time, polling як fallback при розриві з'єднання — це знижує навантаження на RPC на 80% порівняно з чистим polling.
Що входить у розробку дашборду під ключ?
| Компонент |
Опис |
| Аналітика |
Вивчення вашого смарт-контракту, складання схеми даних |
| Дизайн UI |
Адаптивний інтерфейс з прогрес-баром, таймером, історією транзакцій |
| Інтеграція з контрактом |
Real-time підписка, Merkle-верифікація, мультивалютність |
| Тестування |
Load-тестування під піковим навантаженням, симуляція помилок |
| Деплой і документація |
Розгортання на VPS/CDN, інструкція для команди |
Етапи розробки
- Аналітика та проєктування — 3-5 днів.
- Розробка frontend — 1-2 тижні.
- Інтеграція з контрактом — 3-5 днів.
- Тестування під навантаженням — 2-3 дні.
- Деплой і передача документації — 1-2 дні.
Підсумковий термін — від 2 до 4 тижнів залежно від складності.
Бажаєте обговорити ваш проєкт? Зв'яжіться з нами для оцінки обсягу робіт. Отримайте консультацію з архітектури дашборду вже сьогодні.
Розробка токенів на 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 днів (моніторинг, виправлення помилок).
Зв'яжіться з нами для отримання консультації та оцінки вашого проєкту. Замовте розробку токена — ми підготуємо рішення під ключ.