Libraprotocol的邏輯數(shù)據(jù)模型是什么

這篇文章主要介紹了Libra protocol的邏輯數(shù)據(jù)模型是什么的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Libra protocol的邏輯數(shù)據(jù)模型是什么文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

創(chuàng)新互聯(lián)主營(yíng)蘇尼特右網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app開(kāi)發(fā),蘇尼特右h5微信平臺(tái)小程序開(kāi)發(fā)搭建,蘇尼特右網(wǎng)站營(yíng)銷推廣歡迎蘇尼特右等地區(qū)企業(yè)咨詢

Libra protocol簡(jiǎn)介

Libra區(qū)塊鏈本質(zhì)上是一個(gè)加密數(shù)據(jù)庫(kù),這個(gè)數(shù)據(jù)庫(kù)是通過(guò)Libra protocol來(lái)維護(hù)的。所以Libra protocol是Libra區(qū)塊鏈的核心。

Libra protocol的核心是賬戶,resources和module.

數(shù)據(jù)庫(kù)主要存儲(chǔ)可編程的resources賬本,比如:Libra coin。這些resources是由定義的module來(lái)約定的,這些module也存儲(chǔ)在數(shù)據(jù)庫(kù)中。

resources屬于賬戶,并通過(guò)公鑰加密來(lái)認(rèn)證。

帳戶可以代表系統(tǒng)的直接最終用戶,也可以代表實(shí)體,例如
代表用戶的保管錢包。

帳戶所有者通過(guò)sign transactions來(lái)使用帳戶內(nèi)的資源。

下面是一個(gè)client和validators使用libra protocol進(jìn)行交互的例子:

1.client request

2.proposes transactions

3.execute the transactions

3.execute the transactions

4.vote

5.responses

client

leader

other validators

具體分析一下每個(gè)步驟:

  1. 驗(yàn)證器維護(hù)數(shù)據(jù)庫(kù)并處理客戶提交的交易,以將其包括在數(shù)據(jù)庫(kù)中。

  2. 驗(yàn)證者使用分布式共識(shí)協(xié)議來(lái)保證交易的提交。驗(yàn)證者不是不斷輪動(dòng)的。當(dāng)驗(yàn)證人擔(dān)任領(lǐng)導(dǎo)者時(shí),它會(huì)提出交易,包括直接由客戶提交給的他的交易以及通過(guò)其他驗(yàn)證者間接提交給其他驗(yàn)證者的交易。3. 所有驗(yàn)證程序執(zhí)行交易并形成包含經(jīng)過(guò)身份驗(yàn)證的數(shù)據(jù)結(jié)構(gòu):新的賬本的歷史記錄。

  3. 作為共識(shí)協(xié)議的一部分,驗(yàn)證者對(duì)該數(shù)據(jù)結(jié)構(gòu)的驗(yàn)證者進(jìn)行投票。

  4. 作為在版本i上提交事務(wù)Ti的一部分,共識(shí)協(xié)議在版本i的數(shù)據(jù)庫(kù)完整狀態(tài)上輸出一個(gè)簽名-包括其整個(gè)歷史記錄來(lái)作為對(duì)來(lái)自客戶端的查詢的驗(yàn)證響應(yīng)。

客戶端可以向驗(yàn)證器發(fā)出查詢,以從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)。 由于數(shù)據(jù)庫(kù)已通過(guò)身份驗(yàn)證,所以可以確??蛻舨樵冺憫?yīng)的準(zhǔn)確性。

此外,客戶端可以選擇通過(guò)同步驗(yàn)證者的交易記錄來(lái)創(chuàng)建整個(gè)數(shù)據(jù)庫(kù)的副本。

在創(chuàng)建副本時(shí),客戶端可以驗(yàn)證驗(yàn)證者是否正確執(zhí)行交易,從而提高了系統(tǒng)的可靠性。 其他客戶端可以從持有副本的客戶端讀取數(shù)據(jù),方式與從驗(yàn)證程序讀取客戶端的方式相同。 為了簡(jiǎn)單起見(jiàn),本文其余部分假設(shè)客戶端直接查詢驗(yàn)證器而不是副本。

邏輯數(shù)據(jù)模型

