2017-03-03 79 views
1

據我所知,所有的同伴都以虛擬機的形式存儲在結構中。每個對等存儲所有區塊鏈歷史記錄。Hyperledger v0.6解剖

當我想建立一個應用程序,我應該提供一個界面,用戶可以做出改變,這種改變將被保存在他的同行和共識網絡將將更改添加到所有同級。

它應該是這樣的https://www.altoros.com/blog/wp-content/uploads/2017/02/Hyperledger-Webinar-Thomas-Marckx-architecture.jpg? 那麼,每個應用程序的用戶發送請求到應用程序(後端API)和應用程序發送請求到結構(用戶的對等)?

這是我的理解,請糾正我,如果我錯了或確認。

回答

3

1)據我所知,所有的同伴都以虛擬機的結構存儲。

我不明白這個說法。讓我給你一個總結。

Hyperledger結構是連接對等體的網絡。在v0.6中,對等方可以驗證(VP)或不驗證(NVP)。 VP擁有區塊鍊形式的世界狀態和交易歷史的完整副本。 NVP僅僅是交易和查詢VP的渠道。事務可以看到未提交的狀態,因此可以自行建立一系列的塊。查詢只能看到已提交的狀態(事務絕對在塊中的世界狀態)。這引入了事務和世界狀態變化之間的滯後現象。請注意,可見性已更改iun v1結構。

2)每個對等存儲所有區塊鏈歷史記錄。

每個驗證對等存儲所有區塊鏈歷史和所有世界狀態。

3)當我想建立一個應用程序,我應該提供一個界面,用戶可以做出改變,這種改變將被保存在他的同行和共識網絡將將更改添加到所有同級。

應用程序必須建立在一個或多個智能合約的上下文中。智能合約(也稱爲鏈碼)具有建築師/開發人員爲交易和查詢處理創建的API。 API的選擇是靈活的,無論適用於您的應用程序。 chaincode可以訪問世界的狀態,所以它很像一個servelet。

當您從應用程序發送的交易,對等將其打包並解僱所有的副總裁,他們將執行的共識。如果通過,交易將全部執行。如果其中一個節點發生錯誤,則該事務失敗。

有一個在V0.6一個特點,一個失敗的交易不被寫入區塊的交易陣列。如果事務沒有發出事件,它也不會寫入塊的事件數組中。這導致它或多或少消失。我不確定是否有排斥事件發生,但我懷疑不是。出於這個原因,我總是從我的物聯網合同平臺(https://github.com/ibm-watson-iot/blockchain-samples/tree/master/contracts/platform)發出成功或失敗事件,以便我的交易始終在鏈中留下蹤跡。

請注意,fabric v1將解決此問題。

4)它應該是這樣的https://www.altoros.com/blog/wp-content/uploads/2017/02/Hyperledger-Webinar-Thomas-Marckx-architecture.jpg?那麼,每個應用程序的用戶嚮應用程序(後端API)發送請求並向織物(用戶的對等)發送應用程序發送請求? 這是我的理解,如果我錯了或確認,請糾正我。

的圖是否與概括很自由,但什麼是有本質上是正確的。每個對等體都在v0.6中部署自己的每個鏈式代碼副本。這是自動發生的,因爲部署也經歷了共識並且是一個像其他任何事務一樣的事務因此,部署在所有同行中基本上同時發生。 Chackode運行在碼頭集裝箱中(或者在對等進程中,但忽略了你自己的鏈碼),並通過代理/存根安排(稱爲墊片)通過gRPC與同行的碼頭集裝箱進行通信。

--- ---注

織物V1被完全改變這個協議中,如chaincode將必須從它是要被訪問任何對等體被明確地安裝。 V1擁有私人渠道(想子鏈)是可見的,以特定的參與者(通過他們的俘虜的同齡人,通常是背書或訂貨,如果我的理解是到目前爲止)等等chaincode將被部署到被參與者之間開闢了通道,但如果鏈碼已經安裝在要使用的對等上,則部署只能成功。

正是從這個很明顯,會有很多可能的拓撲結構。每個參與者可以在每個對等體上擁有許多通道的同伴,但並非全部都具有相同的參與者。一些參與者可能選擇不具有對等,而使用一個在雲中或在其他(大概可信)參與者的前提同行。等等。

+0

通過「據我所知,所有的同行都存儲在織物VM」我的意思是所有的同齡人存儲一個一體機,現在我明白了同齡人可以存儲一個相同的機器,但也可以在不同的機器上 – Romper

+0

沒錯。同行者在碼頭集裝箱中運行,但根據定義,它們通常屬於參與者,因此在不同的機器上運行 - 虛擬或物理。 – Kim