錨節點是定義在一個已經加入到管道的組織的節點。該節點主要用於節點的發現。
在一個管道中,錨節點可以被這個管道的其他任何節點發現和通信。因此,每一個加入到管道內的組織都至少有一個錨節點,一個組織的節點可以通過查找錨節點來發現這個管道內的其他組織的所有節點。
當ordering服務要發送一個區塊到管道,這個塊就必須先發送到一個組織的leader 節點,之后由leader節點把這個塊通過gossip協議分發到這個組織的其他節點上。 也就是說,錨點是組織和組織之間的聯通橋梁。而leader節點是peer節點和order服務之間的通信橋梁。
根據當前的peer身份,獲取到當前peer所在的組織
確保所設置的錨點要在當前的channel內
使用錨點信息,構造joinchannel的消息格式
根據配置信息,獲取要更改組織下的所有錨點,這些錨點信息都放入joinchannel的消息中,用於gossip發送
對joinchannel消息中每個組織里的錨點:
-
遍歷這個組織下的錨點,首先進行host和port合法性檢測。如果當前節點就是錨點,就不做任何操作。之后,如果錨點不在當前組織內,需要判斷當前節點是否可以對外連接,也就是說是否設置了外部訪問端口
-
使用發現服務連接這個錨點,在連接的過程中,發送的消息是不需要節點簽名的。只需要保證連接的時候,需要知道連接節點的PKIid(PKIid的獲取是通過與遠程節點進行握手操作獲取到遠程節點的簽名信息和PKIid)

蝸牛講技術,滿滿的都是干貨,你值得關注。