Libra區(qū)塊鏈的所有數(shù)據(jù)都存儲(chǔ)在一個(gè)單一的帶版本的數(shù)據(jù)庫(kù)中。數(shù)據(jù)庫(kù)的版本號(hào)是由一個(gè)無(wú)符號(hào)的64-bit的整數(shù)來(lái)表示。這個(gè)整數(shù)是系統(tǒng)目前執(zhí)行的交易個(gè)數(shù)。

假如在某個(gè)版本i,數(shù)據(jù)庫(kù)包含元組(Ti,Oi, Si),其中Ti表示交易,Oi表示交易的輸出,Si表示版本的賬本狀態(tài)。

假如版本執(zhí)行了一個(gè)Apply函數(shù),那么這元組的意思就是:在賬本狀態(tài)Si-1執(zhí)行了一個(gè)Ti交易,產(chǎn)生了一個(gè)輸出Oi,和一個(gè)新的賬本狀態(tài)Si。

簡(jiǎn)單說(shuō)就是如下的公式:
Apply(Si?1, Ti)->?Oi, Si?.

Libra協(xié)議使用Move語(yǔ)言來(lái)實(shí)現(xiàn)這個(gè)Apply功能,我們會(huì)在后面的文章中介紹。本章我們主要講解版本數(shù)據(jù)庫(kù)的交易和查詢功能。

賬本狀態(tài)

賬本狀態(tài)是Libra區(qū)塊鏈的基礎(chǔ),他包括每個(gè)用戶在不同版本的狀態(tài)。 每個(gè)驗(yàn)證者都可以獲取最新的分類賬本狀態(tài)。

賬本結(jié)構(gòu)為鍵值存儲(chǔ),可將帳戶地址鍵映射到帳戶值。 賬戶
在分布賬本狀態(tài)下,是已發(fā)布的Move資源和模塊的集合。 其中Move資源存儲(chǔ)數(shù)據(jù)值,模塊存儲(chǔ)代碼。

在賬本初始化的過(guò)程中,我們會(huì)創(chuàng)建一部分內(nèi)置的賬戶。

賬戶地址

賬號(hào)地址是一個(gè)256-bit的值。用戶可以在本地創(chuàng)建公私鑰對(duì),然后將公鑰的加密hash值作為賬戶的地址。這里要注意的是,這個(gè)賬號(hào)地址只有發(fā)生交易的時(shí)候才會(huì)被創(chuàng)建(比如有Libra幣被發(fā)送到這個(gè)地址的時(shí)候)。

賬戶創(chuàng)建之后,用戶就可以使用私鑰簽名來(lái)使用這個(gè)賬號(hào)來(lái)發(fā)送交易。用戶可以在不更換賬號(hào)地址的情況下,來(lái)更換或者輪循私鑰。

如果你愿意,一個(gè)用戶可以創(chuàng)建無(wú)限多個(gè)賬戶。

Resource

之前講到了狀態(tài)數(shù)據(jù)庫(kù)是一個(gè)key-value形式的結(jié)構(gòu)。key就是account的地址,value可以是resource也可以是module。

每一個(gè)resource都有一個(gè)由module聲明的類型。resource的類型包含類型的名字和定義該類型的module的名字和地址。

假如我們有兩個(gè)賬戶:Ox12和Ox34. 在Ox12中定義了一個(gè)module:Currency,在這個(gè)module中定義了一個(gè)type T。那么這個(gè)類型的名字就叫:Ox12.Currency.T。

這個(gè)類型的名字是唯一的,即使你在其他的賬戶中使用這個(gè)類型。比如我在Ox34中使用了這個(gè)類型,那么可以從Ox34中這樣獲得該resource: 0x34/resources/0x12.Currency.T.

這樣設(shè)計(jì)的目的是讓所有的資源類型都有一個(gè)統(tǒng)一的名字。

Module

Module主要是使用Move字節(jié)碼來(lái)聲明資源和procedures。和資源一樣,Module也是通過(guò)賬戶地址來(lái)定位的,比如上面的Currency Module的標(biāo)志就是:Ox12.Currency。

