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