Разработка кастомного доменного сервиса на блокчейне

Стандартные `.eth` или `.bnb` не всегда закрывают потребности экосистемы. Игровой проект требует хранения координат персонажа в resolver, DeFi-протоколу — динамическое ценообразование в зависимости от ликвидности, а корпоративному namespace — управление через DAO. Собственный TLD даёт полный контрол

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

Часто задаваемые вопросы

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

Стандартные .eth или .bnb не всегда закрывают потребности экосистемы. Игровой проект требует хранения координат персонажа в resolver, DeFi-протоколу — динамическое ценообразование в зависимости от ликвидности, а корпоративному namespace — управление через DAO. Собственный TLD даёт полный контроль: ценообразование, правила регистрации, governance, специфические record type. Типичная боль — регистратор не учитывает контекст: цены не гибкие, resolver не хранит кастомные данные, управление централизовано. Мы решаем это кастомным смарт-контрактом с модульной архитектурой. Использование готового форка ENS сокращает затраты на разработку на 60% и снижает риски. Результат — production-ready сервис, который кошельки резолвят через CCIP-Read, а сообщество управляет через governance.

Как форк ENS упрощает создание доменного сервиса?

Форк ENS сокращает время разработки на 60% по сравнению с написанием контрактов с нуля. ENS прошёл аудит, имеет готовые субграфы, интеграции с кошельками, и ethers.js его понимает нативно. Ключевые части которые нужно изменить: Registry — практически без изменений. BaseRegistrar — TLD изменить на свой, grace period и expiry policy — под нужды проекта. ETHRegistrarController — pricing и commit-reveal. PublicResolver — добавить кастомные record types. NameWrapper — опционально, добавляет ERC-1155 субдомены и fuses.

Кастомные resolver записи

Для gaming домена нужны специфические данные:

// Расширяем PublicResolver кастомными полями contract GamingResolver is PublicResolver { // node => game_id => in-game address mapping(bytes32 => mapping(uint256 => string)) private _gameAddresses; // node => character stats (IPFS hash) mapping(bytes32 => string) private _characterData; event GameAddressChanged(bytes32 indexed node, uint256 gameId, string gameAddress); function setGameAddress( bytes32 node, uint256 gameId, string calldata gameAddress ) external authorised(node) { _gameAddresses[node][gameId] = gameAddress; emit GameAddressChanged(node, gameId, gameAddress); } function gameAddress(bytes32 node, uint256 gameId) external view returns (string memory) { return _gameAddresses[node][gameId]; } } 

Почему динамическое ценообразование выгодно?

Dynamic pricing через bonding curve лучше фиксированной цены: объём регистраций вырастает на 30% за счёт снижения барьера для длинных имён. Fork ENS использует линейную или ступенчатую цену по длине имени. Для кастомного сервиса можно добавить premium для коротких имён на старте: первые 30 дней после запуска — 10x цена, потом нормализуется. Это предотвращает скупку коротких имён ботами.

