Facebook幣Libra學習-1.核心概念

Libra區塊鏈是一個基於Libra協議的加密認證的分佈式數據庫。本文將簡略介紹Libra協議的核心概念。其詳細說明請參閱Libra技術白皮書.html

Libra區塊鏈由分佈式的Validator節點網絡維護, 或簡稱爲Validator。Validator集體遵循共識協議 決定區塊鏈中交易的進行次序。node

Libra測試網絡是Libra區塊鏈項目早期原型,即Libra Core的Demo 。數據庫

交易和狀態

Libra協議的兩個核心基本概念爲交易和狀態在任一時間點,區塊鏈都有一個所謂的狀態。狀態(或成爲分佈式帳本狀態)表示區塊鏈上數據此時的快照。交易的執行會改變區塊鏈的狀態。緩存

圖 1.1 A 交易狀態變動.

圖 1.1 交易狀態變動.

 

圖 1.1 展現了執行交易時,Libra區塊鏈的狀態變化。例如,在狀態 SN-1 時,Alice 的餘額爲110 Libra幣, Bob的餘額爲52 Libra幣.交易發生後,區塊鏈生成一個新的狀態。在狀態 SN-1 的前提下,交易 TN 發生,則狀態由 SN-1 變動爲 SN 。Alice的餘額減小10Libra幣,Bob的餘額增長了10Libra幣新的狀態SN 展現了狀態更新後的帳戶餘額狀況。在圖1.1中:微信

  • A and B 分別表明Alice和Bob在區塊鏈上的帳戶。
  • SN-1 表明區塊鏈中第(N-1)個狀態。
  • TN 表明區塊鏈中執行的第N個交易。
    • 從圖中的例子能夠看出,TN 表明的交易是:從A帳戶中轉10 Libra幣到B帳戶中。
  • F爲一個肯定性函數。在特定的初始狀態執行特定的交易,F函數總會返回相同的最終狀態。若是當前區塊鏈狀態爲 SN-1, 執行交易 TN ,則返回的新狀態恆爲 SN 。
  • SN 表明區塊鏈的第N個狀態。SN 爲將函數F應用於 SN-1 和 TN 的結果。

Libra協議使用 Move 語言 來實現函數F的肯定性執行。網絡

交易

