區(qū)塊頭部
這個部分包含三個字段如下:
1.區(qū)塊編號:編號從0開始,第0號區(qū)塊就是創(chuàng)世區(qū)塊摘仅,每增加一個新區(qū)塊標號+1靶庙。
2.當前區(qū)塊哈希:當前區(qū)塊中包含所有交易的哈希值。
3.前一個區(qū)塊頭的哈希值娃属。
區(qū)塊數(shù)據(jù)
這部分包含了一個有序的交易列表掏击,區(qū)塊數(shù)據(jù)是在排序服務(wù)創(chuàng)建區(qū)塊時被寫入的(Orderer節(jié)點)
區(qū)塊元數(shù)據(jù)
這部分包含了區(qū)塊被寫入的時間,還有區(qū)塊寫入者的證書须床,公鑰以及簽名铐料。隨后渐裂,區(qū)塊的提交者也會為每一筆交易添加一個有效或者無效的標記豺旬,但由于這一信息與區(qū)塊同時產(chǎn)生,所以它不會被包含在哈希中柒凉。
交易
交易記錄了世界狀態(tài)發(fā)生的更新族阅。讓我們來詳細了解一下這種把交易包含在區(qū)塊中的區(qū)塊數(shù)據(jù)結(jié)構(gòu)。
1.交易頭部:記錄了交易里的一些重要的元數(shù)據(jù)鲤遥,比如鏈碼的名字以及版本。
2.交易簽名:它包含了一個由客戶端應(yīng)用程序創(chuàng)建的加密簽名林艘。該字段是用來檢查交易細節(jié)是否未經(jīng)篡改盖奈,因為交易簽名的生成需要用到應(yīng)用程序的私鑰。
3.交易提案:它負責對應(yīng)用程序供給智能合約的輸入?yún)?shù)進行編碼狐援,隨后該智能合約生成提案賬本更新钢坦。在智能合約運行時究孕,這個提案提供了一套輸入?yún)?shù),這些參數(shù)同當前的世界狀態(tài)一起決定了新的賬本世界狀態(tài)爹凹。
4.交易響應(yīng):它是以讀寫集 (RW-set)的形式記錄下世界狀態(tài)之前和之后的值厨诸。交易響應(yīng)是智能合約的輸出,如果交易驗證成功禾酱,那么該交易會被應(yīng)用到賬本上微酬,從而更新世界狀態(tài)。
5.交易背書:它指的是一組簽名交易響應(yīng)宇植,這些簽名都來自背書策略規(guī)定的相關(guān)組織得封,并且這些組織的數(shù)量必須滿足背書策略的要求。你會注意到指郁,雖然交易中包含了多個背書忙上,但它卻只有一個交易響應(yīng)。這是因為每個背書都對組織特定的交易響應(yīng)進行了有效編碼闲坎,那些不完全滿足背書的交易響應(yīng)肯定會遭到拒絕疫粥、被視為無效,而且它們也不會更新世界狀態(tài)腰懂,所以沒必要放進交易中梗逮。在交易中只包含一個交易響應(yīng),但是會有多個背書绣溜。這是因為每個背書包含了它的組織特定的交易響應(yīng)慷彤,這意味著不需要包含任何沒有有效的背書的交易響應(yīng),因為它會被作為無效的交易被拒絕怖喻,并且不會更新世界狀態(tài)底哗。
資料源自官方文檔:https://hyperledger-fabric.readthedocs.io/zh_CN/release-1.4/who_we_are.html