contract CustomPriceOracle { uint256 public constant LAUNCH_PREMIUM_PERIOD = 30 days; uint256 public launchTime; // Premium множитель: снижается с 10x до 1x линейно за 30 дней function getPremiumMultiplier() public view returns (uint256) { if (block.timestamp >= launchTime + LAUNCH_PREMIUM_PERIOD) return 1e18; uint256 elapsed = block.timestamp - launchTime; uint256 premium = 10e18 - (9e18 * elapsed / LAUNCH_PREMIUM_PERIOD); return premium; } function price(string calldata name, uint256 duration) external view returns (uint256) { uint256 basePrice = getBasePrice(name, duration); return basePrice * getPremiumMultiplier() / 1e18; } } 

Короткие имена (1-3 символа) можно продавать через Vickrey auction или Dutch auction вместо фиксированной цены. Контракт аукциона блокирует депозит, а после завершения передаёт имя победителю и возвращает ставки остальным. Это увеличивает доход от дефицитных имён и предотвращает скупку ботами.

Интеграция и управление

Governance интеграция

Для DAO-управляемого namespace: изменение pricing, добавление новых TLD, reserved names — всё через governance proposal.

contract DomainGovernor { ICustomRegistry public registry; ICustomPriceOracle public priceOracle; // Только через governance timelock function updatePrices(uint256[] calldata newPrices) external onlyTimelock { priceOracle.updatePrices(newPrices); } function reserveName(string calldata name) external onlyTimelock { bytes32 label = keccak256(bytes(name)); registry.setSubnodeOwner(BASE_NODE, label, address(this)); } function setTLDManager(address manager) external onlyTimelock { registry.setOwner(ROOT_NODE, manager); } } 

Интеграция с кошельками

Проблема кастомных доменов: кошельки не знают о них по умолчанию. Решения:

  • Rainbow kit, WalletConnect поддерживают любой EVM-совместимый ENS-fork если передать правильный registry адрес.
  • Universal Resolver: ENS L1 resolver может быть настроен как gateway для кастомных namespace через CCIP-Read. Это позволяет MetaMask и другим кошелькам резолвить кастомные имена без изменений на их стороне.
  • Собственное browser extension — для максимального контроля, но требует усилий по adoption.

Монетизация и доходность

Revenue модель

  • Registration fees — основной источник. 100% в treasury или разделяется с stakers.
  • Renewal fees — ежегодно. Даёт предсказуемый поток, мотивирует хранить активными популярные имена.
  • Secondary market royalty — 2-5% от вторичных продаж (ERC-2981). Пассивный доход от NFT торговли.
  • Premium auctions — короткие имена (1-3 символа) продаются через аукцион.

Технические аспекты

Стек технологий

Компонент Технология
Contracts Solidity 0.8.x + ENS fork + OpenZeppelin
Subgraph The Graph (AssemblyScript)
Resolution SDK TypeScript, fork ENS.js
Frontend React + wagmi + viem
CCIP-Read gateway Node.js + Express
Auction механизм Vickrey или Dutch auction контракт

Сравнение подходов: ENS Fork vs с нуля

Критерий ENS Fork С нуля
Время разработки 4-6 недель 12-16 недель
Аудит безопасности Заложен из коробки Требуется полный аудит
Совместимость с кошельками Нативная через CCIP-Read Требуется SDK
Gas оптимизация Уже оптимизировано Нужна настройка
Риски Низкие Высокие

Сроки разработки

Подробный план фаз

Фаза 1 — Core contracts (4-6 нед): Registry + Resolver + BaseRegistrar + PriceOracle + Controller. Адаптация ENS форка.

Фаза 2 — Extended features (2-4 нед): кастомные resolver типы, governance интеграция, premium auction.

Фаза 3 — Infrastructure (2-3 нед): The Graph subgraph, resolution SDK, CCIP-Read gateway.

Фаза 4 — Frontend (2-4 нед): registration UI, domain management, marketplace интеграция.

Аудит (2-4 нед): обязателен, регистратор принимает ETH/токены.

Полный production-ready сервис: 3-4 месяца. MVP с базовой регистрацией: 6-8 недель.

Что входит в работу

  • Аудит контрактов сторонней компанией (Certora, Trail of Bits по желанию)
  • Документация смарт-контрактов на русском и английском
  • Исходный код в приватном репозитории с лицензией MIT
  • Развёртывание в тестовой и основной сети (Ethereum, Polygon, Arbitrum, Base)
  • Настройка CCIP-Read gateway для совместимости с MetaMask и WalletConnect
  • Интеграция с The Graph для отображения доменов в каталогах
  • Передача прав управления через multisig (Gnosis Safe) — без single point of failure
  • Поддержка 3 месяца после запуска (фиксы багов, gas optimization)
  • Обучение команды: воркшоп по администрированию domain service

Дополнительную информацию можно найти в ENS documentation.

Свяжитесь с нами для консультации — оценим ваш проект, подготовим коммерческое предложение и roadmap за 1 день. Получите консультацию уже сегодня. Гарантируем прозрачность и полную документацию.