小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Libra技術(shù)原理淺析(一):基本設(shè)計(jì)

 panpan研報(bào)社 2019-08-11

Facebook在2019年揭示了其在加密貨幣層面點(diǎn)野心。19年6月,F(xiàn)acebook突然宣布了自己的發(fā)幣計(jì)劃,Libra。其目的是想要打造一個(gè)屬于“the internet of money”的時(shí)代。Facebook希望借助Libra去服務(wù)全球萬千用戶,讓所有人享受電子支付帶來的便利。關(guān)于Libra的爭議和各種政策層面分析層出不窮,但是從技術(shù)層面該如何理解Libra,似乎并沒有非常多的討論。媒體和分析師更喜歡用奪人眼球的角度去看待Libra,得出了很多“怪異”的預(yù)測和結(jié)論。拋開這些繁雜的概念和爭議,本文希望從技術(shù)角度去理解Libra所構(gòu)建的區(qū)塊鏈?zhǔn)澜?。全部資料來源于Libra項(xiàng)目白皮書,另外目前Libra還在開發(fā)過程中,討論僅限于白皮書中已經(jīng)披露的技術(shù)細(xì)節(jié)。

Libra Blockchain 初窺

Libra要構(gòu)建一個(gè)“全新的”加密貨幣系統(tǒng),其目標(biāo)是要做到:

  • 實(shí)現(xiàn)一個(gè)能夠承載數(shù)十億的賬戶的區(qū)塊鏈系統(tǒng),這個(gè)系統(tǒng)需要由高吞吐量,低延遲的交易能力以及一個(gè)高效的大容量存儲(chǔ)系統(tǒng);

  • 極高的安全性,足以保障資金和金融數(shù)據(jù)的安全;

  • 足夠的靈活性以便支撐Libra生態(tài)的管理和金融創(chuàng)新。

在設(shè)計(jì)上,Libra借鑒了當(dāng)前市場上已有的區(qū)塊鏈系統(tǒng),選擇了三個(gè)重要的技術(shù)方向:

  • 設(shè)計(jì)了一套新的智能合約編程語言,Move;

  • 選擇Byzantine Fault Tolerant作為共識(shí)算法;

  • 遵循已有的區(qū)塊鏈數(shù)據(jù)存儲(chǔ)模型。

Libra Reserve

有新意的地方是Libra Reserve的發(fā)幣機(jī)制。

在傳統(tǒng)的數(shù)字加密貨幣系統(tǒng)中,如比特幣,數(shù)字貨幣往往是被“憑空”挖掘出來的。這種加密貨幣的“發(fā)行”行為是一種純粹的“體內(nèi)循環(huán)”的激勵(lì)機(jī)制,其發(fā)幣的動(dòng)機(jī)是為了維持該加密貨幣系統(tǒng)的運(yùn)轉(zhuǎn)(激勵(lì)礦工為用戶的交易做驗(yàn)證、打包和執(zhí)行等工作)。

這些加密貨幣的背后并沒有和實(shí)體資產(chǎn)有任何的錨定關(guān)系,也沒有組織和機(jī)構(gòu)宣布過對這些加密貨幣的剛性對付。而Libra Reserve則描繪了一個(gè)不一樣“發(fā)幣”機(jī)制:首先,Libra的投資者和用戶需要使用法幣從Libra協(xié)會(huì)手中“購買”Libra代幣,當(dāng)有1塊錢的法幣被Libra協(xié)會(huì)“收儲(chǔ)”之后,才會(huì)有等價(jià)1塊錢的Libra代幣被“發(fā)行”出來(原諒我使用“收儲(chǔ)”這個(gè)詞,實(shí)在沒有想到更好的動(dòng)詞去描述這個(gè)動(dòng)作)。

