RGB 魔法:比特幣上的客戶端合約

原文:《RGB MAGIC: CLIENT-SIDE CONTRACTS ON BITCOIN》

編譯:btcstudy

“智能合約” 這個術語的歷史比區塊鍊和比特幣還更久。它第一次出現是在Nick Szabo 於1994 年出版的文章裡,該文將智能合約定義為一種“計算機化的交易協議,可以執行合約的條款”。雖然從定義上來說,得益於比特幣的腳本功能,比特幣從一開始就支持智能合約,但這個詞是因為以太坊的支持者才火起來的,他們調整了智能合約原本的定義,成了“可以被一個全局共識網絡的所有節點冗餘式執行的代碼”。

雖然將代碼的執行委託給一個全局共識網絡有其優勢(例如,易於部署無主合約(unowed contracts);這樣的合約的一個例子是熱門的自動化做市商(AMM)),但這樣的設計也有一個重大缺陷:缺乏可擴展性(以及隱私性)。如果網絡中的每個節點都必須冗餘式地運行同一段代碼,可以運行的代碼數量就只能保持較低水平,否則會過度地提高運行節點的成本(因此阻礙去中心化)。

那麼,我們是否可以設計出一種系統,其合約的條款僅由參與方執行和驗證,而不是由所有的網絡成員了驗證呢?我們設想一家希望發行股票的公司的例子。與其將發行合約公開放在一個全球賬本上、使用這個賬本來跟踪這些股份在未來的所有權轉移情況,我可以直接私密地發行股份並將進一步轉讓的權利傳遞給買方。然後,轉讓所有權的權利可以傳遞給每一個新的所有權人,就像修改最初的發行合約一樣。如此一來,每一個所有權人都可以獨立地驗證自己收到的股票是真實的,辦法就是閱讀最初的合約並驗證轉移股份的所有操作都遵循了合約中的規則。

這不是什麼新鮮玩意兒,在政府的登記處流行之前,人們正是用這種辦法來轉移地產的。舉個例子,在英國,直到上世紀90 年代開始,地產所有權的轉移才強制註冊。也就是說,英格蘭和威爾士至今仍有15% 的土地是沒有註冊的。如果你要購買一塊沒有註冊的土地,你不是去登記處查證賣方是不是真正的所有權人,而是要驗證至少15 年內的所有權轉移鏈條沒有缺漏(這個時長足以假設賣方擁有充足的所有權)。這樣做的時候,你需要確保每一次所有權轉移都是正確執行的,並且用於之前交易的所有抵押貸款都已經還清了。這種模式的優勢是提高了所有權的隱私性,而且你不必依賴於政府土地登記處的維護者。另一方面,對買方來說,這讓驗證賣方所有權的工作複雜很多很多。

-圖片來源:未登記的不動產權的確認書 –

那麼,如何優化這種未登記的地產的轉讓呢?首先,要把它電子化。如果用計算機可以運行的代碼來驗證所有權轉移的全部歷史都符合最初的合約規則,買賣就會變得快捷和便宜許多。

其次,為了避免賣方一房多賣,必須實現一套發布證明系統。舉個例子,我們可以實現一條規則:每一次所有權的轉移都必須在一份知名報紙的一個特定位置刊登(例如:將所有權轉移操作的哈希值放在紐約時報的頭版右上角)。因為你沒法在同一個地方重複刊登相同的哈希值,自然也就不能重複花費。但是,使用著名的大報紙也有不利之處:

  • 為了驗證,你必須購買一大捆的報紙。這不太實際。

  • 每一個合約都需要在報紙上有一個專屬的位置。這不便於擴大吞吐量。

  • 報紙的編輯很容易就可以審查你,甚至在你的位置放置隨機的哈希值來模擬重複花費,讓潛在的買家都認為你的資產已經賣掉了,從而阻止他們購買你的資產。你必須信任報紙的編輯。

因為這些原因,我們需要找到更適合發布所有權轉移證據的地方。那麼,還有什麼地方比比特幣區塊鏈—— 一個業已建立的可信任的公開賬本、帶有保持抗審查性和去中心化的強大激勵—— 更合適呢?

如果我們使用比特幣,我們不應該使用區塊的固定位置(比如區塊中的第一筆交易,即coinbase 交易)作為發布所有權轉移承諾的地方,因為,就像紐約時報的編輯(可以決定報紙的內容),礦工也可以操縱它。更好的辦法是在一筆預定義的比特幣交易中放置承諾,更具體來說,是使用關聯著已發行的資產的所有權的UTXO 來發起的一筆交易。一項資產與一個比特幣UTXO 的聯繫,既可以通過發行資產的合約來建立,也可以在所有權的後續流轉中建立—— 每次流轉都可以指定某個UTXO 作為被轉移的資產的容器。這樣一來,我們就清晰地定義了所有權轉移的義務應該放在哪裡(即,放在源自特定UTXO 的比特幣交易中)。任何運行比特幣節點的人都可以獨立地驗證這個承諾,而且沒有礦工和其它實體能夠審查或阻止這種資產轉移方式。

