對,Facebook 的 Libra 既沒區塊也沒鏈,這些技術問題你應該知道
區塊鏈
47天前
4242

原創: 吳為龍 x 李畫,本文由鏈聞授權轉載,原文請見


Facebook 即將推出的加密貨幣 Libra 幣並不是運行在 Facebook 系統上,它將運行於 Libra 區塊鏈。Libra 將是一種穩定幣,它的諸多屬性,很大程度上會與 Libra 區塊鏈的屬性相關。


不同於一般的區塊鏈系統,Libra 既沒有區塊也沒有鏈,那麼它還能被認為是區塊鏈嗎?Libra 從代碼角度,改變了對數字資產和智能合約的設定,它為什麼要這樣去做?Libra 路線圖顯示它將從聯盟鏈轉為公鏈,這是一件容易達成的事情嗎?


螢幕快照 2019-07-04 下午18.09.56 下午.png


帶著這些疑問,我們請鏈聞特約撰稿人李畫與分布式存儲項目 Genaro 聯合創始人、趣派科技首席技術官吳為龍進行了一個對談。年輕的吳為龍是第一批區塊鏈開發者和經驗豐富的技術極客,實戰經驗涉及區塊鏈虛擬機、P2P 存儲、共識算法等諸多底層技術。


這個對談從三大焦點展開,包括了 17 個最值得關注的關於 Libra 的技術問題。瞭解 Libra 的技術特點和未來發展方向,可以從這裡開始。


Q:李畫 ,鏈聞特約撰稿人

A:吳為龍,分布式存儲項目 Genaro 聯合創始人、趣派科技首席技術官



焦點一:Libra 是區塊鏈嗎?


問:Libra 既沒有區塊也沒有鏈,我們能稱之為區塊鏈項目嗎?


吳為龍:Libra 是一個分布式帳本項目,廣義上講區塊鏈技術也稱為分布式本技術,所以可以認為 Libra 是區塊鏈項目。這個定義在德勤 2016 年的 DLT (Distributed Ledger Technology)報告中就已經被提出來了。



問:Libra 似乎是用 Merkle 樹這一數據結構代替了鏈式數據結構?


吳為龍:Libra 用 Merkle 維繫著一個很大的樹形結構數據庫,Merkle 樹中包含的可以認為是單一區塊中包含的狀態和交易;鏈的部分在其中則是通過狀態列表和事件列表來表達的。


相當於說 Libra 是將整體區塊鏈拆成了三個共同維護的樹,一個記錄交易,一個記錄狀態,一個記錄事件。如果非要用區塊的概念,可以把 Libra 看作是有幾個巨大的區塊,一直在往區塊里寫入新的經過驗證的數據。


這麼做的帶來的好處是在本維護中,Libra 不需要一直生成新的區塊:有交易時做相應的數據庫更改,沒交易時就保持現狀,甚至可以通過做 Merkle 樹的剪枝來減少戶本地備份的數據量。


但也會帶來問題,它會讓節點收入少了最大的那一部分,也就是出塊收益。在比特幣和以太坊中,相較於交易費,出塊收益是很大的一部分。至於這麼做帶來的其他的問題則需要看到實際的運行狀況才能知道。



問:不再是鏈式結構後,還能保證區塊鏈的難以篡改性和可驗證性嗎?


吳為龍:當然可以保證。難以篡改是通過共識來決定的,Libra 使用的 LibraBFT 本質上也是拜占庭型共識,保證了相關的確定性。樹型結構只是用來保證查找的。


也可以驗證。歷史數據包括相關的狀態和事件都是在通過了相關的共識達成一致後,被詳細地記錄在本上的,任何計算機只要同步了本備份都可以進行驗證,只需要在 libra 上直接下載即可。



問:Libra 的這種數據結構適合於其他的公鏈項目嗎?

 

吳為龍:不適合。最重要的原因是公鏈是需要激勵節點的,出塊收益是激勵中重要的組成部分,而 libra 是沒有出塊收入的,只有大型機構才能做此類實驗。


問:這一問題會制約 Libra 從聯盟鏈轉為公鏈嗎,也就是說 Libra 本結構決定了它是沒有出塊收益的,而如果沒有出塊收益,怎麼做 PoS


