超级账本中分布式账本
fabric里的數據以分布式賬本的形式存儲。賬本由一系列有順序和防篡改的記錄組成,記錄包含著數據的全部狀態改變。賬本中的數據項以鍵值對的形式存放,賬本中所有的鍵值對構成了賬本的狀態,也成為世界狀態。每一個通道中唯一的賬本,有同道中所有成員共同維護。每個維護節點上都保存了它所屬通道的賬本的一個副本,因此是分布式賬本。對賬本的訪問需要通過鏈碼實現對賬本鍵值對的增加、刪除、更新和查詢等操作。賬本由區塊鏈和狀態數據庫兩個部分組成。
區塊鏈十一組不可更改、有序的區塊,記錄這全部交易的日志。每個區塊中包含若干交易的數據,不同區塊包含的交易數量可以不同。區塊之間用哈希鏈關聯:每個區塊頭包含該區塊所有交易的哈希值,以及上一個區塊頭的哈希值。這樣的鏈式架構可以確保每個區塊的數據不可更改,以及每個區塊之間的順序關系不同。這個特點決定了區塊鏈的區塊只可以添加在鏈的尾部。
狀態數據庫記錄了賬本中所有鍵值對的當前值,相當于對當前賬本的交易日志做了索引。鏈碼執行交易的時候需要讀取賬本的當前狀態,從狀態數據庫可以迅速獲取剪枝的更新狀態。如果沒有狀態數據庫,要活的某個鍵值時,需要遍歷整個區塊鏈匯總和該鍵值相關交易,效率非常低。因此,讀取狀態數據庫可以認為是快速定位和訪問某個鍵值的方法。另外,當狀態數據庫出現故障的時候,可以通過遍歷賬本重新生成。狀態數據庫。
當一個區塊附加到區塊尾部的時候,如果區塊中的有效交易修改了鍵值對,則會在狀態數據庫中做相應的更新,這樣區塊鏈和狀態數據庫就能始終保持一致。
區塊鏈的數據庫以文件形式保存在各個節點中。狀態數據庫原理上可以是各種鍵值數據庫,fabric缺省使用leveldb。也指出json。
總結
以上是生活随笔為你收集整理的超级账本中分布式账本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在linux环境下 com.aspose
- 下一篇: FlexSlider js——轮播