Перейти до основного вмісту
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 містить ідентифікатор вузла (node-ID) (хеш його відкритого ключа):

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

Enode — це спосіб ідентифікації вузла Етеріуму з використанням формату URL-адреси. Шістнадцятковий ідентифікатор вузла (node-ID) кодується в частині імені користувача URL-адреси, відокремленій від хоста знаком @. Специфікація визначає ім'я хоста лише як IP-адресу; однак більшість клієнтів (таких як Geth та Бесу) також приймають тут DNS-ім'я та перетворюють його на IP-адресу під час запуску. Це специфічна поведінка клієнта, а не частина стандарту. Порт у розділі імені хоста — це 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 (відкривається в новій вкладці) для ідентифікації завантажувальних вузлів (boot nodes), а також включають поле eth2, що містить інформацію про поточний форк Етеріуму та підмережу пліток атестації (attestation gossip subnet) (це підключає вузол до певного набору пірів, чиї атестації агрегуються разом).

Подальше читання