在當(dāng)前的Libra版本中,Module是不可更改的。一旦該Module在賬戶中聲明之后,就不可以刪除和更改,除非進(jìn)行硬分叉。這個(gè)限制可能在未來(lái)的版本中發(fā)生改變。

交易

客戶端通過(guò)提交Transaction來(lái)更新Libra區(qū)塊鏈。通常來(lái)說(shuō)Transaction包含一個(gè)交易腳本和交易腳本所需要的參數(shù)。

驗(yàn)證者使用當(dāng)前賬本狀態(tài)和交易腳本的輸入產(chǎn)生一個(gè)固定的輸出結(jié)果。賬本的狀態(tài)只有當(dāng)交易被共識(shí)提交之后,才會(huì)生效。

交易輸出

執(zhí)行一個(gè)交易Ti會(huì)產(chǎn)生一個(gè)新的賬本狀態(tài)Si,執(zhí)行結(jié)果代碼(執(zhí)行是否成功),使用的gas,和event列表。

事件

事件列表是通過(guò)執(zhí)行事務(wù)產(chǎn)生的一系列副作用。Move代碼
在事件structure中出發(fā)時(shí)間。 每個(gè)事件都與唯一鍵相關(guān)聯(lián),
通過(guò)這個(gè)唯一鍵,可以確定發(fā)出事件的結(jié)構(gòu)以及有效payload(有關(guān)事件的詳細(xì)信息)。

一旦在共識(shí)協(xié)議中達(dá)成交易,交易產(chǎn)生的事件會(huì)被添加到賬本歷史中,并在相應(yīng)的事件中提供成功執(zhí)行的證明。 例如,一個(gè)
付款交易會(huì)產(chǎn)生一個(gè)事件,使接收者可以確認(rèn)已付款收到并確認(rèn)付款金額。

看起來(lái)好像Event是多余的,因?yàn)槌瞬樵兘灰桩a(chǎn)生的事件以外,客戶端還可以通過(guò)查詢blockchain是否包含該交易來(lái)確定。

但是這很容易出錯(cuò),因?yàn)榘琓i并不意味著成功執(zhí)行(例如,
gas用完后可能會(huì)被打斷)。 在交易可能失敗的系統(tǒng)中,
event中的證據(jù),不僅表明特定交易已執(zhí)行,而且已成功完成
完成了預(yù)期的效果。

交易只能生成events,他們并不能讀取event,這樣的設(shè)計(jì)是為了讓交易關(guān)注與最新的state信息,而不是歷史的event信息。

賬本歷史

賬本歷史按順序存儲(chǔ)著提交和執(zhí)行的交易及其相關(guān)聯(lián)的事件。賬本歷史主要是用來(lái)保存記錄,讓大家知道最新的賬本狀態(tài)是怎么計(jì)算出來(lái)的。

和其他的區(qū)塊鏈不一樣的是,Libra賬本歷史并沒(méi)有交易塊的概念,在邏輯數(shù)據(jù)模型中,交易是順序執(zhí)行的,并不需要區(qū)分到底這個(gè)交易在哪個(gè)塊里面。

雖然驗(yàn)證者不需要賬本歷史來(lái)產(chǎn)生新的賬本狀態(tài),但是客戶端可以使用這個(gè)賬本歷史來(lái)驗(yàn)證和查詢相應(yīng)的交易信息。

驗(yàn)證者通過(guò)查詢歷史賬本來(lái)告訴客戶端之前的賬本狀態(tài),交易和相應(yīng)的輸出。

客戶可以通過(guò)在在歷史賬本狀態(tài)上重新執(zhí)行特定的交易,通過(guò)驗(yàn)證輸出的結(jié)果和執(zhí)行后的賬本狀態(tài)來(lái)驗(yàn)證該交易是否被正確的執(zhí)行。

關(guān)于“Libra protocol的邏輯數(shù)據(jù)模型是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Libra protocol的邏輯數(shù)據(jù)模型是什么”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前標(biāo)題:Libraprotocol的邏輯數(shù)據(jù)模型是什么
URL地址:http://bm7419.com/article44/gijsee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站改版網(wǎng)站營(yíng)銷、App設(shè)計(jì)、關(guān)鍵詞優(yōu)化、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化