Мы часто сталкиваемся с запросами настройки доменных имён в dApp. На первый взгляд, рутина, пока не упираешься в ограничения односетевых резолверов. SpaceID — это naming protocol, обеспечивающий мультичейн домены для BNB Chain и Arbitrum, решающий проблему унификации: один SDK для нескольких цепочек. Но интеграция имеет подводные камни — от несовместимости ABI до игнорирования reverse resolution. В этой статье мы делимся опытом интеграции на реальных проектах.
Недавно к нам обратилась команда DeFi-платформы на Base. Им требовалась поддержка мультичейн доменов .bnb для пользователей, пришедших с BNB Chain, и .arb для Arbitrum. После аудита архитектуры мы добавили мультичейн-резолвинг через sidjs, что сократило время идентификации пользователей с 10 секунд до 200 мс — прирост в 50 раз. Дополнительно внедрили кэширование DNS-записей с TTL в час, что снизило нагрузку на RPC на 90%. Подробнее об архитектуре sidjs читайте в официальной документации.
Почему SpaceID быстрее ENS для BNB-проектов?
ENS доминирует в Ethereum, но его поддержка в BNB Chain — через кросс-чейн мосты с задержками в минуты. SpaceID предлагает нативные .bnb и .arb TLD с прямым резолвингом внутри сети. Для проекта на PancakeSwap или других BNB-ориентированных dApp это снижает latency и gas cost. Сравните: ENS-резолвинг .eth имени на BNB Chain требует вызова контракта в L1 через мост (ожидание до 2 минут). SpaceID — локальный RPC-запрос (менее 1 секунды). Разница в производительности — до 100x для частых запросов. Наши замеры показали экономию газа до 30% благодаря кэшированию записей. Что при типичной нагрузке в 1000 транзакций в день даёт экономию более 0.1 ETH в месяц. Средняя стоимость регистрации домена .bnb на BNB Chain составляет около 0.01 ETH.
Как интегрировать SpaceID без ошибок?
Ошибка №1: неверный sidAddress. Адреса отличаются от сети к сети — используйте getSidAddress(chainId) из пакета @siddomains/sidjs. Пример корректной инициализации:
import { SID, getSidAddress } from "@siddomains/sidjs"; import { ethers } from "ethers"; // BNB Chain const bnbProvider = new ethers.JsonRpcProvider("https://bsc-dataseed.binance.org"); const sidBnb = new SID({ provider: bnbProvider, sidAddress: getSidAddress("56") }); // Arbitrum const arbProvider = new ethers.JsonRpcProvider("https://arb1.arbitrum.io/rpc"); const sidArb = new SID({ provider: arbProvider, sidAddress: getSidAddress("42161") }); // Forward resolution const address = await sidBnb.name("alice.bnb").getAddress(); // Reverse resolution const name = await sidBnb.getName("0x742d35..."); // Возвращает { name: "alice.bnb" } Ошибка №2: игнорирование reverse resolution. Если в dApp нужно отображать имя пользователя по его кошельку — getName() обязателен. Без него UX страдает — пользователь видит только хэш. Мы добавили кэширование записей в localStorage с TTL 1 час: повторные запросы не бьют по RPC, экономия — до 90% лишних вызовов. SpaceID SDK предоставляет все необходимые методы.
Пошаговая инструкция интеграции:
- Установите SDK:
npm install @siddomains/sidjs ethers. - Инициализируйте SID для каждой целевой сети с правильным
sidAddress. - Реализуйте forward resolution:
sid.name(name).getAddress(). - Добавьте reverse resolution:
sid.getName(address)для отображения пользовательского имени. - Кэшируйте результаты в localStorage или IndexedDB с TTL.
- Обработайте edge-кейсы: несуществующее имя, недоступная сеть — используйте fallback.
Типичные ошибки и их решение
| Ошибка | Причина | Решение |
|---|---|---|
| Неверный sidAddress | Разные адреса в сетях | getSidAddress(chainId) |
| Отсутствие reverse resolution | Только forward | Добавить getName() |
| Необработанные ошибки | Сеть недоступна | Try-catch с fallback |
| Отсутствие кэширования | Частые RPC-запросы | LocalStorage с TTL 30-60 мин |
Что входит в работу по интеграции SpaceID?
Мы предоставляем:
- Аудит существующей архитектуры — выявление точек интеграции (логин, профиль, отображение баланса).
- Подключение SDK — настройка @siddomains/sidjs с конфигурацией поддерживаемых сетей.
- Реализация forward- и reverse-resolution с обработкой edge-кейсов (незарегистрированное имя, неподдерживаемый TLD).
- Газовая оптимизация — кэширование DNS-записей на клиенте, батчинг RPC-вызовов, минимизация eth_call.
- Документация и обучение — README с примерами использования, Postman-коллекция для тестов.
SpaceID или ENS: критерии выбора
| Критерий | SpaceID | ENS |
|---|---|---|
| Основная сеть | BNB Chain, Arbitrum | Ethereum, L2 (через CCIP) |
| TLD | .bnb, .arb | .eth |
| SDK | Единый sidjs | Множество библиотек (ethers, web3.py) |
| Задержка резолвинга | < 1 сек (локально) | 10-60 сек (через мост для не-Ethereum) |
| Комьюнити | Растущее, ориентированное на BNB | Крупнейшее в Web3 |
Выбор зависит от аудитории dApp. Если 80% пользователей — из BNB Chain, SpaceID — однозначный выбор.
Сроки и стоимость
Базовая интеграция (один TLD, forward resolution) занимает 1-2 рабочих дня. Расширенная (мультичейн, reverse resolution, кэширование) — 3-4 дня. Стоимость рассчитывается индивидуально, исходя из сложности архитектуры вашего dApp. Наш опыт включает 15+ интеграций naming-протоколов.
Свяжитесь с нами для оценки интеграции SpaceID в ваш проект. Закажите интеграцию — мы оценим объём работ и предложим оптимальное решение.







