您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Libra協(xié)議的關(guān)鍵概念是什么”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“Libra協(xié)議的關(guān)鍵概念是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
Libra協(xié)議是Libra區(qū)塊鏈的基礎(chǔ),本文主要講解Libra協(xié)議的一些關(guān)鍵概念。
我們知道區(qū)塊鏈也可以叫分布式賬本,它主要的作用就是存儲各種交易。而為了便于查詢和提升效率,現(xiàn)代的區(qū)塊鏈都會引入狀態(tài)的概念,來代表某時刻鏈上數(shù)據(jù)的當前快照。
交易會改變相應(yīng)的狀態(tài),如下圖所示:
上圖描述了執(zhí)行交易發(fā)生時Libra區(qū)塊鏈相應(yīng)的狀態(tài)改變。
其中T是交易,S是狀態(tài),為了便于描述,我們假設(shè)每個交易和狀態(tài)是一一對應(yīng)的,T1對應(yīng)S1,T2對應(yīng)S2,Tn對應(yīng)Sn。隨著時間的推移n的值不斷變大。
假設(shè)在Sn-1狀態(tài)時我們有兩個用戶A和B,A擁有110LBR,B擁有52LBR。接下來會進行一個交易Tn,將A擁有的10LBR轉(zhuǎn)給B。
這里會使用一個確定函數(shù)F(Sn-1,Tn)=Sn 來獲得最新的Sn。
確定函數(shù)的意思是:對于特定的初始狀態(tài)和特定的交易,F(xiàn)始終返回相同的最終狀態(tài)。
這個函數(shù)F在Libra中是使用Move語言來實現(xiàn)的。在后面的文章中我們會詳細介紹Move語言。
交易記錄著賬號之間的信息傳遞,是區(qū)塊鏈的重要信息,每個區(qū)塊都是由一個個交易組成的。 Libra區(qū)塊鏈中的交易包含如下信息:
交易發(fā)送人的賬戶地址
發(fā)送人公鑰-與用于簽署交易的私鑰相對應(yīng)的公鑰
程序:
移動字節(jié)碼的交易腳本
腳本輸入的可選列表。對于點對點交易,輸入包含有關(guān)接收者和轉(zhuǎn)移到接收者的金額的信息。
要發(fā)布的移動字節(jié)碼模塊的可選列表。
Gas價格:發(fā)送方愿意為執(zhí)行交易而為每單位Gas支付的金額。Gas是一種支付計算和存儲費用的方式。Gas單位是對計算的抽象度量,沒有固有的實際值。
最大Gas數(shù)目:允許交易消耗的最大Gas量。
序列號:一個無符號整數(shù),必須等于在發(fā)件人帳戶下存儲的序列號。
到期時間:交易停止有效的時間。
簽名:發(fā)送者的數(shù)字簽名。
交易腳本是一個任意程序,可對交易邏輯進行編碼并與在Libra區(qū)塊鏈的分布式數(shù)據(jù)庫中發(fā)布的資源進行交互。
Libra的賬本狀態(tài)由區(qū)塊鏈中所有帳戶的狀態(tài)組成。為了執(zhí)行交易,每個驗證者必須知道最新版本的區(qū)塊鏈分布式數(shù)據(jù)庫的全局狀態(tài)。
Libra區(qū)塊鏈中的所有數(shù)據(jù)都保存在單版本的分布式數(shù)據(jù)庫中。 版本號是一個無符號的64位整數(shù),與系統(tǒng)已執(zhí)行的事務(wù)數(shù)相對應(yīng)。
版本數(shù)據(jù)庫允許驗證者執(zhí)行以下操作:
針對最新版本的賬本狀態(tài)執(zhí)行事務(wù)。
響應(yīng)客戶有關(guān)當前和以前版本賬本歷史記錄的查詢。
Libra帳戶包括Move modules和Move resources。它由帳戶地址來標記的。這實質(zhì)上意味著每個帳戶的狀態(tài)都由代碼和數(shù)據(jù)組成:
Move modules包含代碼(類型和過程聲明),但它們不包含數(shù)據(jù)。模塊用來對用于更新區(qū)塊鏈全局狀態(tài)的規(guī)則進行編碼。
Move resources包含數(shù)據(jù),但沒有代碼。每個資源值都有在區(qū)塊鏈分布式數(shù)據(jù)庫中發(fā)布的模塊中聲明的類型。
一個帳戶可以包含任意數(shù)量的Move modules和Move resources。
Libra帳戶的地址為256位值。在公鑰私鑰體系中,帳戶地址是用戶公鑰的加密哈希。要簽署從其帳戶地址發(fā)送的交易,用戶(或代表該用戶的托管客戶端)必須使用與該帳戶相對應(yīng)的私鑰。
Libra用戶可以創(chuàng)建的賬戶可以是無限的,但是要創(chuàng)建帳戶地址,需要從擁有住夠Libra幣的帳戶發(fā)送交易用來支付帳戶創(chuàng)建費用。
Libra區(qū)塊鏈中的所有數(shù)據(jù)都存儲在一個單版本的分布式數(shù)據(jù)庫中。該存儲用于持久存儲已確定的交易塊及其執(zhí)行結(jié)果。這些數(shù)據(jù)是以不斷增長的Merkle樹來實現(xiàn)的。如果有需要,我會在后面的文章中講解什么是Merkle樹,這里我們只要知道對于在區(qū)塊鏈上執(zhí)行的每筆交易,都會以葉子節(jié)點的形式附加到樹上。
Proof是一種驗證Libra區(qū)塊鏈中數(shù)據(jù)真實性的方法。
存儲在區(qū)塊鏈上的每個操作都可以進行密碼驗證,并且沒有數(shù)據(jù)被遺漏。例如,如果客戶從一個帳戶中查詢了最近的n筆交易,則Proof將驗證查詢響應(yīng)中沒有遺漏任何交易。
在區(qū)塊鏈中,客戶端不需要信任從其接收數(shù)據(jù)的實體??蛻艨梢圆樵儙粲囝~,詢問是否處理了特定交易,等等。與其他Merkle樹一樣,賬本的歷史記錄可以提供特定交易對象的Proof。
在區(qū)塊鏈系統(tǒng)中,驗證節(jié)點是一個非常關(guān)鍵的組件,通常來說驗證節(jié)點運行共識協(xié)議(與其他驗證者節(jié)點一起),執(zhí)行交易,并將交易和執(zhí)行結(jié)果存儲在區(qū)塊鏈中。 驗證者節(jié)點決定將哪些交易添加到區(qū)塊鏈中,并以什么順序添加。Libra區(qū)塊鏈的客戶創(chuàng)建交易并將其提交到驗證者節(jié)點。
驗證器節(jié)點包含以下邏輯組件:
Admission Control (AC)
準入控制是驗證程序節(jié)點的唯一外部接口??蛻舳藢︱炞C者節(jié)點的任何請求都首先轉(zhuǎn)到AC。
AC對請求執(zhí)行初始檢查,以保護驗證器節(jié)點的其他部分不受損壞或輸入量大的影響。
Mempool
Mempool是一個緩沖區(qū),用于保存正在等待執(zhí)行的交易。
將新交易添加到驗證程序節(jié)點的內(nèi)存池后,此驗證程序節(jié)點的內(nèi)存池將與系統(tǒng)中其他驗證程序的內(nèi)存池共享此交易。
共識
共識組件負責通過與網(wǎng)絡(luò)中的其他驗證器節(jié)點一起參與共識協(xié)議來對交易塊進行排序并就執(zhí)行結(jié)果達成一致。
執(zhí)行
執(zhí)行組件利用虛擬機(VM)執(zhí)行事務(wù)。
執(zhí)行工作的任務(wù)是協(xié)調(diào)一系列交易的執(zhí)行,并保持可以通過共識投票的臨時狀態(tài)。
執(zhí)行保持執(zhí)行結(jié)果的內(nèi)存表示形式,直到共識將塊提交給分布式數(shù)據(jù)庫為止。
虛擬機(VM)
AC和Mempool使用VM組件對事務(wù)執(zhí)行驗證檢查。
VM用于運行事務(wù)中包含的程序并確定結(jié)果。
上圖是驗證節(jié)點的示意圖。
讀到這里,這篇“Libra協(xié)議的關(guān)鍵概念是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。