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),其目標是要做到:
在設計上,Libra借鑒了當前市場上已有的區(qū)塊鏈系統(tǒng),選擇了三個重要的技術方向:
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 StatesState(狀態(tài))指賬本中某個數(shù)據(jù)的狀態(tài)(值),在不同的時間節(jié)點上,數(shù)據(jù)可能有不同的狀態(tài)。Trasaction(交易)指一個去改變某些數(shù)據(jù)狀態(tài)的指令。比如:
另外,Libra網(wǎng)絡還維護了一個Ledger State,這里面存儲了賬戶地址和賬戶數(shù)據(jù)之間的映射。 Transaction 模型一個Transaction由下列內(nèi)容組成:
乍一看和很多傳統(tǒng)區(qū)塊鏈系統(tǒng)(以太坊)的Transaction模型類似,比較獨特的地方有兩處:Program和Sequence number。
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)絡通過一個 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ù)庫中存儲了這樣的一個三元組 一筆交易的執(zhí)行過程當一筆交易請求提交到Validator上之后,會觸發(fā)一系列的處理過程。本文以“Alice向Bob轉(zhuǎn)賬10Libra”為例來詳解這個過程。 構(gòu)造交易首先,Alice需要在本地構(gòu)造這個交易,就像填一張“支票”一樣,如下圖。 Validator 的工作Libra在Validator上劃分出了多個邏輯組件,不同的組件負責不同的操作,這些組件包括:
后面會結(jié)合下圖去解釋一個交易的執(zhí)行過程 接受交易
在 Validator 之間共享交易信息
打包提議
執(zhí)行區(qū)塊中的交易
Commit 區(qū)塊
小結(jié)從基本的設計結(jié)構(gòu)和流程上,Libra似乎沒有給世界帶來什么特別大的驚喜。Libra Reserve的發(fā)幣機制是一個特色,但更多的是金融層面的創(chuàng)新。在后續(xù)的文章中,我們會再看一下Libra的Move語言、性能和共識算法的等相關內(nèi)容。 參考資料:
作者信息: |
|