節點是區塊鏈的通訊主體,是乙個邏輯概念。多個不同型別的節點可以執行在同一物理伺服器上。
客戶端必須連線到某乙個peer節點或者排序服務節點上,才能與區塊鏈網路進行通訊。客戶端向背書節點提交交易提案,當收集到足夠的背書後,向排序服務廣播交易,進行排序,生成區塊。
所有的peer節點都是記賬節點,負責驗證從排序服務節點區塊裡的交易,維護狀態資料和賬本的副本。部分節點會執行交易並對結果進行簽名背書,充當背書節點的角色。背書節點是動態的角色,是與具體鏈碼繫結的,每個鏈碼在例項化的時候都會設定背書策略(fabric1.4中的背書策略),指定哪些節點對交易背書才是有效的。也只有在應用程式向其發起交易背書請求時才是背書節點,其它時候就是普通的記賬節點,只負責驗證交易並記賬。
peer節點還有一種角色是主節點,代表的是和排序服務節點通訊的節點,負責從排序服務節點處獲取最新的區塊並在組織內部同步。可以強制設定成主節點,也可以動態選舉產生。
許多分布式區塊鏈,如以太坊(ethereum)和位元幣(bitcoin),都是非許可鏈的,這意味著任何節點都可以參與共識過程,在共識過程中,交易被排序並**成區塊。因為這個事實,這些系統依靠概率共識演算法最終保證賬本一致性高的概率,但仍容易受到不同的賬本(有時也稱為乙個賬本「分叉」),在網路中不同的參與者對於交易順序有不同的觀點。
hyperledger fabric 的工作方式不同。它有一種稱為排序節點的節點使交易有序,並與其他排序節點一起形成乙個排序服務。因為 fabric 的設計依賴於確定性的共識演算法,所以 peer 節點所驗證的區塊都是最終的和正確的。賬本不會像其他分布式的以及無需許可的區塊鏈中那樣產生分叉。
除了促進確定性之外,排序節點還將鏈碼執行的背書(發生在節點)與排序分離,這在效能和可伸縮性方面給 fabric 提供了優勢,消除了由同乙個節點執行和排序時可能出現的瓶頸。
排序服務節點接收包含背書簽名的交易,對未打包的交易排序生成區塊,廣播給peer節點。排序服務提供的是原子廣播,保證同乙個鏈上的節點接收到相同的訊息,並且具有相同的邏輯順序。
排序服務的多通道實現了多鏈的資料隔離,保證只有同乙個鏈的peer節點才能訪問鏈上的資料,保護使用者資料的隱私。
ca節點是證書頒發機構,由伺服器和客戶端元件組成。ca節點接收客戶端的註冊申請,返回註冊密碼用於使用者登入,以便獲取身份證書。在區塊鏈網路上所有的操作都會驗證使用者的身份。
共識機制可以分為以下三個階段。
應用程式根據背書策略的要求選擇背書節點,給這些節點傳送需要執行的交易提案。背書節點呼叫鏈碼執行這些交易提案,交易是模擬執行的,並不真正提交資料到賬本中。執行完成以後呼叫交易背書系統鏈碼escc對模擬執行結果進行簽名背書。
排序階段接收已經簽名背書的交易,確定交易的數量和順序,將排好序的交易打包到區塊中,廣播給peer節點進行驗證。通常,從效率方面考慮,排序服務不會輸出單個交易作為乙個區塊,而是將多個交易打包成乙個區塊。
peer節點驗證接收到區塊裡包含的交易的有效性,包括背書策略驗證及雙花檢測。可以將驗證錯誤分為兩大類:語法錯誤和邏輯錯誤。語法錯誤包括無效輸入、未驗證的簽名以及重複的交易(雙花攻擊),重複的交易應該丟棄。第二類錯誤比較複雜,如會導致雙花或者mvcc失敗的交易,這需要定義策略來決定程式是繼續執行還是終止。預設的交易驗證系統鏈碼vscc只支援背書策略的驗證。
solo、apache kafka、etcd raft
POW共識機制
因為記賬有一定的獎勵和手續費,所以自然會有競爭,pow proof of work 工作量證明共識機制就是用來在 誰有權記賬 這一問題上達成共識。簡單來說,就是爭奪記賬權的多方通過付出計算資源解決乙個數學難題,誰先解決誰就獲得記賬權,這個爭奪的過程就是 挖礦 也是位元幣發行的過程。具體的計算問題是,...
DPOS共識機制
鏈客,有問必答!eos在第一版 中使用的dpos共識機制,而在新一版的白書中,對共識機制進行了改進,使用bft dpos混合共識機制。使出塊速度從原來的3秒變為0.5秒,tps顯著提高,達到測試3590次 秒。eos第一版共識機制dpos eos現在系統執行的鏈用的共識機制是第一版 的,也就是純dp...
DPOS共識機制
鏈客,有問必答!eos在第一版 中使用的dpos共識機制,而在新一版的白書中,對共識機制進行了改進,使用bft dpos混合共識機制。使出塊速度從原來的3秒變為0.5秒,tps顯著提高,達到測試3590次 秒。eos第一版共識機制dpos eos現在系統執行的鏈用的共識機制是第一版 的,也就是純dp...