Libra 的天秤和 First-class Asset

圖片描述

6 月 18 日,Facebook 加密貨幣項目 Libra 發佈的白皮書引起了區塊鏈業內人士的廣泛關注。Nervos 團隊及社區夥伴們也對 Libra 進行了大量的討論。

Nervos 合夥人王博認爲:

所有討論 Libra 是不是一個好貨幣,算不算貨幣以及 Facebook 搞的聯盟鏈是不是真區塊鏈的討論都搞錯了重點。Libra 白皮書第一句寫得非常清晰「...爲十億人服務的金融基礎設施。」貨幣只是金融基礎設施的基礎。

有了 Move 智能合約,有了用戶和基礎資產,Libra 上將誕生有史以來摩擦最小的金融服務。會有些什麼服務呢?餘額寶、花唄、借唄、工資理財,等等。區別是這些服務很有可能是由全球化的第三方提供的,而且他們之間可以互相依賴:房貸可以在鏈上被分割成小額理財出售給其他用戶。現在,Open Banking 剛有了個概念,API Bank 剛有了文檔,針對它們的降維打擊就來了。

區塊鏈發展到現在展現了兩個層面的獨特價值。一個是資產的去中心化發行,就是所謂的傳統公鏈價值。一個是金融的去中心化服務,它服務的對象可以是傳統金融資產,比如貨幣,債券等。後者對世界的價值一點不比前者小。Libra 就是定位在後者的頭部公鏈。

Libra 定位在金融基礎設施,很準確很有價值。它可以大幅降低金融摩擦,爲用戶提供價值。

Libra 其中的一個亮點是提到了「First-Class Resources」這個概念,在 Move 編程語言的白皮書中這樣寫道:「First-class Resources 是一個非常普遍的概念,程序員可以使用實現安全的數字資產(的發行),還可以編寫正確的商業邏輯來包裝資產和實施訪問控制策略。」

First-class Resources 翻譯過來是「資源是一等公民」,在 Libra 中用戶可以發行自己的資產,並且可以被用戶及腳本直接引用和操作。

而關於這個概念,實際上 Nervos 架構師 Jan 在去年的文章《First-class Asset》中已經對這個概念進行了深入的分析。

First-class Asset

區塊鏈上的底層模型設計,實際上就是分別以比特幣和以太坊爲代表的兩種模型:

  • 比特幣的 UTXO 模型
  • 以太坊的 Account 模型

而實際上二者的差異千差萬別,代表了兩種思路。

以太坊的 Account 模型和銀行賬戶類似,在賬戶中記錄用戶的餘額。賬戶是用戶直接操作的對象,資產的轉移是由賬戶作爲用戶的代理實現。但是當需要對用戶定義的資產進行操作的時候,則需要引入第三方,即託管加密資產的智能合約執行資產轉移流程。

而比特幣的 UTXO 全名爲「Unspent Transaction Output」,每個 UTXO 都是比特幣,UTXO 中都通過一段鎖定腳本(lock script)記錄這個比特幣的所有者,我們可以通過比特幣腳本對 UTXO 進行編程實現部分業務邏輯,比特幣就是一種「First-class Coin」。

而 Nervos CKB 中使用 Cell 模型進行構建,Cell 是一種通用化的 UTXO 模型,可以存儲任意類型的數據,並在基於 RISC-V 指令集編寫的 CKB-VM 加持下,能夠實現更多的商業邏輯。Cell 可以被直接引用,作爲參數傳遞給腳本,Cell 的所有者可以直接更新 Cell 中保存的狀態,不需要經過任何的第三方。

通過 Cell 模型可以發行用戶定義資產(User Defined Asset),可以這樣來構造:

  1. 設計資產定義合約(Asset Definition),規定資產的主要約束(例如總數量,發行者,交易前後數量不變等)。
  2. 保存合約代碼到 Asset Definition Cell 中。
  3. 在滿足發行權限的情況下,發行者發行資產,並將資產狀態保存在另外的 State Cell 中。State Cell 的 Type 字段引用保存了資產定義的 Code Cell,保證 State Cell 的變化受到資產定義的約束。
  4. Asset Cell 的持有者可以通過更新 Lock 來改變 Asset Cell 的所有者。

實現 First-class Asset 之後,我們能夠做什麼?

實現 First-class 之後,最大的區別就是:用戶掌握所有權,能夠對資產進行直接的操作,而不是如 Account 模型那樣調用合約賬戶進行間接操作。

特別是,在不同區塊鏈之間資產的遷移過程中,我們需要遷移的是資產而不是賬戶,這方面 Account 模型就受到了很大的阻力,比如知名的 Kelvin Fichter 提出的 EVM-On-Plasma 問題。

Asset Cell 可以被引用,可以直接作爲其它合約的參數傳入。只要引用 Asset Cell 的 input 有正確的用戶授權,合約就可以正常的使用用戶的 Asset Cell。

資產定義與資產狀態分離。Asset Definition Cell 的所有者是資產的發行者,而 Asset Cell 是屬於每個用戶的。Asset Cell 的授權邏輯和業務邏輯分離,所有權完全由自己的 lock 決定,與 Asset Definition 的邏輯無關,這意味着 First-class Asset 不是託管在資產發行者、開發者或是資產定義合約的手中,而是真正完全屬於用戶的。

用戶的資產相互隔離,用戶資產狀態獨立,對經濟設計問題帶來了解決方案。公鏈的經濟模型需要關注狀態存儲激勵問題,用戶在區塊鏈上保存狀態不僅需要支付寫入費用,還應該承擔與存儲時間成正比的存儲成本。在以太坊提出的狀態租賃方案中,最大的痛點是針對用戶的資產狀態混合保存的合約(如 ERC-20)狀態租賃收取,而在 Cell 模型中,只要 Asset Definition Cell 的 lock 邏輯允許,資產定義可以獨立更新。

接下來我們還需要做什麼?

除了通過 Cell 模型實現了 First-class Asset 以外,Nervos CKB 還將計算移到了鏈外,鏈上只需要對狀態進行驗證的邏輯。獨特的狀態模型和計算驗證分離,這兩點決定了未來在 Nervos CKB 上會出現新的、有趣的 DApp 範式。

從 CKB 白皮書完成到現在的一年半時間裏,我們看到越來越多的人開始關注和討論 First-class State 和 First-class Asset 這兩種新的思路(雖然大家用的名詞各自都不一樣),這些進展讓我們非常興奮。如果你有興趣對 First-class State 和 First-class Asset 進行更多的探討,或是在 CKB 的編程模型上有什麼有趣的想法,歡迎聯繫我們討論:
https://talk.nervos.org

CKB 的代碼已經完全開源,這篇文章介紹的內容在代碼中都已經實現。歡迎給我們的代碼提出各種意見:

https://github.com/nervosnetw... (CKB 上用 Ruby 腳本編程的示例,理解 CKB 上編程模型的最佳入口)
https://github.com/nervosnetw...
https://github.com/nervosnetw...

文:Ryan

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章