Перейти к основному содержанию
Change page

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

Последнее обновление страницы: 26 февраля 2026 г.

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

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

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

Multiaddr

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

/ip4/192.168.22.27/tcp/33000

Для узла Ethereum multiaddr содержит идентификатор узла (хэш его публичного ключа):

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

Enode

Enode — это способ идентификации узла Ethereum с использованием формата URL-адреса. Шестнадцатеричный идентификатор узла кодируется в части 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 (ENR)

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

Дополнительные материалы

Была ли эта статья полезной?