Libra區塊鏈客戶端經過提交交易請求來更新分佈式帳本狀態。區塊鏈上一個簽名交易包括:app

  • 發送方地址 — 交易發起者的帳戶地址。
  • 發送方公鑰 — 用於簽署交易的私鑰所對應的公鑰。
  • 程序 — 程序包括如下內容:
    • 一個Move語言的字節碼交易腳本;
    • 可選的輸入列表:在點對點交易中,輸入包括接受者信息及金額;
    • 可選的Move字節碼模塊部署列表;
  • Gas價格 (以microlibra/gas 爲單位—執行交易時,發送方願意爲一單位gas 所支付的價格。Gas是用來支付在區塊鏈上計算和存儲費用。每一Gas單位是對計算量的抽象度量;
  • Gas上限 — 交易容許消耗的Gas最大值;
  • 序號 — 無符號整型,必須和發送者帳戶中的序列號相等;
  • 有效期 — 交易的有效截止時間;
  • 簽名 — 發送者的數字簽名。

交易腳本是任意包含對交易邏輯編碼的程序,可以與Libra區塊鏈中發佈的數字資產進行交互。分佈式

分佈式帳本狀態

分佈式帳本狀態,又稱爲Libra區塊鏈全局狀態,是區塊鏈上全部帳戶狀態的集合。想要執行交易,每一個Validator必須得到區塊鏈上分佈式數據庫的最新全局狀態。更多見版本化數據庫.ide

版本化數據庫

Libra區塊鏈上的全部數據都存儲在一個單一版本化的分佈式數據庫上。版本號爲無符號的64位整數,與系統內已經執行的交易數量相對應。函數

版本化數據庫容許Validator:

  • 在最新的全局狀態下進行交易;
  • 響應客戶端發送的對當前或歷史全局狀態的請求。

帳戶

Libra帳戶包括Move模塊和Move資源。由帳戶地址標識。這也意味着每一個帳戶的狀態都包含代碼和數據兩方面。

  • Move模塊 包含代碼(類型和過程聲明),但不包含數據。模塊中的子程序對區塊鏈全局狀態的更新規則進行編碼。
  • Move資源 包含數據不包含代碼。每一個資源的類型都應在區塊鏈的分佈式數據庫中已發佈模塊裏聲明過。

帳戶能夠包含任意數量的Move資源和Move模塊。

帳戶地址

Libra帳戶地址爲一個256位的值。用戶能夠使用電子簽名來聲明地址。對於一個帳戶,其地址由用戶的公鑰經過密碼學Hash(或託管的客戶端)生成,用戶必須經過相應的私鑰簽名才能今後帳戶發起交易。

Libra對用戶的帳戶地址的數量不作限制。但申請新帳戶地址時,必須經過另外一Libra幣充足的帳戶支付申請費用。

證實

Libra區塊鏈上的全部數據都存儲在一個單一版本化的分佈式數據庫上,存儲被用來對交易區塊和交易結果的持續確認。區塊鏈是一個不斷增加的Merkle交易樹. 每次區塊鏈上有新的交易執行,交易樹都會增長一片「葉子」。

  • 證實是驗證Libra區塊鏈中數據真實性的一種方式;
  • 區塊鏈上存儲的每一個操做均可以進行加密驗證,結果性證實也能夠證明沒有數據缺損。例如,若是客戶端發送了對最新的 n 筆交易的查詢請求,證實能夠驗證查詢響應中沒有遺漏任何一筆交易記錄。

在區塊鏈中,客戶端不須要信任接受數據的實體。客戶端能夠查詢帳戶餘額,以及特定交易的交易狀態等。與其餘Merkle樹相似,分佈式帳本記錄能夠對特定的交易提供 O(\log n)O(logn) 時間複雜度證實, n 爲處理的交易總量。

Validator 節點 (validator)

Libra區塊鏈的客戶端建立交易並提交到Validator節點。Validator節點(和其餘Validator節點共同)運行共識協議,執行交易,並將交易和執行結果存儲在區塊鏈中。Validator節點斷定哪些交易能夠被添加到區塊鏈上,以及以何種次序添加。圖 1.1 validator邏輯組件圖 1.2 VALIDATOR邏輯組件

Validator節點 包括如下邏輯組件:

准入控制 (AC)

  • 准入控制是Validator節點的惟一外部接口。客戶端向Validator節點發送的任何請求都將先轉入AC;
  • 准入控制經過對請求進行初始檢查,來保護Validator節點的其餘部件免受損壞或大量輸入的影響。

內存池

  • 內存池是一個緩存區,用於保存「等待」執行的交易。
  • 當一個內存池中添加了新交易時,這個內存池會和系統中其餘Validator節點的內存池共享此交易。

共識

  • 共識組件負責判斷交易區塊的順序,並與區塊鏈中其餘的Validator節點在共識協議 下共同決定執行結果,

執行

  • 執行組件利用虛擬機(VM)交易。
  • 執行組件的做用是協調一個區塊中的交易的執行,並維護一個可用於協商投票的瞬時狀態;
  • 執行組件維護內存中執行結果,直至共識組件容許其被提交到分佈式數據庫。

虛擬機 (VM)

  • 准入控制和內存池藉助虛擬機組件對交易進行校驗。
  • 虛擬機用於運行交易中所包括的程序,並肯定結果。

存儲

存儲被用來持久化保存已確認的交易區塊和交易結果;

更多Validator組件與其餘組件的交互信息,請參考交易生命週期.

參考:

  • 歡迎頁.
  • My First Transaction — Guides you through executing your very first transaction on the Libra Blockchain using the Libra CLI client.
  • Getting Started with Move — Introduces you to a new blockchain programming language called Move.
  • Life of a Transaction — Provides a look at what happens 「under the hood」 when a transaction is submitted and executed.
  • Libra Core Overview — Provides the concept and implementation details of the Libra Core components through READMEs.
  • CLI Guide — Lists the commands (and their usage) of the Libra CLI client.
  • Libra Glossary — Provides a quick reference to Libra terminology.

翻譯:Jadris Lau 校對:Zhe Wang

 

Libra國內開發者微信交流羣:

不能入羣請加管理微信,拉你進羣=>

相關文章
相關標籤/搜索