Hyperledger Fabric2.x基本概念之(一)交易和區塊鏈

▲ 點擊101鏈視界,關注不走丟

大家好,我是阿創,這是我的第30篇原創文章。

我比較愛看書,2021年全年我的閱讀量大概是20+本書,涵蓋法律、哲學、技術、人文。

但是閱讀量一上來反而會覺得,單純的閱讀其實是在逃避,所以我決定還是將自己的閱讀和思考梳理出來,寫一點對大家有幫助的文字。

最近一直在思考自己的核心競爭力在哪裏,我發現還是要聚焦到技術領域,經過一段時間的摸索,決定近期聚焦Fabric的源碼,寫一個系列文章。

雖然網上有很多解讀Fabric源碼的博客,但我希望寫點不一樣的。曾經聽過張宇老師的課,他在課上介紹了華羅庚先生曾經說過的一句話:“數無形時少直覺,形少數時難入微。”

我對這句話十分認同,因此也想斗膽用圖表配上文字來表達自己的思考,希望對你,對我都有幫助。

本系列文章將以Hyperledger Fabric2.x系列爲基礎進行分析。

Fabric源碼解讀的第一篇文章,題爲:《Hyperledger Fabric2.x的一些基本概念之(一)》,主要介紹交易、區塊兩個概念。

1、交易(Transaction)

交易(Transaction,或稱爲事務)是Fabric的核心概念,通常是指通過調用鏈碼(智能合約)改變賬本狀態數據的一次操作。

對賬本狀態的變更是用交易結果讀寫集來描述的,將交易集合經過Orderer節點排序後按規則打包到區塊中。

(1)普通交易消息封裝了變更賬本狀態的執行交易結果,需要經過排序後打包成區塊。

(2)配置交易消息則用於創建新的應用通道或更新通道配置,通常在排序後單獨打包成區塊,同時將最新配置區塊號更新到最新的區塊元數據中以便於索引查找。

2、區塊(Block)

區塊(Block)是指一段時間內發生的交易集合,經排序後按規則打包後並添加簽名、哈希值、時間戳與其他元數據所構成的數據結構。

區塊鏈就是以區塊爲基礎按照時間順序連接構成的鏈狀數據結構。

Fabric中的區塊結構(Block類型)包括區塊頭Header、交易數據集合Data以及區塊元數據Metadata三個部分。

(1)區塊頭Header封裝了區塊號、前一個區塊的哈希值、當前區塊的哈希值

(2)交易數據集合Data封裝了打包的交易集合

(3)區塊元數據Metadata封裝瞭如下4個元數據索引項:

  • BlockMetadataIndex_SIGNATURES:區塊簽名;
  • BlockMetadataIndex_LAST_CONFIG:最新配置區塊的區塊號;
  • BlockMetadataIndex_TRANSACTIONS_FILTER:最新交易過濾器,封裝了交易數據集合Data中所有交易對應的交易驗證碼,標識其交易的有效性。
  • BlockMetadataIndex_ORDERER:Orderer配置信息,如Kafka共識組件的初始化參數。

實際上,真實的區塊數據結構遠比上圖複雜,本文權當拋磚引玉,爲後文的深入介紹打下基礎。

這裏放出Fabric區塊數據結構的代碼:github.com/hyperledger/fabric-protos-go/common/common.pb.go

// This is finalized block structure to be shared among the orderer and peer
// Note that the BlockHeader chains to the previous BlockHeader, and the BlockData hash is embedded
// in the BlockHeader.  This makes it natural and obvious that the Data is included in the hash, but
// the Metadata is not.
type Block struct {
   Header               *BlockHeader   `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
   Data                 *BlockData     `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
   Metadata             *BlockMetadata `protobuf:"bytes,3,opt,name=metadata,proto3" json:"metadata,omitempty"`
   XXX_NoUnkeyedLiteral struct{}       `json:"-"`
   XXX_unrecognized     []byte         `json:"-"`
   XXX_sizecache        int32          `json:"-"`
}

期待後面我們一起對fabric區塊數據結構做深入剖析,像剝洋蔥一樣,循序漸進,由淺入深。

如果你覺得寫得不錯

麻煩給個贊~

關注我,帶你瞭解區塊鏈行業

推薦閱讀:
1、一個好用的多方隱私求交算法庫MultipartyPSI-Pro
2、區塊鏈產業發展五大趨勢:數據安全、科技監管、自主可控、雙碳戰略、數字經濟
3、揭祕北京冬奧會開幕式“數字雪花”背後的區塊鏈技術
4、Web3對於我們普通人意味着什麼?
5、最近火爆的數字藏品究竟是什麼?
6、《區塊鏈是構建產業互聯網的可信基礎設施》
7、《隱私計算佈局思考》
8、讀書 |《數據資產論》:數據如何資產化?
9、區塊鏈產業發展五大趨勢:數據安全、科技監管、自主可控、雙碳戰略、數字經濟

提前看到未來的人,

和花一輩子都看不清的人,

註定是截然不同的命運。

點擊下方卡片關注101鏈視界,

和1000+讀者一起

洞察技術本質

▲ 點擊上方卡片關注101鏈視界,洞察技術本質

技術交流 | 行業研報 | 前沿洞察 | 轉載開白 | 加入社羣

請在公衆號後臺回覆 合作

歡迎把文章分享到朋友圈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章