吳為龍:當然會制約。那這個問題就只能交給它未來的設計了。




問:Libra 自定義為數據庫,這種定義恰當嗎?在我的理解中,數據庫是一種不考慮拜占庭問題的系統。


吳為龍:Libra 完全的就是數據庫。


本地數據庫是不需要考慮拜占庭問題的,但分布式數據庫很早就開始解決這些問題了,比如 RAFT (Replication and Fault Tolerant)就是保證分布式數據庫強一致的,而 RAFT 就是簡化版的拜占庭解決方案。Libra 是通過 LibraBFT 共識來保障更好的分布式數據庫系統。




焦點二:Libra 區塊鏈技術的幾處重要不同


問:Libra 中很少提智能合約,與之相對應的概念似乎是「模塊」,智能合約與模塊有什麼不同?


吳為龍:智能合約是單戶生成無復用,模塊則可復用。這麼做帶來的好處就是可以通過設計模塊來組成比較複雜的系統,這對以太坊智能合約功能基礎的現狀會有較大的改善。


也就是說,未來模塊化的合約設計,通過調用合約可以很容易的將其中的資源合理地遷移,並且回調的時候也會減少漏洞的產生,從而可以設計出複雜的條件結算方式。


這麼做帶來的問題就是需要重新學習相關語言,從使用到上手的時間成本是很高的。



問:Libra 似乎是把數字資產定義為「資源」,而在其他區塊鏈系統中數字資產被定義為「value」。你怎麼看 Libra 做的這種改變?


吳為龍:Libra 中的資源更像是在比特幣錢包中的錢,而模塊就是將資源指定到某個特定的部分。


做個比較也許更好理解:以太坊是使用專用函數來通過戶生成智能合約的,同樣的戶,在 nonce 固定的情況下生成的是固定的合約地址;而在 Libra 裡面,通過類似的專用函數可以將模塊和資源進行綁定,而不用拘泥於單戶的合約生成。


這麼做帶來的好處是系統的靈活度更高。在 Libra 中也可以有開發者專門來做模塊,類似於模塊提供相關的 function。



問:有觀點認為「value」是可拷貝的,而「資源」滿足線性邏輯,它所代表的數字資產不能被複製和憑空消失,因而可以減少記錯帳的情況。你怎麼看這一問題?


答:Value 是可以拷貝,但是拷貝的動作是需要你提出交易,也是需要通過共識確認的。資源是不能憑空消失,但定義為資源與否只是表示這個數字資產本身是所有人都有可能使用的,不是只屬於某個特定的戶,它是被持有者放上來,然後在 Libra 的人都用模塊來使用這些資源。



問:Libra 注重安全,從技術白皮書看,它主要做了哪些工作來保證安全?


吳為龍:「記錄每一次的狀態,放進狀態列表,同時將事件放進事件列表」。這種設計下,由於每次的狀態都放進了狀態列表,相關產生的事件放在事件列表,就保證了每次狀態改變的原因和結果都是可追溯的。


本狀態直接對具有實際價值的數字資產進行編碼。事務執行必須確保在未經授權的情況下,不得複製、丟失或轉讓 Libra 幣等資產」。這種設計下,本狀態在初始值進入的時候即是需要有價值的,內部不允許任何情況的無驗證操作。


「事務只能生成事件,不能讀取事件」。這種設計允許事務執行僅為當前狀態的函數,而不是歷史信息,也就是說時間生成後就是時間戳,攻擊者無法通過回到過去的時間重新生成改變的事務,從而造成狀態改變帶來的資產損失。


「事務執行必須具有確定性和密封性」。這意味著事務執行的輸出是完全可預測的,並且僅基於事務和當前本狀態中包含的信息,並不具有外部效應。將虛擬機維持在沙盒中,不通過外部信息來進行內部判斷,好處就是維持一個穩定的可以驗證的結果,防止一些外部狀態影響。假設如果有網絡交互牽扯進來,比如添加匯率這個因素,那麼 10 分鐘前程序員看到的匯率很有可能和驗證的時候匯率不同,因此改變了結果。


總體而言,Libra 通過上述狀態列表、事務事件等的設計來防止黑客利用「狀態」進行攻擊。



