前日,臉書公佈其「Libra」計畫的白皮書,同時也公佈了 Libra 協議的技術白皮書。Libra 區塊鏈參考了許多現有的區塊鏈技術,包括以太坊的 Account-based、實用拜占庭容錯,而 Libra 雖然名稱是區塊鏈,但本身的結構並沒有區塊;此外,他們開發了一個獨特的智能合約語言「Move」。
Libra 技術白皮書由 53 人署名撰寫,雖然臉書執行長馬克.祖克伯、區塊鏈項目領導人大衛.馬庫斯都沒有署名參與,但也包括了世界各個頂尖名校,像是史丹佛、卡內基美隆等的計算機科學博士生、教授。
這 29 頁的論文似乎集各家大成,在評估各區塊鏈(或分散式帳本結構)的優勢後,進而設計出一套最適合的機制與技術架構。
但 Libra 並沒有表示它們解決了所有區塊鏈面臨的問題,這份早期發布的白皮書主要在吸引更多社群討論與反饋。
五年後:從聯盟鏈變成「公有鏈」
如釋出的消息,Libra 的節點是由 Libra 協會裡的機構所運行,且必須通過一定的門檻,而參與的機構需要連續五年繳交發展金,每年至少繳交 1,000 萬美元的資金幫助 Libra 發展,且參與的機構需要成立非營利組織,而在初期會由 Libra 協會運行這個區塊鏈。
而這種由特定組織內運行節點的區塊鏈,又叫做許可制區塊鏈,或是聯盟鏈,這部分與 Hyperledger 十分相似。
在技術白皮書也直接了當的寫道:「Libra 的協議是由不同機構共同維護的可編程資源的數據庫」。
而從白皮書看來,Libra 會在開放越來越多參與的機構,最後會開放 100 個節點,實現每秒 1000 筆交易,這些機構必須透過另外獨立的代幣進行鏈上投票,進而管理 Libra 的相關決策。
Libra 最後則會演變成公有區塊鏈,所有人都可以作為節點驗證交易,似乎暗示了未來將會走向權益證明(Proof of Stack,PoS)區塊鏈,技術白皮書中寫道:
隨著時間演進,節點資格將逐漸開發,變成無需許可的區塊鏈(公有鏈),而成為節點的資格就在於抵押了多少 Libra 代幣。
可能是因為 Libra 現在類似許可制區塊鏈,交易歷史較不容易被重寫,它不會要求用戶驗證整個帳本,用戶只需要持有最後一個被驗證的內容,這點與 R3 的 Coda 類似,白皮書寫道:
「歷史數據可能會超出單個服務器可以處理的數量。驗證者可以隨意丟棄在處理新交易時不需要的歷史數據。」
不算區塊鏈?
Libra 不斷在各種介紹中稱呼自身為區塊鏈,這點十分令人困惑。Libra 嚴格來說並不算是區塊鏈,這點在 Libra 的技術白皮書中寫道:
分散式帳本中沒有交易區塊的概念。
在 Libra 中,並沒有區塊鏈形式的數據結構,取而代之的,在 Libra 之中是一種邏輯結構,而這種結構是用來協調系統的已確認快照(comfirm snapshots of the system state )。所有數據都儲存在「單版本化數據庫」中,數據庫中有 64 位數的哈希值,這些哈希值對應了系統執行的交易數據。
有趣的是,白皮書表示數據庫是針對「可編程資源」,而不只是可編程貨幣。這代表 Libra 不僅是支付系統,也可能在之上撰寫智能合約。
類似 PBFT 的共識演算法
Libra 的共識演算法「LibraBFT」基於 HotStuff,而該系統的節點驗證方式類似於 20 年就出現的實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT),其方式如下:
- 節點輪流當領導驗證節點(Leader),客戶端的交易數據給領導節點。
- 領導節點將交易數據交給其他驗證節點。
- 領導節點和驗證節點同時驗證此交易,並各自形成包含驗證數據的新帳本數據。
- 驗證者在新帳本數據投票,產生共識協議,包含「交易 Ti 」以及新的帳本「 i 版本」。
- 客戶端可向驗證節點查詢數據,包括整個帳本。
– 圖片來源:Libra 白皮書 –
這個共識演算法與 PBFT 非常相似,每一個收到信息的節點,都會廣播至其他人,不斷重複進行信息交換,相互驗證,讓可信的節點之間能夠確認正確的信息,識別出有問題的節點。這種系統可以容忍 33%、也就是三分之一的不誠實的節點作惡。
Libra 的帳戶系統:Account-based
Libra 區塊鏈協議的帳戶是匿名的,用戶經過 KYC 認證後,可以透過生成多個私鑰對創建多個帳戶。由同一用戶控制,而帳戶之間沒有固有的連結。這是參考比特幣和以太坊的設計。
而 Libra 的帳戶系統是接近以太坊的 Account-based,意指每個人都有一個帳戶,每個人透過私鑰控制自己的錢包,能夠存錢、轉帳的私人錢包。每個用戶可以生成一個帳戶(地址),而這個帳戶是唯一的,該帳戶可以分配任意數量的資產。
其中「交易」特別指的是由個人帳戶所送出的簽名封包,可以是純粹的轉帳,也可以是拿來啟動智能合約的Function call。在 Account-based 的系統下,Libra 的快照除了包含的交易列表外,還有一個 Global states 紀錄所有帳戶的餘額狀態。
帳本數據儲存問題:尚未解決
帳本數據儲存資源遭到濫用是以太坊(Ethereum)目前遇到的問題,即用戶在區塊鏈帳本增加佔用的存儲資源時,不需要額外支付成本,導致資料儲存量無限制增加,此點動區在與近期發布測試網的公有區塊鏈 Nervos 的訪談中曾特別討論。
而 Libra 在這個問題上似乎尚未找到答案,白皮書寫道:
我們預計,隨著系統的使用,最終與帳戶相關的存儲成長可能會成為一個問題。
目前還不確定 Libra 是否考慮像未來「以太坊 2.0」的更新中,正考慮實現的一種狀態租賃(State Rent)功能,即向服戶收取存儲數據的費用,Libra 技術白皮書指出,為了管理對計算容量的需求,Libra 協議將收取以 Libra 代幣計價的交易費用,但沒有明確定義:
正如 Gas 鼓勵負責任的使用計算資源一樣,我們期望存儲可能也需要類似基於租金的機制。
我們正在評估各種最適合生態系統基於租金的機制。
Move 智能合約語言
在 Libra 技術白皮書中提到了一個新的智能合約語言,叫做「Move」,許多開發者都認為 Move 是為了數字資產而生的智能合約語言,這點又類似於以太坊。Move 智能合約語言有三種用處:發行數字資產(像是代幣)、靈活處理區塊鏈交易、節點(Validator)管理。
Move 採用的是靜態類型系統,本質上是一種邏輯約束。相比以太坊的智能合約語言來說要嚴格地多,這種形態的優點是,很多編寫代碼低級錯誤都可以在編程的時候發現,而非運行程式之後才發現。
然而,除了降低錯誤率之外,Move 智能合約語言還導入了「First-class Resources」。
傳統的編程語言,包括以太坊智能合約語言中,對於數字資產的記帳是可以在編碼的時候定義,這導致了一個問題:如果智能合約的邏輯有誤,會導致記帳錯誤。事實上記錯帳的智能合約相當得多。譬如說,小動轉了 10 塊錢給小區,結果小區的帳戶多了 10 塊錢,小動的賬戶餘額卻沒改。這種錯誤在過去兩年層出不窮。
Move 智能合約語言吸收「線性邏輯」類型的傳統立論,這種資源類型叫做 Resource。數字資產是用「Resource」來定義,這樣一來,數字資產就像資源一樣,這樣就會產生兩種特性:數字資產不能複製、數字資產不能憑空消失。
技術白皮書中一段話寫道:
一等資源(First-class resources)是一種非常普及的概念,工程師不只可以用拿來發行安全的數位資產,同時也可以編寫正確的商業應用程式邏輯,讓數位資產的交易更為安全。
這意味者,Move 智能合約語言是專為是為操作數字資產而產生的,Move 的靜態類型系統使得智能合約代碼能夠在編譯期,檢查出絕大多數的資源使用錯誤。避免智能合約出現漏洞。
現在Move語言並沒有開放一般人使用,Libra 在官網介紹中寫道,未來將會開始擴展智能合約擴展Move平台,並持續優化:
Move 語言目前僅用於內置智能合約,例如管理驗證者節點集和Libra幣的合約,隨著這種語言趨於穩定,協會計劃面向所有第三方開發提供。
?相關報導?
臉書發幣,歐美政府憂心:美議員呼籲臉書「暫停計畫」接受質詢;歐洲政府要求加強科技監管
快訊》一文看懂,臉書正式發佈加密貨幣《Libra》——「將服務全球 17 億沒有銀行帳戶的公民」
《BlockTempo動區動趨》LINE官方號開通囉~立即加入獲得第一手區塊鏈、加密貨幣新聞報導!