分類賬是全部狀態轉換的有序,防篡改記錄,狀態轉換是參與方提交的鏈碼調用(「交易」)的結果,每一個交易都會生成一組資產鍵值對,這些鍵值對做爲建立,更新或刪除提交到分類賬。數據庫
分類賬由區塊鏈(「鏈」)組成,用於以塊的形式存儲不可變的順序記錄,以及狀態數據庫以維持當前狀態。每一個通道有一個分類賬,每一個對等點爲其所屬的每一個通道維護一個分類賬的副本。區塊鏈
鏈是一個交易日誌,結構爲哈希連接區塊,其中每一個區塊包含N個有序交易,區塊頭部包括區塊的交易的哈希,以及前一個區塊的頭部的哈希。經過這種方式,分類帳上的全部交易都按順序排列並以加密方式連接在一塊兒,換句話說,在不破壞哈希連接的狀況下,不可能篡改分類賬數據。最新區塊的哈希表示以前的每一個交易,從而能夠確保全部對等點處於一致且可信的狀態。加密
鏈存儲在對等點文件系統(本地或附加存儲)上,有效地支持區塊鏈工做負載的僅附加性質。日誌
分類賬的當前狀態數據表示鏈交易日誌中包含的全部鍵的最新值,因爲當前狀態表示通道商已知的全部最新鍵的值,所以有時將其稱爲世界狀態。索引
鏈碼針對當前狀態數據調用執行交易,爲了使這些鏈碼交互很是有效,全部鍵的最新值都存儲在狀態數據庫中。狀態數據庫只是鏈的交易日誌的索引視圖,所以能夠隨時從鏈中從新生成。在接受交易以前,狀態數據庫將在對等點啓動時自動恢復(或在須要時生成)。進程
狀態數據庫選項包括LevelDB和CouchDB,LevelDB是嵌入在對等點進程中的默認狀態數據庫,並將鏈碼數據存儲爲鍵值對。CouchDB是一個可選的替代外部狀態數據庫,當你的鏈碼數據建模爲JSON時,它提供額外的查詢支持,容許對JSON內容進行豐富的查詢。有關CouchDB的更多信息,請參閱CouchDB做爲狀態數據庫。數據