Перейти к основному контенту
Change page

Сетевые адреса

Узлы Эфириума должны идентифицировать себя с помощью некоторой базовой информации для подключения к пирам. Чтобы любой потенциальный пир мог интерпретировать эту информацию, она передается в одном из трех стандартизированных форматов, которые может понять любой узел Эфириума: multiaddr, enode или Ethereum Node Records (ENR). ENR — это текущий стандарт для сетевых адресов Эфириума.

Предварительные требования

Для понимания этой страницы требуется некоторое понимание сетевого уровня Эфириума.

Multiaddr

Первоначальным форматом адреса узла Эфириума был «multiaddr» (сокращение от «multi-addresses»). Multiaddr — это универсальный формат, разработанный для одноранговых сетей. Адреса представлены в виде пар «ключ-значение», где ключи и значения разделены прямым слешем. Например, multiaddr для узла с IPv4-адресом 192.168.22.27, прослушивающего TCP-порт 33000, выглядит так:

/ip4/192.168.22.27/tcp/33000

Для узла Эфириума multiaddr содержит ID узла (хеш его открытого ключа):

/ip4/192.168.22.27/tcp/33000/p2p/5t7Nv7dG2d6ffbvAiewVsEwWweU3LdebSqX2y1bPrW8br

Enode

Enode — это способ идентификации узла Эфириума с использованием формата URL-адреса. Шестнадцатеричный ID узла кодируется в части имени пользователя URL-адреса, отделенной от хоста знаком @. Имя хоста может быть задано только как IP-адрес; DNS-имена не допускаются. Порт в разделе имени хоста — это прослушиваемый TCP-порт. Если порты TCP и UDP (обнаружения) различаются, порт UDP указывается в качестве параметра запроса «discport».

В следующем примере URL-адрес узла описывает узел с IP-адресом 10.3.58.6, TCP-портом 30303 и UDP-портом обнаружения 30301.

enode://6f8a80d14311c39f35f516fa664deaaaa13e85b2f7493f37f6144d86991ec012937307647bd3b9a82abe2974e1407241d54947bbb39763a4cac9f77166ad92a0@10.3.58.6:30303?discport=30301

Ethereum Node Records (ENR)

Ethereum Node Records (ENR) — это стандартизированный формат сетевых адресов в Эфириуме. Они заменяют multiaddr и enode. Они особенно полезны, поскольку обеспечивают более широкий обмен информацией между узлами. ENR содержит подпись, порядковый номер и поля, детализирующие схему идентификации, используемую для генерации и проверки подписей. ENR также может быть заполнен произвольными данными, организованными в виде пар «ключ-значение». Эти пары «ключ-значение» содержат IP-адрес узла и информацию о подпротоколах, которые узел может использовать. Клиенты консенсуса используют специальную структуру ENR (opens in a new tab) для идентификации загрузочных узлов (boot nodes), а также включают поле eth2, содержащее информацию о текущем форке Эфириума и подсети сплетен (gossip subnet) для аттестации (это подключает узел к определенному набору пиров, чьи аттестации агрегируются вместе).

Дополнительная литература