Мережеві адреси
Вузли Етеріуму повинні ідентифікувати себе за допомогою певної базової інформації, щоб підключатися до пірів. Щоб гарантувати, що будь-який потенційний пір зможе інтерпретувати цю інформацію, вона передається в одному з трьох стандартизованих форматів, які може зрозуміти будь-який вузол Етеріуму: 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
Enode — це спосіб ідентифікації вузла Етеріуму за допомогою формату URL-адреси. Шістнадцятковий ідентифікатор вузла (node-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, що містить інформацію про поточний форк Етеріуму та підмережу пліток атестації (attestation gossip subnet) (це підключає вузол до певного набору пірів, чиї атестації агрегуються разом).