Skip to main content

Pуководство Ethereum Name Service (ENS)

  

Сервис имен Ethereum (ENS) - это распределенная, открытая и расширяемая система именования, основанная на блокчейн Ethereum.

Работа ENS заключается в сопоставлении удобочитаемых имен, таких как "ivavivanov.eth", с машиночитаемыми идентификаторами, такими как адреса Ethereum, другие адреса криптовалют, хэши контента и метаданные. ENS также поддерживает "обратное разрешение", что позволяет связывать метаданные, такие как канонические имена или описания интерфейса, с адресами Ethereum.

ENS преследует те же цели, что и DNS, Служба доменных имен в Интернете, но имеет значительно иную архитектуру благодаря возможностям и ограничениям, предоставляемым блокчейном Ethereum. Как и DNS, ENS работает с системой иерархических имен, разделенных точками, называемых доменами, при этом владелец домена имеет полный контроль над поддоменами.

Домены верхнего уровня, такие как". eth "и". test", принадлежат смарт-контрактам, называемым регистраторами, которые определяют правила, регулирующие распределение их поддоменов. Любой желающий может, следуя правилам, установленным этими контрактами с регистратором, получить право собственности на домен для собственного использования. А также поддерживает импорт в DNS-имена, уже принадлежащие пользователю для конечного использования.

Из-за иерархической природы ENS, обладатель домена любого уровня, может настроить поддомены -
по своему желанию для себя или других. Например, если Ивану Иванову принадлежит домен "ivanivanov.eth", он может создать поддомен для переводов крипто, например, "sendto.ivanivanov.beth" и настроить его по своему усмотрению.

ENS развернута в основной сети Ethereum и в нескольких тестовых сетях. Если вы используете библиотеку, такую как библиотека Javascript ensjs, или приложение конечного пользователя, оно автоматически обнаружит сеть, с которой вы взаимодействуете, и использует развертывание ENS в этой сети.

Вы можете попробовать это сделать сами прямо сейчас, используя ENS Manager App, или с помощью любого из множества приложений с поддержкой ENS на our homepage.

Архитектура ENS

ENS состоит из двух основных компонентов: реестр registry, и распознователи resolvers.

ens architecture

Реестр ENS состоит из единого смарт-контракта, который ведет список всех доменов и поддоменов и хранит три важных элемента информации о каждом:

  • Владелец домена

  • Распознаватель домена

  • Кэширование time-to-live всех записей в домене

Владельцем домена может быть либо внешняя учетная запись (пользователь), либо смарт-контракт. Регистратор - это просто смарт-контракт, который владеет доменом и выдает поддомены этого домена пользователям, которые следуют определенному в контракте набору правил.

Владельцы доменов в конечном реестре могут:

  • Установить распознаватель и TTL для домена

  • Передача права собственности на домен по другому адресу

  • Изменить владельца поддоменов

Реестр ENS нарочито прост и существует только для сопоставления имени с определителем, ответственным за него.

Распознаватели отвечают за фактический процесс преобразования имен в адреса. Любой контракт, реализующий соответствующие стандарты, может выступать в качестве решающего в ENS. Реализации распознавателей общего назначения предлагаются для пользователей, чьи требования просты, например, для обслуживания редко изменяемого адреса для имени.

Каждый тип записи, адрес криптовалюты, хэш содержимого IPFS и т.д., определяет метод или методы, которые должен реализовать распознаватель, чтобы предоставлять записи такого рода. Новые типы записей могут быть определены в любое время с помощью процесса стандартизации EIP, без необходимости вносить изменения в реестр ENS или в существующие распознаватели для их поддержки.

Определение имени в ENS состоит из двух этапов: сначала узнать в реестре, какой распознаватель отвечает за имя, и затем, запросить у этого распознавателя ответ на ваш запрос.

code

В приведенном выше примере мы пытаемся найти адрес Ethereum, на который указывает "foo.eth". Во-первых, мы спрашиваем реестр, какой распознаватель отвечает за "food.eth". Затем мы запрашиваем у этого распознавателя адрес "foo.eth".

Namehash

Ограничения ресурсов в смарт-контрактах делают взаимодействие напрямую с удобочитаемыми именами неэффективным, поэтому ENS работает исключительно с 256-битными криптографическими хэшами фиксированной длины. Чтобы получить хэш из имени, сохраняя при этом его иерархические свойства, используется процесс, называемый Namehash. Например, хэш имени " Алиса.eth' - 0x787192fc5378cc32aa956ddfdedbf26b24e8d78e40109add0eea2c1a012c3dec; это представление имен, которое используется исключительно внутри ENS.

Namehash, или Хэш имени, -это рекурсивный процесс, который может генерировать уникальный хэш для любого допустимого доменного имени. Начиная с хэша имени любого домена - например, " ivanivanov.eth' - можно получить хэш имени любого поддомена - например, " iam.ivanivanov.eth' - без необходимости знать или обрабатывать исходное удобочитаемое имя. Именно это свойство позволяет ENS создавать иерархическую систему без необходимости иметь дело с внутренними текстовыми строками, читаемыми человеком.

Перед хэшированием с помощью хэша имен имена сначала нормализуются с помощью процесса, называемого нормализацией UTS-46. Это гарантирует, что имена в верхнем и нижнем регистре обрабатываются одинаково и что недопустимые символы запрещены. Все, что хэширует и разрешает имя, должно сначала нормализовать его, чтобы гарантировать, что все пользователи получат согласованное представление об ENS.

Для получения подробной информации о том, как работает хэш и нормализация имен, см. документацию разработчика по name processing.

Приступаем к Работе

ENS располагает документацией для различных аудиторий, включая разработчиков приложений и разработчиков контрактов, а также справочной документацией.

Я разработчик приложений и хочу добавлять и поддерживать свое приложение

Ознакомьтесь с руководством разработчика приложений, начиная с ENS, включающего ваше приложение. Вы можете выбрать одну из множества доступных библиотек ENS, чтобы начать работу с ENS

Я разработчик контрактов и хочу взаимодействовать с ENS из своего кода контракта

Ознакомьтесь с Руководством разработчика контрактов, начиная с Resolving Names On-chain. Вы также можете write your own resolver (чтобы настроить процесс поиска имен), или ваш собственный registrar (для настройки процесса регистрации новых имен).

Мне нужна справочная документация для ENS смарт-контрактов

Ознакомьтесь со ссылкой на API-интерфейс контракта. У нас есть справочная документация по основному контракту ENS, registry, для resolvers, и для часто используемых регистраторов, таких как Test registrar, reverse registrar, и .eth registrar.