超級賬本學習之二 了解Peer

2021-08-28 06:52:49 字數 3150 閱讀 6870

在進一步了解超級賬本以前,我覺得有必要了解一些基本概念,這些概念可以在官方文件中找到。其中,特別重要的是關於peer的一些理解。在這裡我嘗試去翻譯這篇文章,同時加入我自己的一些理解。

區塊鏈網路主要由一系列的peers節點組成。peers是整個網路的基礎,因為它是賬本和智慧型合約的載體。通過智慧型合約,賬本以不可篡改的方式記錄了交易的全過程。在區塊鏈中,智慧型合約和賬本被用來封裝整個網路中的共享處理工程和共享資訊。從這個角度來說,peer是了解超級賬本的乙個很好的入口。當然,超級賬本還有很多其他的重要概念,比如,賬本、智慧型合約、排序服務、通道、成員管理等。本文重點關注peers以及它與超級賬本網路中其他模組的關係與互動。

乙個區塊鏈網路由peer節點組成,每乙個peer節點持有乙個或多個賬本,以及乙個或多個智慧型合約。上圖中網路n由三個peer組成p1、p2和p3。每乙個peer都持有了乙個賬本例項l1;每個peer都通過鏈碼(智慧型合約)s1去訪問各自的賬本副本l1。(注意:從這裡我們知道,鏈碼是一段可以訪問賬本的**,賬本是通過鏈碼來訪問的!)

通過暴露的一系列介面,可以允許管理員和運用程式來建立、開啟、停止、重新配置甚至刪除peer。

進一步了解peer,我們可以說peer持有了賬本和鏈碼。但是,更準確的說應該是peer持有了賬本和鏈碼的例項。實際上,乙個peer可以持有多個賬本例項和多個碼例項。

正是由於peer持有了賬本和鏈碼,管理員和運用程式必須通過peer才能訪問這些資源。正因如此,peer被稱作超級賬本區塊鏈網路中最基礎的模組。當peer被建立的時候,裡面既沒有賬本也沒有鏈碼。後面將描述賬本是如何建立的以及鏈碼是如何安裝的。

乙個peer可以持有多個賬本,這對於增加系統設計的靈活性至關重要。當然,超級賬本也允許乙個賬本沒有鏈碼,但這種情況很少,因為這就意味著這個賬本不能被訪問和更改。通常情況,我們每個賬本至少有乙個鏈碼用於查詢或者更改賬本例項。實際上,不管使用者是否已經安裝了自己的鏈碼,每乙個peer都有一些系統鏈碼(據我所知,channel的建立以及lead節點的確定就是通過系統鏈碼來完成的)。這些不在本章節的討論之列。

此外,鏈碼數量與賬本數量也沒有必然關係。如下圖,賬本l1可以通過鏈碼s1和s2訪問;賬本l2可以通過s1和s3訪問。因此,s1可以同時訪問l1和l2(個人認為,這個特性在實際運用中非常重要,這使得跨系統的聯盟鏈成為可能。)

實際上,由於乙個peer可能持有多個賬本和多個鏈碼,超級賬本中通道(channel)就顯得尤為重要了。

orderer用來確保所有的peer持有的賬本同步更新。在上圖中,查詢賬本的步驟可以做如下的簡單描述:

peer根據提案呼叫相應的鏈碼執行。

鏈碼根據提案查詢對應的超級賬本。

至此,賬本查詢的完成。更新賬本還需要接下來完成下面的步驟:

orderer將交易發給網路內的所有節點(peers)。

peer根據交易呼叫相關的鏈碼完成賬本更新(此處圖中可能產生誤導,p1不可以直接呼叫l1,應該先呼叫s1,再通過s1呼叫l1)。

在明白了peer與賬本、鏈碼和通道的關係後,需要進一步了解多個組織怎麼樣組成乙個區塊鏈網路。通常情況,乙個區塊鏈網路由多個組織組成,而非乙個單一的組織(譯註:通俗的說,我們的區塊鏈很有可能是跨域(domain)的,很多時候我們需要多個域一起才能構成乙個完整的區塊鏈網路。因此,這裡的組織可以看成域的概念)。如下圖所示:

因此,整個區塊鏈網路應該是由它所包含的組織構成的。因為組織才是區塊鏈網路所需資源的擁有者和提供者。雖然我們這裡討論的是peer,但是實際上組織才是真正的區塊鏈的價值基礎。因此,如果沒有有價值的組織,那麼區塊鏈網路也就失去了存在的意義。區塊鏈網路的規模與其擁有的有價值的組織有直接的正相關關係(個人覺得,這才是超級賬本的真正實際意義所在)。

從上圖可以看出,沒有乙個中心化的資源存在。因此,整個區塊鏈網路並不依賴於某個單獨的組織。只要還存在有資源價值的組織,整個區塊鏈網路並不會依賴於某乙個組織的出現或者消失。這正是去中心化的核心所在。

為了與當前的區塊鏈網路互動,每乙個組織都需要乙個錨定節點(anchor peer)。如圖中的p1、p3、p5、p7和p8就是錨定節點。

通過特定的認證授權,每個peer都被賦予了乙個指定的數字簽名。數字簽名像乙個身份證,包含了當前peer的各種資訊。每個peer都擁有所在組織管理員簽發的數字簽名。

背書節點的確認依賴於背書策略,背書策略由鏈碼確定,它定義了乙個交易在被整個網路接受以前需要哪些組織背書。從業務上來說,當產生乙個交易的時候需要哪些組織確認才能讓交易生效,那麼這些組織就需要為交易背書。

背書節點(endorser peer)在回執中新增數字簽名,並且使用私鑰對整個payload域加密。因此,背書回執可以看作是該組織對該交易的乙個有效證明。

步驟二:打包

最後,打包後的交易會被分發到所有節點(peer)。每個peer節點會對打包的每乙個交易進行驗證,以確保每個交易都被相關節點背書,且背書回執是一致的。如果發現不一致,交易將會被審查並保留,不會被寫入到賬本中。如下圖所示:

Python初步了解之二

昨天我們了解了一下python的一些字元的輸出規則,以及變數的命名規則等等之類的.而今天我們就來加深一點的了解一下python的基本語法。在這之前我們就來說一下,python中變數的兩個分類 1.區域性變數 什麼是區域性變數?答 就是在部分 中有效,通俗一點就是說在一定的區域範圍內有效的變數。2.全...

ucos 學習之二

os initmisc void os ext volatile int32u ostime 使用volatile的關鍵字,是為了 volatile的作用 作為指令 關鍵字,確保本條指令不會因 編譯器的優化而省略,且要求每次直接讀值.簡單地說就是防止 編譯器對 進行優化.比如如下程式 xbyte 2...

PHP學習之二

mysql 資料庫函式庫 本函式庫共有 32 個函式 先看一下下面幾個 mysql close 關閉 mysql 伺服器連線。mysql connect 開啟 mysql 伺服器連線。mysql error 返回錯誤資訊。mysql query 送出乙個 query 字串。mysql select ...