Разработка 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-платформы.







