乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Libra技術原理淺析(一):基本設計

       panpan研報社 2019-08-11

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

      Libra Blockchain 初窺

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

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

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

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

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

      • 設計了一套新的智能合約編程語言,Move;

      • 選擇Byzantine Fault Tolerant作為共識算法;

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

      Libra Reserve

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

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

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

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

      Libra 的設計

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

      Transactions and States

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

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

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

      Transaction 模型

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

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

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

      • Program,交易指令;

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

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

      • Sequence number,序列號;

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

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

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

      • Program部分包含三個部分:

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

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

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

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

      Account 模型

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

      Versioned Database

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

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

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

      構(gòu)造交易

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

      Validator 的工作

      Libra在Validator上劃分出了多個邏輯組件,不同的組件負責不同的操作,這些組件包括:

      • Admission control(AC)

      • Virtual Machine(VM)

      • Mempool

      • Consensus

      • Execution

      • Storage

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

      接受交易

      1. Validator通過AC獲取交易。

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

      3. 當交易通過檢查,AC會把這個交易放到Mempool中。

      在 Validator 之間共享交易信息

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

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

      打包提議

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

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

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

      1. 當Validator們達成共識之后,這個區(qū)塊(一個排序好的交易集合)會被送到Execution模塊。

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

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

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

      Commit 區(qū)塊

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

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

      小結(jié)

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

      參考資料:

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

      作者信息:

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多