科普:以太坊中的網絡地址
編者按:本文來自Unitimes(ID:Uni-times)編者按:本文來自
二級標題
二級標題
多地址(Multiaddr)
二級標題
/ip4/127.0.0.1/udp/1234
多地址(Multiaddr), })。二進製表示也是相同的——有一個字節數組表示鍵,還有一個用於表示值。鍵可以通過協議表[2]從可讀形式映射為代碼形式。
enode
二級標題
enode://6f8a80d6ad92a0@10.3.58.6:30303?discport=30301
enode體係被用於表示URL。 enode://後面跟著一個十六進制編碼的節點ID。接下來,@符號後面表示的是主機,其必須為一個IP地址。主機後面列出了TCP端口,在我們的例子中為30303。若UDP和TCP的端口不同,UDP端口可通過在末尾添加discport參數來指定。
ENR
二級標題
二級標題
二級標題
最後我們來介紹ENR[4](以太坊節點記錄)。 ENR很有趣,原因在於其皆使用了前兩種類型(多地址和enode URL)的特性,使得它變得十分通用。 ENR的主要動機是允許轉發過程中攜帶更多的信息,因而引入了節點記錄。節點記錄是自證的,而且節點可通過簽名來鑑別身份。這些記錄被表示為一個RLP列表[5]——此處我不會進行詳細介紹,但稍微提及一下,RLP是以太坊使用的一種序列化格式。
節點記錄包含了一個簽名,序列號與一個表明用於創建和驗證簽名的身份認證機制所需的字段。最後,記錄的其餘部分包含了任意鍵值對,這些鍵值對可包含諸如連接信息之類的東西。 EIP定義了一些具有預定義含義的鍵,如ip,其為4字節表示的節點IPv4地址。
該格式是面向未來的,新鍵即使在部分客戶端不能解析的情況下仍能被添加,以及新的身份認證機制可被添加以檢驗簽名。
Eth 2.0
二級標題
二級標題
二級標題
現在,讓我們來看看Eth2.0。在Eth2.0 之前,以太坊中從未使用過多地址,而其現在變得非常重要。為什麼?因為Eth2.0 使用libp2p,而libp2p 又使用多地址來識別節點。
那麼,我們該怎麼處理這種情況呢? Eth2.0 的P2P規範[6] 展示了2種方案:


