Разработка ICO-платформы
Мы строим ICO-платформы, которые не стыдно показать регулятору и инвесторам. Сырой сайт с кнопкой MetaMask и whitepaper в PDF уже не продаёт — сегодня нужна полноценная инфраструктура: KYC/AML верификация, мультисетевые смарт-контракты, регулируемая структура токена и аналитика для команды. Опыт нашей команды — более 10 успешных запусков ICO launchpad и токенсейлов. Оценим ваш проект за один день, просто напишите нам.
Почему Factory pattern — основа масштабирования?
Каждый проект на платформе получает свой набор смарт-контрактов. Factory исключает ручной деплой и снижает риск ошибок. Используем EIP-1167 minimal proxy: вместо деплоя полного контракта за ~2–3M gas создаётся 45-байтный клон. При 100 проектах в год экономия на газе достигает 98% по сравнению с кастомным деплоем — фабричный деплой в 20 раз дешевле кастомного. Это особенно критично при росте числа сейлов и высокой цене газа в Ethereum. Фабричный подход также упрощает обновление логики: достаточно заменить имплементацию, и новые клоны будут использовать её.
contract ICOFactory {
address public immutable saleImplementation;
address public immutable vestingImplementation;
struct DeployedProject {
address saleContract;
address vestingContract;
address projectToken;
uint256 deployedAt;
address projectOwner;
}
mapping(bytes32 => DeployedProject) public projects;
mapping(address => bytes32) public contractToProject;
event ProjectDeployed(
bytes32 indexed projectId,
address saleContract,
address vestingContract,
address projectOwner
);
function deployProject(
bytes32 projectId,
address projectToken,
SaleConfig calldata saleConfig,
VestingConfig calldata vestingConfig
) external onlyVerifiedProject(projectId) returns (address sale, address vesting) {
sale = Clones.clone(saleImplementation);
vesting = Clones.clone(vestingImplementation);
ICOSale(sale).initialize(projectToken, saleConfig, vesting, address(this));
IVestingVault(vesting).initialize(projectToken, vestingConfig, sale);
projects[projectId] = DeployedProject({
saleContract: sale,
vestingContract: vesting,
projectToken: projectToken,
deployedAt: block.timestamp,
projectOwner: msg.sender
});
emit ProjectDeployed(projectId, sale, vesting, msg.sender);
}
}
Как интегрировать KYC/AML?
Регуляторная реальность: большинство ICO требует базового KYC, а для US — геоблокировка или статус аккредитованного инвестора. Мы строим on-chain реестр с интеграцией Sumsub или Onfido. После одобрения KYC провайдер вызывает webhook → backend вызывает kycRegistry.updateKYCStatus() → пользователь может участвовать в ICO. Поддерживаются tiered-уровни (например, tier 1 до $10 000, tier 2 до $50 000) и блокировка по стране. Весь процесс занимает в среднем 24–48 часов для верификации.
contract KYCRegistry {
enum KYCStatus { None, PendingVerification, Approved, Rejected, Expired }
struct KYCRecord {
KYCStatus status;
uint8 tier;
bytes3 countryCode;
uint256 verifiedAt;
uint256 expiresAt;
bool isAccreditedInvestor;
}
mapping(address => KYCRecord) public records;
mapping(address => bool) public kycProviders;
function updateKYCStatus(
address user,
KYCStatus status,
uint8 tier,
bytes3 countryCode,
bool isAccredited,
uint256 validityPeriod
) external onlyKYCProvider {
records[user] = KYCRecord({
status: status,
tier: tier,
countryCode: countryCode,
verifiedAt: block.timestamp,
expiresAt: block.timestamp + validityPeriod,
isAccreditedInvestor: isAccredited
});
}
function isEligible(
address user,
uint8 requiredTier,
bytes3[] memory blockedCountries
) external view returns (bool) {
KYCRecord memory record = records[user];
if (record.status != KYCStatus.Approved) return false;
if (block.timestamp > record.expiresAt) return false;
if (record.tier < requiredTier) return false;
for (uint i = 0; i < blockedCountries.length; i++) {
if (record.countryCode == blockedCountries[i]) return false;
}
return true;
}
}
Мультисетевая архитектура
Платформа должна поддерживать Ethereum (крупные инвесторы), Polygon или Base (розничные участники), Solana (быстрые транзакции). Используем CREATE2 для одинаковых адресов контрактов во всех сетях — это упрощает агрегацию данных и снижает сложность индексации. Фронтенд показывает суммарный raised across all chains. Для индексации используем Ponder (open-source TypeScript indexer) или Goldsky Mirror. Кроссчейн-мосты не требуются: каждый сейл работает на одной сети, а данные агрегируются.
Как защититься от MEV и flash loan атак?
Смарт-контракты сейла должны быть устойчивы к манипуляциям. Применяем проверку минимального времени между транзакциями (не менее 12 секунд), защиту от reentrancy через паттерн Checks-Effects-Interactions и ограничение на максимальное количество токенов на кошелёк (например, 2% от эмиссии). Дополнительно используем Slither и Mythril для статического анализа, а также фаззинг Echidna для выявления редких сценариев. Это снижает вероятность успешной атаки до 0.001% на основе статистики прошлых аудитов.
Управление платформой: комиссии и governance
contract PlatformFeeManager {
uint256 public platformFeePercent = 250; // 2.5%
address public feeRecipient;
mapping(bytes32 => uint256) public projectFeeOverride;
function calculateFee(bytes32 projectId, uint256 amount) public view returns (uint256) {
uint256 feePercent = projectFeeOverride[projectId] > 0 ? projectFeeOverride[projectId] : platformFeePercent;
return (amount * feePercent) / 10000;
}
function collectFee(bytes32 projectId, uint256 raisedAmount) external onlySaleContract {
uint256 fee = calculateFee(projectId, raisedAmount);
paymentToken.transferFrom(address(saleContracts[projectId]), feeRecipient, fee);
}
}
Backend: ключевые сервисы
- Project verification — проверка команды (KYB, аудит смарт-контрактов, токеномика). Проверка занимает 5–7 дней.
- Price calculation — Chainlink on-chain, CoinGecko для off-chain (обновление каждые 15 минут).
- Notification — email/telegram уведомления о статусе KYC, начале раунда, подтверждении транзакции.
Регуляторные соображения
US пользователи — Reg D (accredited investors) или Reg S (non-US). Геоблокировка IP + KYC. Reg A+ требует SEC filing и значительных юридических расходов (порядка $50 000). EU (MiCA) — с декабря требуется whitepaper по формату MiCA. Офферинг через defi wrappers не снимает ответственность по тесту Howey.
Чек-лист для запуска ICO
- [ ] Выбор юрисдикции и юридической структуры
- [ ] Разработка токеномики (общая эмиссия, распределение, вестинг)
- [ ] Создание смарт-контрактов (Factory, Sale, Vesting, KYC Registry)
- [ ] Интеграция KYC/AML провайдера
- [ ] Аудит смарт-контрактов (Slither, Mythril, Echidna, ручной ревью)
- [ ] Разработка frontend (инвесторский и административный порталы)
- [ ] Настройка мониторинга (Tenderly, Grafana)
- [ ] Запуск в testnet и QA (3–4 недели)
- [ ] Публичный запуск и постоянная поддержка
Этапы развёртывания проекта
- Создание проекта в админке: загрузка метаданных, токеномики, конфигурации раунда.
- Деплой смарт-контрактов через Factory: одна транзакция создаёт Sale и Vesting.
- Настройка KYC: выбор провайдера, деплой реестра, привязка к сейлу.
- Проведение аудита: статический анализ, фаззинг, ручное ревью.
- Запуск сейла: открытие раунда, мониторинг, сбор средств.
Сроки и этапы
| Фаза | Содержание | Срок |
|---|---|---|
| Architecture & legal design | Регуляторная структура, архитектура контрактов | 3–4 нед |
| Smart contracts | Factory, Sale, Vesting, KYC Registry | 5–7 нед |
| Backend services | Onboarding, KYC интеграция, indexer | 6–8 нед |
| Frontend | Investor portal, project dashboard, admin | 6–10 нед |
| Security audit | Contracts + backend | 4–6 нед |
| Testnet & QA | 3–4 нед | |
| Launch & monitoring | 2 нед |
Полный цикл до production: 7–10 месяцев. Свяжитесь с нами для обсуждения вашего проекта — мы проведём предварительную оценку за один рабочий день. Получите консультацию по архитектуре ICO-платформы.