Libra協(xié)會(huì)會(huì)去集中管理這些“收儲(chǔ)”的法幣,并使用這些法幣去做高安全、低收益的投資,例如投資各種主權(quán)基金。這些投資的收益大部分會(huì)用來支持Libra生態(tài)的運(yùn)轉(zhuǎn)。看起來這似乎更像是一個(gè)“世界銀行”,用戶可以把各種法幣“儲(chǔ)蓄”到Libra上,然后在Libra的的支付網(wǎng)絡(luò)上使用Libra代幣去做交易,或者通過Libra授權(quán)經(jīng)銷商把代幣兌換成法幣。個(gè)人認(rèn)為這種發(fā)幣機(jī)制更多的是金融層面的概念,本文不再做更多討論,其帶來的影響和利弊還是留給專業(yè)人士去探討。而從技術(shù)角度去看,這里實(shí)在沒有什么好解釋的,既沒有比特幣“挖礦”過程的艱辛,也不涉及復(fù)雜的執(zhí)行過程。

Libra 的設(shè)計(jì)

Libra在設(shè)計(jì)上把自己的主要結(jié)構(gòu)定義成一個(gè)“可信”數(shù)據(jù)庫(a cryptographically authenticated database,不知道該如何翻譯),然后通過Libra協(xié)議在這個(gè)數(shù)據(jù)庫上維護(hù)了一個(gè)全局狀態(tài)統(tǒng)一的總賬本。Cryptographically Authenticated的意思是說這個(gè)數(shù)據(jù)庫中保存的數(shù)據(jù)都是經(jīng)過密碼學(xué)驗(yàn)證過的,可以保證數(shù)據(jù)的真實(shí)可靠。而在網(wǎng)絡(luò)結(jié)構(gòu)上,Libra有兩類節(jié)點(diǎn):用戶節(jié)點(diǎn)(Client)和驗(yàn)證節(jié)點(diǎn)(Validator)。如下圖,client可以提交或查詢交易,Validator則負(fù)責(zé)根據(jù)Libra協(xié)議去處理這些交易并維護(hù)賬本的更新。

Transactions and States

State(狀態(tài))指賬本中某個(gè)數(shù)據(jù)的狀態(tài)(值),在不同的時(shí)間節(jié)點(diǎn)上,數(shù)據(jù)可能有不同的狀態(tài)。Trasaction(交易)指一個(gè)去改變某些數(shù)據(jù)狀態(tài)的指令。比如:

Alice當(dāng)前賬戶余額是100,這是一個(gè)狀態(tài);Alice要買一個(gè)包,向商戶作出了一個(gè)付款的行為,這個(gè)付款指令是一個(gè)交易;付款之后,Alice的賬戶余額變成了50,這是一個(gè)新的狀態(tài)。

另外,Libra網(wǎng)絡(luò)還維護(hù)了一個(gè)Ledger State,這里面存儲(chǔ)了賬戶地址和賬戶數(shù)據(jù)之間的映射。

Transaction 模型

一個(gè)Transaction由下列內(nèi)容組成:

  • Sender Address,交易發(fā)起者的地址(不是物理意義的地址,可以理解成發(fā)起者的“銀行賬號(hào)”);

  • Sender's publick key,交易發(fā)起者的公鑰;

  • Program,交易指令;

  • Gas Price,Gas價(jià)格。Gas是衡量計(jì)算量一個(gè)度量,每執(zhí)行一定的交易代碼就會(huì)產(chǎn)生一定Gas,客戶要為這些Gas買單;

  • Maximum gas amount,客戶愿意支付的Gas上限;

  • Sequence number,序列號(hào);

  • Expiration time,失效時(shí)間(如果一個(gè)交易在失效時(shí)間內(nèi)沒有被執(zhí)行,則交易作廢);

  • Signature,數(shù)字簽名。

乍一看和很多傳統(tǒng)區(qū)塊鏈系統(tǒng)(以太坊)的Transaction模型類似,比較獨(dú)特的地方有兩處:Program和Sequence number。

  • Program部分包含三個(gè)部分:

  1. Move語言字節(jié)碼組成的交易腳本

  2. (可選項(xiàng))交易腳本的輸入內(nèi)容,在轉(zhuǎn)賬交易中,腳本的輸入是轉(zhuǎn)賬的金額和接收方地址。

  3. (可選項(xiàng))Move語言字節(jié)碼模塊,可以理解成一個(gè)智能合約的合約內(nèi)容。

  • Sequence number是當(dāng)前賬戶所發(fā)起的交易序列號(hào),每個(gè)賬戶的交易序列號(hào)從0開始,每完成一筆交易則序列號(hào)自增1。

