以太坊p2p模組的dial 以太坊原始碼學習

2021-10-24 06:20:42 字數 806 閱讀 2731

dial.go是負責和peer建立連線關係的地方,主要是實現

type dialer inte***ce 

// dialstate schedules dials and discovery lookups.

// it get's a chance to compute new tasks on every iteration

// of the main loop in server.run.

type dialstate struct

其中最複雜的是newtasks,是建立新的連線,從test**中可以看出,

要在指定的最大連線數(peers)基之上去建立新的連線

lookupbuf // current discovery lookup results

主要是在結束taskdone的時候新增已經發現的?

在不超過maxdyndials的情況下,首先減去peers已有的連線,然後是static中的任務,

如果過還有富餘,富餘空間中最多一半(根據實現,可能為0)用readrandomnodes填充,剩下的

就用lookupbuf來填充,如果lookbuf中沒有有效的任務,那麼就建立乙個discovertask,

如果還有空間,就建立乙個waitexpiretask

總之newtasks就是在盡可能的情況下,多建立任務.為server.run scheduletasks時服務,

保證其能夠連線到盡可能多的節點.如果節點數量不夠的情況下,還沒有dialtask就建立discovertask,否則就建立乙個waitexpiretask

以太坊p2p模組 以太坊原始碼學習

p2p模組對外暴露了server關鍵結構,幫助上層管理複雜的p2p網路,使其集中於protocol的實現,只關注於資料的傳輸.server使用discover模組,在指定的udp埠管理網路中結點的發現以及維護,discover模組能夠直接和臨近結點交換各自已知結點資訊,從而不斷的更新結點網路.ser...

以太坊 P2P網路

1.chord 概念 chord是什麼 chord是乙個演算法,也是乙個協議。作為乙個演算法,chord可以從數學的角度嚴格證明其正確性和收斂性 作為乙個協議,chord詳細定義了每個環節的訊息型別。chord還可以被作為乙個一致性雜湊 分布式雜湊 dht 的實現。覆蓋網路 overlaynetwo...

以太坊系列之六 p2p模組 以太坊原始碼學習

p2p模組對外暴露了server關鍵結構,幫助上層管理複雜的p2p網路,使其集中於protocol的實現,只關注於資料的傳輸.server使用discover模組,在指定的udp埠管理網路中結點的發現以及維護,discover模組能夠直接和臨近結點交換各自已知結點資訊,從而不斷的更新結點網路.ser...