Hyperledger Fabric 私有数据(3)交易流程
step1. 當(dāng)客戶端提交一個調(diào)用鏈碼的功能(讀或?qū)懰接袛?shù)據(jù))提案請求到具有該私有數(shù)據(jù)集合操作權(quán)限的背書節(jié)點(diǎn),通過提案中的transient字段進(jìn)行發(fā)送。
step2. 背書節(jié)點(diǎn)模擬交易并將私有數(shù)據(jù)存儲到peer節(jié)點(diǎn)上的transient data store一個臨時的數(shù)據(jù)存儲區(qū),并基于私有數(shù)據(jù)定義的策略,通過Gossip協(xié)議發(fā)送到其他具有權(quán)限的節(jié)點(diǎn)。
step3. 背書節(jié)點(diǎn)將提案響應(yīng)發(fā)送給客戶端。
提案響應(yīng)包括已經(jīng)背書的讀寫集。讀寫集包括公共數(shù)據(jù)和私有數(shù)據(jù)的哈希值。發(fā)送給客戶端的不包括任何的私有數(shù)據(jù)。
step4. 客戶端應(yīng)用提交交易(包括帶有私有數(shù)據(jù)哈希值的提案響應(yīng))到排序節(jié)點(diǎn)。
- 帶有私有數(shù)據(jù)哈希值得交易將和正常交易一樣包括在區(qū)塊中。
- 帶有私有數(shù)據(jù)哈希值得區(qū)塊分發(fā)到所有節(jié)點(diǎn)上。
- 通道中所有的peer節(jié)點(diǎn)可以通過私有數(shù)據(jù)的哈希值對交易進(jìn)行驗(yàn)證而不需要知道任何的私有數(shù)據(jù)信息。
step5.
a. 在區(qū)塊提交時,具有權(quán)限的節(jié)點(diǎn)通過集合策略確定是否具有訪問私有數(shù)據(jù)的權(quán)限。
- 如果有權(quán)限,將會檢查本地的transient data store確定他們是否已經(jīng)在進(jìn)行鏈碼背書的時候接收到私有數(shù)據(jù)。
- 如果沒有,將試圖從其他具有權(quán)限的節(jié)點(diǎn)處拉取私有數(shù)據(jù),
b. 驗(yàn)證公共區(qū)塊中私有數(shù)據(jù)的哈希值并提交交易。
c. 當(dāng)驗(yàn)證與提交結(jié)束后,私有數(shù)據(jù)將移動到他們的私有數(shù)據(jù)庫和私有讀寫副本中。
d. 從transient data store中刪除私有數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的Hyperledger Fabric 私有数据(3)交易流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hyperledger Fabric 私
- 下一篇: 智能合约重构社会契约 (4)预言机基础说