RGB 魔法:比特幣上的客戶端合約

因為在比特幣區塊鏈上我們只發布了所有權轉移的承諾,不包括轉移的內容本身,所以賣方需要一條專門的信息通道,向買方提供證明其產權真實性的所有證明。這可以用許多方式來實現,甚至可以打印出證明、用信鴿來傳送,雖然有點不實際,但也算能夠勝任。但是,要避免審查和隱私性降級,最好的選擇莫過於建立一條直接的點對點加密信道;與信鴿相比,還有易於跟驗證證據的軟件集成的優勢。

上述基於客戶端驗證的合約和所有權轉移模式,正是RGB 協議所實現的東西。有了RGB,你可以創建一套合約,定義資產的權利、將資產分配給一個乃至多個UTXO 並指定這些資產的所有權可以如何轉移。合約可以從一套模板(叫做“方案(schema)”)開始創建,合約的創建者只需調整參數和所有者權利,就像傳統的法律合約做的那樣。當前,RGB 協議有兩類方案:一種用於發行同質化代幣(RGB20),另一種用於發行收藏品(RGB21);但在未來,人們無需更改協議層,就能以免信任的方式開發出更多方案。

舉一個更加現實的例子,一種同質化資產(例如公司股票、穩定幣,等等)的發行者可以使用RGB20 模板,創建一個定義了發行多少代幣、資產的名稱並攜帶額外的元數據的合約。然後,它可以定義哪些比特幣UTXO 有權轉移被創建的代幣的所有權,並分配其它權利給其它UTXO(例如增發權和重命名資產的權利)。每一個收到由此合約創建的代幣的客戶端,都可以驗證創始合約的內容,並驗證自己收到的代幣在歷史上的每一次所有權轉移都遵守了創始合約的規則。

那麼,今天我們能拿RGB 來幹什麼呢?首先,也是最重要的,它可以用於發行和轉移代幣化的資產,而且相比現在其它所有方案,其可擴展性和隱私性都要更好。在隱私性上,RGB 得益於所有轉讓相關數據都保存在客戶端的做法,區塊鏈的觀察者無法從區塊鏈上抽取出關於用戶的金融活動的任何信息(甚至無法區分包含了RGB 承諾的交易和普通的比特幣交易);此外,資產的接收方可以僅跟發送方分享盲化的UXTO(即TA 希望用以承接資產的UTXO 拼接一個隨機數後的哈希值),而不是UTXO 本身,所以轉讓者也無法監控接收方在未來的金融活動。為了進一步提高用戶的隱私性,RGB 還使用了bulletproof 密碼學機制來隱藏歷史上的資產轉讓數額,如此一來,未來的資產所有權人對以往所有權人的金融活動也只能形成模糊的認識。

至於可擴展性,RGB 也有優勢。首先,絕大部分數據都在鏈下保存,區塊鏈僅用於保存承諾,這就減少了需要支付的手續費,同時也意味著每個客戶端都只驗證跟自己相關的轉讓歷史,而無需驗證一個全局網絡的所有活動。因為RGB 轉賬依然需要發起比特幣交易,所以能夠節約的手續費看起來很少,但當你引入交易批處理技術後,這部分節約很快會變得非常可觀。實際上,你可以在一筆比特幣交易中放置一個承諾,將一個UTXO 相關的所有代幣(更廣義來說是“權利”)轉移給任意數量的接收者。假設你是一個服務提供商,需要同時支付給多名客戶;有了RGB,你就可以在一筆比特幣交易中承諾對幾千名要求不同資產的客戶的幾千筆轉賬,讓每一筆支付的邊際成本都變得微不足道。

低價值資產的發行者可使用的另一種節約手續費的機制是,在RGB 中,發行資產並不需要支付手續費。因為創建一個代幣發行合約並不需要在區塊鏈上承諾。一個合約只是定義了新發行的資產要分配給哪些已經存在的UTXO。所以,如果你是一名藝術家,希望創建一些收藏品代幣,你可以免費發行任意數量的代幣,僅在買方出現並請求把代幣轉移給他們的UTXO 時才需要支付比特幣手續費。

此外,因為RGB 是建立在比特幣交易上的,它也跟閃電網絡兼容。雖然在撰文之時還尚未實現,但創建資產專屬的閃電通道和路由系統,是可以做到的,就類似於正常的閃電交易運作的方式。

結論

RGB 是一個突破性的創新,使用全新的範式開啟了新的應用場景。但是,現在我們有什麼工具可用呢?如果你想要實驗這項技術的核心,你應該直接嘗試RGB 節點。如果你希望在RGB 上開發應用,有不想深入協議的複雜性,你可以使用rgb-lib 庫,它為開發者提供了一個簡單的接口。如果你想嘗試發行和轉移資產,你可以試用Iris Wallet(Android),這款錢包的代碼也是開源的。如果你想學習RGB,你可以看看這份資源列表。

Total
0
Shares
Related Posts