[英]Read (query) transaction flow in Hyperledger Fabric
我試圖了解 Hyperledger Fabric 中的“查詢”交易流程。 我理解 Fabric 中的“寫入”流程,因為它有很好的文檔記錄。 但是,當涉及讀取/查詢事務時,事情就不是那么清楚了。
這是我到目前為止所理解的:
我不太確定這之后的流程。 寫交易是可以理解的:訂單在執行一些檢查后,將創建一個塊並將該塊傳播到連接到相應通道的所有對等點。 在對區塊中的所有交易進行驗證后,所有對等方都會將區塊附加到賬本中,這實質上更新了賬本。
但是讀事務呢? 訂購者在收到讀取交易后會返回什么? 以后會怎樣?
任何幫助或指示將不勝感激。
提前致謝。
您可能想查看https://github.com/hyperledger/fabric-samples/blob/release/fabcar/query.js ,其中演示了如何使用 Node SDK 進行查詢。 您會注意到它使用 SDK 提供的便捷方法https://fabric-sdk-node.github.io/Channel.html#queryByChaincode__anchor來幫助方便查詢。
根據您在帖子中概述的流程,步驟 1 和 2 是正確的。
此外,用於查詢交易的鏈碼函數通常會使用https://godoc.org/github.com/hyperledger/fabric/core/chaincode/shim#Success輔助函數來實際返回查詢結果。 在我上面發布的示例中, https://github.com/hyperledger/fabric-samples/blob/release/fabcar/query.js#L51調用https://github.com/hyperledger/fabric-samples/blob/release /chaincode/fabcar/fabcar.go#L135 。
無需將查詢交易的響應發送給排序者,但只要滿足背書策略即可。 感謝 Dave Enyeart 提供以下內容:
查詢是一個鏈碼調用,它讀取賬本當前狀態但不寫入賬本。 鏈碼函數可以查詢賬本上的某些鍵,也可以查詢賬本上的一組鍵。 由於查詢不會更改分類帳狀態,因此客戶端應用程序通常不會提交這些只讀事務以進行排序、驗證和提交。 雖然不典型,但客戶端應用程序可以選擇提交只讀事務以進行排序、驗證和提交,例如,如果客戶端想要在賬本鏈上提供可審計的證據,證明它在某個時間點了解特定的賬本狀態. Peers 將驗證只讀交易並將其添加到賬本鏈,但不會更新賬本當前狀態。
這似乎與您在回答此問題時發布的內容相矛盾: 超級賬本中的角色(讀+寫)
您在此處描述的行為是有道理的,而上述答案中的行為似乎完全被破壞了。 然而,似乎不允許頻道上的讀者執行調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.