Account 模型

Libra中的賬戶模型和以太坊類似,從邏輯上看,賬戶是一個(gè)擁有兩類資源的一個(gè)集合:Move Mouldes(程序代碼)和Move Resources(數(shù)據(jù))。Mouldes存儲(chǔ)的是Move語言字節(jié)碼,即智能合約的代碼,這些代碼可以去訪問或更新Resouces中的數(shù)據(jù)。Resouces存儲(chǔ)是是數(shù)據(jù)部分,賬戶擁有的Libra Coin也是存儲(chǔ)在Resource中。賬戶的地址Address是一個(gè)256bit的值。前面提到,Libra網(wǎng)絡(luò)通過一個(gè) k-v map的形式在Ledger State中維護(hù)了Address到Account(Mouldes和Resoucrces)的映射。要?jiǎng)?chuàng)建一個(gè)Libra賬戶,首先要構(gòu)造一對公私鑰 (vk,sk),該賬戶的地址等于公鑰 vkhash值, address=hash(vk)。注意,這個(gè)時(shí)候賬戶并沒有在Ledger State中出現(xiàn),只有當(dāng)一個(gè)已經(jīng)存在的賬戶向該地址發(fā)起一筆交易的時(shí)候,Libra網(wǎng)絡(luò)才會(huì)在Ledger State中創(chuàng)建有關(guān)該賬戶的映射結(jié)構(gòu)。一個(gè)用戶可以有無數(shù)個(gè)賬戶,一個(gè)賬戶下面可以有無數(shù)的Mouldes和Resource。

Versioned Database

在討論這個(gè)部分之前,先說一點(diǎn)題外話。雖然Libra把自己稱之為Libra Blockchian,然而Libra似乎并沒有引入?yún)^(qū)塊的鏈?zhǔn)剑˙lock chain)結(jié)構(gòu),僅在共識(shí)協(xié)議的實(shí)現(xiàn)上引入了“區(qū)塊”的概念作為共識(shí)算法的“優(yōu)化”手段。這并不奇怪,實(shí)際上業(yè)界已經(jīng)意識(shí)到Blockchian這個(gè)詞并不能代表這一類系統(tǒng)的核心特性,很多學(xué)者和分析師更愿意用分布式賬本技術(shù)(Distributed Ledger Technology,DLT )來稱呼這一類技術(shù)。這類系統(tǒng)的核心是在對等的分布式環(huán)境下維護(hù)一個(gè)全網(wǎng)狀態(tài)統(tǒng)一的賬本,至于是不是基于區(qū)塊鏈機(jī)制實(shí)現(xiàn)的,并不重要?;氐絍ersioned Database,Libra定義了一個(gè)基于version的三元組存儲(chǔ)在這個(gè)數(shù)據(jù)庫中:對于每一個(gè)Version i,數(shù)據(jù)庫中存儲(chǔ)了這樣的一個(gè)三元組 <Ti,Oi,Si>,分別指交易 Ti,交易 Ti執(zhí)行時(shí)產(chǎn)生的輸出 Oi,交易 Ti執(zhí)行之后的賬本狀態(tài) Si(交易 Ti是在狀態(tài) S_(i-1)的基礎(chǔ)上執(zhí)行的)。簡單講,Libra這個(gè)數(shù)據(jù)庫在邏輯上是一個(gè)線性的結(jié)構(gòu),交易記錄在數(shù)據(jù)庫中只能單向增長,像一部定格電影,在每個(gè)時(shí)間點(diǎn)上都有一個(gè)對應(yīng)的世界狀態(tài)的快照。

一筆交易的執(zhí)行過程

當(dāng)一筆交易請求提交到Validator上之后,會(huì)觸發(fā)一系列的處理過程。本文以“Alice向Bob轉(zhuǎn)賬10Libra”為例來詳解這個(gè)過程。

構(gòu)造交易

首先,Alice需要在本地構(gòu)造這個(gè)交易,就像填一張“支票”一樣,如下圖。

Validator 的工作

