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

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Разработка кастомного доменного сервиса на блокчейне
Сложный
от 2 недель до 3 месяцев
Часто задаваемые вопросы

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

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

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

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

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

Когда стандартных .eth или .bnb недостаточно — нужен собственный TLD для экосистемы. .defi, .game, .dao, брендированный суффикс типа .uniswap — это не просто название, а точка входа в идентичность экосистемы. Кастомный domain service даёт полный контроль: ценообразование, правила регистрации, интеграция с governance, специфические resolver записи.

Архитектурный выбор: форк ENS vs с нуля

Форк ENS — правильное решение в 90% случаев. ENS прошёл аудит, имеет готовые субграфы, интеграции с кошельками, и ethers.js его понимает нативно. Ключевые части которые нужно изменить:

Registry — практически без изменений. Логика владения нодами универсальна.

BaseRegistrar — TLD изменить на свой, grace period и expiry policy — под нужды проекта.

ETHRegistrarController — переименовать, изменить pricing, возможно убрать commit-reveal (если не нужна защита от front-running).

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];
    }
}

Кастомная pricing логика

Форк ENS использует линейную или ступенчатую цену по длине имени. Для кастомного сервиса можно добавить:

Dynamic pricing по demand: цена растёт при высоком спросе (как bonding curve).

Premium для коротких имён на старте: первые 30 дней после запуска — 10x цена, потом нормализуется. Предотвращает скупку коротких имён ботами.

Whitelist-фаза: до публичной продажи — регистрация только для holders определённого NFT или токена.

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;
    }
}

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);
    }
}

Revenue модель

Варианты монетизации:

Registration fees — основной источник. 100% в treasury или разделяется с stakers.

Renewal fees — ежегодно. Даёт предсказуемый поток, мотивирует хранить активными популярные имена.

Secondary market royalty — 2-5% от вторичных продаж (ERC-2981). Пассивный доход от NFT торговли.

Premium auctions — короткие имена (1-3 символа) продаются через Vickrey auction или Dutch auction вместо фиксированной цены.

Кошелёк и wallet интеграция

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

Rainbow kit, WalletConnect: поддерживают любой EVM-совместимый ENS-fork если передать правильный registry адрес.

Universal Resolver: ENS L1 resolver может быть настроен как gateway для кастомных namespace через CCIP-Read. Это позволяет MetaMask и другим кошелькам резолвить кастомные имена без изменений на их стороне.

Собственное browser extension: для максимального контроля — но высокий порог adoption.

Стек

Компонент Технология
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 контракт

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

Фаза 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 недель.