問:Libra 中的新語言 Move 的關鍵特點是能夠定義「資源」類型,我們可以認為這是在說 Move 語言能夠支持發幣,也就是說 Libra 更大的野心是建立一個密碼貨幣和數字資產的平台,而不僅僅是支持 Libra 幣嗎?


吳為龍:Move 支持發幣。應該說它的野心是做一個模塊完備的結算平台,未來以支持 Libra 為主。由於資源(此處指常規定義下的資源)會越用越少,所以在不同的模塊下,應該會有不同的資源收費方式。



焦點三:Libra 帶來哪些疑問


問:Libra 採用拜占庭容錯共識,這是一種適用於聯盟鏈的共識;但 Libra 計劃以後轉為 PoS 共識,你認為這種轉換會有問題嗎?


吳為龍:有問題。最大的問題就在於 PoS 是鏈式最終一致的共識,BFT 是通過大量通信做的一致性共識,這兩種共識對於節點的定位不同。


PoS 節點主要是抵押出塊,對機器要求一般,只需要簽完名等待被隨機就好;BFT 節點需要一直保持通信來實現共識一致性,對網絡帶寬的需求會高,比如 Libra 的 10 秒確認。從 BFT 到 PoS 的轉換,是需要設計 PoS 的時候做一些調整的。


另一個問題就是 PoS 本身有一些問題需要克服,比如說純 PoS 的長距離攻擊。但因為 BFT 共識側重在如何通過 Leader 進行通信的步驟上,所以帶來的和轉換有關的問題就是,LibraBFT 的經驗或者工程改動如何遷移到 PoS 的設計上。



問:Libra 現在是聯盟鏈,計劃以後轉為公鏈,聯盟鏈與公鏈不同的特點會給轉換帶來什麼問題嗎?


吳為龍:聯盟鏈的節點需要擁有多級的許可,本地可以直接跑 Docker,不用擔心分布式資源的問題;公鏈的准入門檻就是只要能按照出塊的共識來做就可以,分布式資源有限,需要設計對應的虛擬機。


但 Libra 的節點權利並不是多層級的,所以 Libra 未來的轉換還是一個以共識變化為主的改動。



問:轉為 PoS 時,會不會存在新的驗證者需要被原先的驗證者批准才能進入的情況,從而無法實現「無需許可的區塊鏈」的願景?


吳為龍:那要看 Libra 如何設計了。它可以設計成需要原先的驗證者批准才能進入,也可以設計為用隨機的方式挑選候選者。



問:Libra 提到許多支付事務將在鏈下進行,你認為這種鏈下交易是用戶主動選擇還是默認狀態?這會不會帶來中心化以及安全問題?


吳為龍:這個鏈下應該是用戶主動選擇,就與即便閃電網絡存在,還是會有很多人使用比特幣轉或者通過交易所交易一樣。說不定會有 lightning network 版本的 Libra,畢竟 Libra 需要 10 秒才能確認。 


中心化問題一直存在,安全問題完全取決於使用者是否信任這個第三方。



問:全節點的數量對於公鏈有重要的意義,但在 Libra 中,全節點是否還有重要意義?


吳為龍:全節點在這裡只是一個本備份。



問:Libra 中私鑰在用戶手中嗎?


吳為龍:LIbra 的私鑰在用戶手中。Libra 是用戶先在本地生成公私鑰,再通過 Libra 提供的一個創建戶的事務,並在完成鏈上的共識後,在 Libra 中生成相關的號。在邏輯上,LIbra 是可以做到隱私的,但這是每一個用戶都會生成自己的公私鑰的情況下。如果有一個第三方「方便」的工具幫你生成這個號,那麼數據就會在他人手裡。



以上即是關於 Libra 區塊鏈的問題與回答,希望能幫助你更加瞭解 Libra 區塊鏈,進而更懂得 Libra 幣。



鏈聞 ChainNews 憑借遍布全球的豐富報道資源與數據挖掘能力,旨在為中國的 FinTech 金融科技菁英與決策者們提供每日不可或缺的資訊與深度分析,立志成為價值互聯網時代的價值發現者、創造者。 微信公眾號:鏈聞ChainNews(ID:chainnewscom);官網:www.chainnews.com。
新聞排行
熱門新聞

© blocktimes——專業的區塊鏈媒體平臺