Libra在Validator上劃分出了多個(gè)邏輯組件,不同的組件負(fù)責(zé)不同的操作,這些組件包括:

  • Admission control(AC)

  • Virtual Machine(VM)

  • Mempool

  • Consensus

  • Execution

  • Storage

后面會(huì)結(jié)合下圖去解釋一個(gè)交易的執(zhí)行過程

接受交易

  1. Validator通過AC獲取交易。

  2. AC通過VM執(zhí)行交易檢查,包括:使用交易中的公鑰(地址)驗(yàn)證交易簽名(基于密碼學(xué)的數(shù)字簽名原理:有且只有通過Alice的公鑰解開Alice的簽名可以獲得和原文內(nèi)容一致的文本;由此可以確認(rèn)交易的發(fā)起者一定是Alice本人,且交易的內(nèi)容真實(shí)可信),檢查Alice余額是否足夠,交易序列號(hào)是否正常等。

  3. 當(dāng)交易通過檢查,AC會(huì)把這個(gè)交易放到Mempool中。

在 Validator 之間共享交易信息

  1. Mempool中可能已經(jīng)有很多筆交易了。

  2. Mempool會(huì)通過shared-mempool協(xié)議和其他Validator節(jié)點(diǎn)共享各自所有的已接受的交易信息。

打包提議

  1. 假設(shè)當(dāng)前Validator是共識(shí)過程中的proposer/leader(不在此詳細(xì)討論Libra共識(shí)算法的具體過程),該節(jié)點(diǎn)會(huì)從Mempool中拿出一部分交易,打成一個(gè)區(qū)塊(Block)。Consensus模塊負(fù)責(zé)同步這個(gè)塊到其他Validator節(jié)點(diǎn)上。

  2. Consensus模塊接下來負(fù)責(zé)協(xié)調(diào)各個(gè)Validator對該區(qū)塊內(nèi)當(dāng)交易內(nèi)容達(dá)成共識(shí),包括交易記錄的順序。

執(zhí)行區(qū)塊中的交易

  1. 當(dāng)Validator們達(dá)成共識(shí)之后,這個(gè)區(qū)塊(一個(gè)排序好的交易集合)會(huì)被送到Execution模塊。

  2. Execution模塊通過VM去按序執(zhí)行區(qū)塊中的交易。對于Alice的交易來說,執(zhí)行過程在邏輯上需要把Alice的賬戶余額減少,把Bob的賬戶余額增加;物理上需要對Resource部分的數(shù)據(jù)進(jìn)行修改。

  3. 執(zhí)行完成后,Execution會(huì)把這些交易按序添加到一個(gè)臨時(shí)的Merkel樹結(jié)構(gòu)中。

  4. Leader節(jié)點(diǎn)的共識(shí)模塊再次協(xié)調(diào)所有Validator節(jié)點(diǎn)對執(zhí)行結(jié)果進(jìn)行確認(rèn)并達(dá)成共識(shí)。

Commit 區(qū)塊

  1. 當(dāng)一個(gè)區(qū)塊當(dāng)執(zhí)行結(jié)果被絕大多數(shù)當(dāng)Validator認(rèn)可之后,Execution模塊就會(huì)從剛剛的cache中讀取之前的執(zhí)行結(jié)果,然后把所有當(dāng)交易提交到存儲(chǔ)模塊做持久化保存。

  2. 至此,Alice的轉(zhuǎn)賬交易完成,Alice的賬戶余額減少了 (10 gas) Libra,Bob的賬戶增加 10,Alice的 sequence number從 5變成 6

小結(jié)

從基本的設(shè)計(jì)結(jié)構(gòu)和流程上,Libra似乎沒有給世界帶來什么特別大的驚喜。Libra Reserve的發(fā)幣機(jī)制是一個(gè)特色,但更多的是金融層面的創(chuàng)新。在后續(xù)的文章中,我們會(huì)再看一下Libra的Move語言、性能和共識(shí)算法的等相關(guān)內(nèi)容。

參考資料:

https:///en-US/white-paper/ https://developers./docs/assets/papers/the-libra-blockchain.pdf https://www./2018/Understand-Blockchain-and-Bitcoin/

作者信息:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多