二、Libra的基本概念、核心技術與運營模式
Libra的吸引力不僅源于Facebook的全力投入,更源于其自身的諸多獨特設計。本章將從基本目標、底層核心技術、運營模式、當前監管態度幾個方面對Libra的基本情況進行全面闡述。這些概念及設計原理將成為下文探討其潛在影響的基礎。
1. 自我定位及生存基礎
自數字貨幣誕生以來,哈耶克(2019)的《貨幣的非國家化》與中本聰的比特幣創世論文便一直在哲學和方法論層面引導著整個行業。哈耶克在貨幣供給領域野心頗大,看起來更像一場自由主義革命:“避免我們被持續通脹驅向政府完全的控制和指揮,進而最終得以拯救文明的唯一辦法是:剝奪政府在貨幣供應方面的權力”。而中本聰則在論文中僅僅說比特幣是“允許有意愿的任意兩方在沒有可信第三方的情況下直接交易”,并且“交易從計算的角度無法撤回,從而保護賣家不被欺騙”。從中本聰論文通篇的文字表述看,比特幣在發明之初僅僅是為了降低可信第三方所引入的額外交易成本,并且從技術角度預防商業欺詐。但其“去中心化”的實現路徑,卻在某種程度上承載了哈耶克“非國家化”的理想。
正因如此,各國政府才對比特幣和其他類似數字貨幣實施打壓;也正因如此,Libra在創設之初便盡力避開取代主權貨幣的嫌疑。Libra白皮書(2019)在開篇處便十分明確地表達了與監管部門合作的態度:“一些(加密貨幣)項目還試圖破壞現有體系并繞過監管,而不是在合規和監管方面進行創新,以提高反洗錢舉措的效力。我們相信,攜手金融部門(包括各個行業的監管機構和專家)進行合作和創新,是確保為這一新體系建立可持續、安全和可信的支撐框架的唯一途徑”。
在此基礎上,Libra才有可能與各國政府探討其存在的意義:為更多人提供開放、即時和低成本的全球性流動貨幣,提升金融服務的普惠性和安全性。在當今比特幣已經部分淪為暗網和非法跨境交易工具的情況下,這個愿景頗有回歸比特幣創立之初心的意味。筆者認為,在現階段當且僅當數字貨幣與各國監管部門合作,才是確保自身合法生存的基礎,亦是長遠發展的前提。
2.核心技術
需要明確的是,Libra貨幣只是建立在Libra區塊鏈基礎上的應用之一,而非全部。因此對于Libra貨幣的分析實際應從兩個層面展開:第一是底層的區塊鏈技術,這是上層貨幣應用的基石;第二則是貨幣層面的規則設計。二者均為Libra貨幣的支柱,缺一不可。當前針對貨幣層面的分析如汗牛充棟,但供非技術出身的讀者閱讀的技術分析則略顯不足。本文將盡量嘗試在兩個層面都提供清晰完整的表述。
Libra白皮書中特別強調了三項技術,用以區分Libra和其他區塊鏈:
設計和使用Move編程語言;
使用拜占庭容錯 (BFT) 共識機制;
采用和迭代改善已廣泛采用的區塊鏈數據結構。
除Move語言外,其余兩項都是對現有技術進行改造。Libra有意避免了對現有技術的全盤否定,而是從更易于實現和安全的角度選擇了成熟方案。這種折衷考量和局部創新的思路貫穿了整個Libra的設計。從工程角度,這種思路更易于團結更多業內同仁參與其中,亦是被諸多全球性標準化工作(如4G/5G標準化等)所采用的方式。下文將對三種技術進行分別介紹。
(1)Move編程語言
Libra提供了長達26頁的技術論文來論述Move語言的特點。想要了解Move語言的優勢,必須首先了解以比特幣和以太坊(Ethereum,其編程語言為Solidity)為代表的傳統區塊鏈所用語言存在哪些問題。
首先,貨幣對于傳統語言來說并非一種特定的“資產”,而是像程序中的其他變量一樣,是一組數據,存在被任意虛增和復制的可能。現實中有價值的資產不僅數量嚴格受限,而且在轉移和交易過程會受到嚴密監控,不存在諸如轉移之后一方數量不減少,而另一方數量相應增加的情況。但在數字貨幣中,黑客曾多次利用整數溢出等漏洞大舉復制資產,造成過數億美元的損失。更進一步而言,即便在數字貨幣的原生語言中將其強制定義為資產,以及在編譯和運行過程中對轉移及增加予以嚴格限制,但該語言編寫的智能合約中可能會涉及用戶自定義的其他類型資產,這樣會失去語言的原生保護,從而需要開發者自行維護其安全性,這無疑大大增加了系統風險。
其次,傳統區塊鏈語言尚未在安全性和靈活性之間找到平衡點。智能合約是區塊鏈技術的重要應用之一,允許用戶利用區塊鏈的可信性來自動完成一系列自定義動作。一旦滿足了某項預先設定的條件,該條件下的一系列后續動作將會不可撤銷地執行。這些動作中可能會包含支付對價、權屬登記、保險執行、租約執行等。區塊鏈在其中的角色,類似于現實合約中具有強信用的中間人(如進出口業務中銀行的角色,或淘寶交易中支付寶的角色)。智能合約的出現,可以使現實中各類交易的安全性和便利性極大地擴展。但如果出現問題,也將令使用者遭受重大損失。
為了適應這種便利性,很多傳統區塊鏈語言采用了類似于Python和Ruby的動態類型語言模式。這可以大大簡化編寫程序的過程,因為無需給變量定義類型模式,也無需在編碼期間就了解系統將如何具體運行。這些都將在實際運行中再進行檢查或直接動態指派(dynamic dispatch)。此類語言通常具備高度的易用性,開發者可以快速實現功能。但事實上,與傳統的C/C++/C#/Java等靜態類型語言相比,動態語言是把發現風險的工作從編譯階段推向了實際運行階段。上述類型定義錯誤和代碼進入到無法預知分支的低級錯誤,在靜態語言中通過編譯和幾個簡單測試用例便可輕松暴露。對于一個必須高度可靠的交易系統而言,各類bug等到運行時出問題再去解決是無法容忍的。
為解決上述問題,Move的技術論文從四個方面介紹了Move的創新之處。
首先,Move定義了“一等資源”概念(First-Class Resources)。這一概念實現了上述“資產”的特點:不能憑空消失或被復制,必須在各個存儲間以“移動”的方式完成交易。不僅Libra貨幣,其他基于Libra區塊鏈開發的智能合約也可享有這樣的保護措施,從而較好地從根本上解決了上述問題。同時,Libra也允許用戶自定義一些可修改資源的關鍵行為(如創建、修改、銷毀等),但這些行為在系統中高度受控,只能由定義該種資源的模塊自身進行操作。
第二,靈活性。Move允許開發者像其他高級語言一樣調用各種過程(procedures),或使用面向對象的諸多概念,以便完成大量復雜的計算或邏輯功能。但為了兼顧安全性,其中摒棄了大量可能導致程序產生不可預知行為的引用或指針,從而使其更加符合線性邏輯,避免程序的非線性行為。
第三,安全性。當前其他語言在選擇可執行編碼層次時,為了照顧代碼安全性,都會選擇高級語言或匯編語言。前者邏輯較為清晰,但驗證安全性需要較為強大的編譯器;后者則更多需要在運行階段才能查出錯誤。Libra選擇了二者的折衷。其采用字節碼(bytecode)的模式,介于高級語言和匯編語言之間,并引入了字節碼驗證器(bytecode verifier)。這一做法可以避免向區塊鏈各個節點引入大計算量的編譯器,也無需等到實際運行時才能發現代碼問題,從而用較為低廉的成本換取了代碼的安全性。
第四,可驗證性。Move注意到了其他一些區塊鏈語言的常見問題,并由此對自身功能進行了一些限制:其一是不允許動態指派,因其容易混淆究竟哪一個模塊調用了特定功能,并造成非線性的程序行為;其二是不允許多個可變的指針同時指向一個變量,這會導致同一時刻該變量被多個來源進行修改,從而導致最終狀態難以預測;其三是對資源進行強制封裝,以保證只有本模塊能行使對該資源的修改權,從而防止外部模塊對資源的破壞。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。