請關注「應用治理」,這是 DApp 的阿喀琉斯之踵

買賣虛擬貨幣

鏈聞ChainNews

公眾號ID:chainnewscom

在每個人都在談論「DeFi」和「Staking Economy」的時候,鏈聞希望帶領中國的加密貨幣社羣考慮另外一個值得討論的話題:「治理」。治理是一個社會學話題,也是一個技術話題。

最近,鏈聞已經連續發表文章,透過「公地悲劇」為切入口,討論關於開放社羣的治理原則治理框架

今天,我們透過技術的視角審視關於去中心化應用的治理問題。這篇文章有些燒腦,它提出了一個嶄新的視角,即從應用治理的角度來看應用該選擇什麼樣的公鏈做開發

受訪者:劉毅,Random Capital 合夥人

採訪 & 撰文:李畫

讓我們先從區塊鏈的存在意義說起。區塊鏈能帶來的最大好處之一,是降低交易成本,重要原因在於它能夠最小化信任。但如果在對去中心化應用進行升級和修改時,不是以去中心化治理的方式來完成的,顯然就會破壞掉這種信任。

不同的公鏈對應用的治理有不同支援程度。比如以太坊不支援應用的去中心化治理,Polkadot 則支援應用的鏈上去中心化治理。

激進一點來講就是,智慧合約方式的應用都不支援去中心化治理,這類應用更應該被定義為可驗證應用;應用鏈方式的應用支援去中心化治理,它們才是真正的去中心化應用

不過需要注意的是,本文只是提出了一個可供討論的觀點,並不是做出某種結論,其目的是為了探索「鏈上治理」這個領域的各種可能性。

就這個話題,我們邀請了 Random Capital 合夥人劉毅詳細講述他的看法

劉毅是區塊鏈和大資料技術專家,有 20 年多種資本市場投資經驗,自 2013 年初便開始投資比特幣,並長期從事區塊鏈天使投資。除了是區塊鏈和大資料技術專家之外,劉毅還有著生物學的研究背景,這或許正是他能從「進化」角度出發對區塊鏈進行思考的重要原因。

劉毅,Random Capital 合夥人,

清華大學碩士,區塊鏈和大資料技術專家。

20 年多種資本市場投資經驗,比特幣早期投資者

區塊鏈透過「信任最小化」降低交易成本

問:在你看來,目前去中心化應用(DApp)的發展遇到了什麼瓶頸?

劉毅:為什麼這麼多年智慧和約平臺上沒出現真正的去中心化應用,很重要的原因是這些應用不能被修改。應用本身不能修改、不能演進的話,就無法被「進化」驅動,也就不會帶來什麼革命性的東西。我們做網際網路應用或者手機應用,幾周就要對應用做一次升級,去增強功能或者適應新的需求。

此外,所有的程式都會有 bug,bug 不能修復就會帶來一系列嚴重的問題,甚至會導致整個應用的失敗。

問:不過我們看到也存在一些修改應用的方法?

劉毅:是的,但在區塊鏈上,我們必須以去中心化治理的方式對應用進行修改。

區塊鏈創造的是一個高效的市場,一個交易協議,用這個協議去參與交易的話,能夠降低交易成本。交易成本是最核心的一個概念,人類的經濟活動,包括網際網路、比特幣、區塊鏈,它們帶來的革命都可以用降低交易成本來解釋。

去中心化應用是用加密技術實現的交易協議,它夠降低交易成本中最大的一部分——信任成本。或者我們叫「信任最小化」,交易的參與者只需要信任整個加密協議網路,不需要信任交易對手。

而「治理」就是修改、完善加密協議的過程。治理是必須的,否則加密協議就只能是僵死的。但如果治理是中心化的,加密協議就會跟中心化網際網路巨頭的業務沒有區別;只有治理是去中心化的,才能最小化信任。

問:怎麼理解「交易成本」?

劉毅:交易成本有很多種,從找到交易對手,到跟他討價還價,到決定完成交易,到簽署合同,到執行交易,到發生爭議後的解決方法等等。為了完成這筆交易,會發生多種型別的交易成本。

貨幣的每一次更新換代都是因為新的替代品能夠降低交易成本,這裡最主要的是支付成本。支付成本本身也很複雜,它包括把貨幣帶到交易現場交給你,你來鑑別這個貨幣的真偽,然後再把這個貨幣帶離交易現場。

紙幣代替鑄幣是降低支付成本,鑄幣代替貴金屬貨幣也是,因為鑄幣的一個銀錠就是一兩,你不用稱也不用剪,這就降低了支付成本。從紙幣到數字貨幣,從數字貨幣到密碼貨幣,也都是在降低支付成本。

問:密碼貨幣是如何降低交易成本的?

劉毅:比特幣早期用例一個是跨國轉賬、跨國支付,一個是暗網交易。在這兩類交易裡,它都有非常明顯的支付成本的優勢。在後一種交易裡,比特幣還能降低交易成本中的隱私暴露的成本。

所以,比特幣發展起來並不是因為它是一個投機品,而是它在特定的交易場景裡就是一個更好的貨幣。它代表的是第一代的密碼貨幣。

問:區塊鏈是怎麼降低交易成本的?

劉毅:拿以太坊來說,以太坊提供一個圖靈完備的虛擬機器,你可以透過它實現可程式設計的密碼貨幣,這是第二代的密碼貨幣。

這種密碼貨幣不僅具備比特幣的優點,還能夠透過可程式設計和自動執行這些特性,降低信任成本,而信任成本一直是交易成本里特別大的一部分。

比如你參加某個募資,打了以太到智慧合約後,並不會擔心得不到代幣,因為智慧合約裡寫定了,你只需要相信以太坊和這個合約就可以。

除了那種一手交錢一手交貨、而且你能鑑定貨幣質量的簡單交易以外,你都要在交易中一定程度的信任對方,或者說你要承擔交易對手風險。

這個風險本身就是成本。如今在有效市場裡所有的風險都可以被定價,風險大其實就相當於你投入的成本高。如何降低這個風險?只能找成名已久的大的公司交易,相信這個運營實體。

這帶來的問題就是中心化。比如你要去納斯達克上市,你就只能找高盛、摩根士丹利這幾大投行,它們已經把這個業務給壟斷了,其他的小玩家進不來,小玩家提供不了信任。

這時候它們作為中介就會不斷地去擠壓兩邊的利潤,把自己的利潤最大化,但你沒有辦法去把它給幹掉,因為在它壟斷的情況下,你沒有其他方式去產生信任、創造信任。

這其實就是區塊鏈要解決的最大的一個問題,就是去中心化、信任的最小化。從經濟學角度來說,信任最小化才是區塊鏈存在的最重要的意義

問:區塊鏈是如何做到信任最小化的?

劉毅:智慧合約就是一個協議,它是由以太坊保證執行的,只要你相信以太坊,信任這個協議,你就可以相信這件事,而不需要去相信交易對手方,這就做到了信任的最小化。

為什麼相信以太坊?因為以太坊是去中心化的運作方式,你相信任何一個個體或組織都不可能去控制以太坊。比如某個智慧合約募集到了 20 億美元,它能拿出 10 億美元去賄賂以太坊,把這個合約給改掉嗎?是不可能的,這就是我們信任以太坊的基礎。

那你為什麼相信智慧合約?因為它是可驗證的

不過這種可驗證性帶來了矛盾:要想可驗證,就不能修改、不能升級應用;不能修改應用限制了應用自身的創新和發展;可一旦修改應用,又會破壞其可驗證,沒法最小化信任。這就是去中心化應用的阿喀琉斯之踵。

智慧合約平臺上的應用修改方法

問:那麼現在大家是如何解決去中心化應用的修改問題?

劉毅:其實有程式設計師提出了用 delegatecall() 這種模式繞開智慧合約不能被修改的限制,實現應用的可修改、可升級。我在後邊介紹這種方法。

因為智慧合約不能被修改,目前比較多的做法就是去做一個新的智慧合約,讓大家遷移到這個智慧合約裡來

比如 Augur 的版本 2 跟版本 1 就是相互獨立的兩套智慧合約。版本 1 市場會在 2019 年 9 月 15 號被關閉,使用者如果在版本 1 上建立延續到 9 月 15 號之後的預測市場,就要受影響。

這會給直接或間接使用 Augur 的使用者帶來不便,還有可能造成部分使用者的財產損失,以及喪失一部分網路效應。

你還會發現 Augur 版本 1 到版本 2 的升級間隔了將近 1 年時間,但其實有很多早已發現的 bug 要解決,以及新增的功能要上線。但因為升級就會傷筋動骨,所以不可能頻繁升級,不可能快速迭代。

這種升級方式還有一個很大的問題就是依賴於使用者對專案方的信任。Augur 是知名專案,融資規模大,使用者對專案方會比較信任,不會太過擔心新的智慧合約的信任問題。

但是有些應用是小團隊開發的,甚至是由匿名開發者開發,類似 Augur 這樣的升級幾乎不可信,新版本的合約無法繼承老版合約的網路效應,一切需要從零開始。

問:delegatecall() 模式是如何實現對應用的修改的?

劉毅:delegatecall() 是一個函式,我們可以用一張圖來說明。圖中方框都是智慧合約,使用者對該應用的交易請求是發給代理合約 Proxy 的,Proxy 沒有業務處理邏輯,它的作用是把這個請求轉發給實際的處理合約 V1,資料則存到專門的儲存合約 Key-value store 上。

代理合約儲存著指向處理合約的指標,升級應用就是寫一個新的處理合約 V2,把代理合約的指標從指向 V1 變為指向 V2,那麼 V1 就被廢掉了。這個變動的過程應用的使用者是感受不到的,因為資料並沒有動。

現在以太坊上覆雜的智慧合約幾乎全都採用這種模式開發,他們管這叫應用的「可升級性」,一些標準庫已經實現了這種模式。

問:delegatecall() 模式會破壞信任最小化嗎?

劉毅:會。delegatecall() 模式的缺點就在於它破壞了可驗證性。我看了某個智慧合約程式碼,認為可以信任它,然後我就用了,但是用著用著你把裡邊的一些東西給改掉了,而且改的時候是不需要通知我的。

使用者要不要信任這樣的應用?有兩種情況。第一種是使用者通讀了智慧合約,知道合約中哪些邏輯是可以被改變的,哪些邏輯是不可以被改變的。如果使用者認為可以被改變的部分不影響對智慧合約的信任,也就是說不管可變的東西怎麼變,都沒有破壞我們之間的約定,那信任還是可以延續的。

這個信任門檻其實很高,因為即使使用者能讀懂智慧合約程式碼,也不太可能說把裡面所有的邏輯分支都給理解清楚了。

這是我不喜歡這種可升級模式的原因,它把智慧合約原本的可驗證性給破壞了,但又沒有帶來新的東西。

它最後其實又回到了中心化網際網路的老路上,就是相信智慧合約後面的這個人或這個組織,這是使用者可以信任應用的第二種情況。

比如說 TUSD 這個合約,它是一個穩定幣,但它百分之百法幣儲備是受美國紐約金融局監管的,還定期由老牌審計所 Cohen & Co. 出審計報告。這樣的話你就可以相信它,而不用去關注它的智慧合約是怎麼寫、怎麼升級的,它們的合約也確實是可升級的。

在 delegatecall() 模式下,要麼就是產生高的信任門檻,使用者要能看懂合約;要麼就是回到中心化信任的老路上,透過區塊鏈實現信任最小化的方式被破壞了

以去中心化治理的方式修改去中心應用

問:如何才能在不破壞信任最小化的情況下,實現對應用的修改?

劉毅:其實已經有人在探索這條路了,比如說 MakerDAOAragon 等等,它們都是可升級的應用,但決定是否升級應用的不是某個公司或某個人,而是一個去中心化組織「DAO」。

我認為只有採用 DAO 做治理的應用才是真正的 DApp,去中心化的應用;其他的都是「VApp」,可驗證的應用

問:以太坊上的應用可以用 DAO 升級,為什麼說以太坊不支援應用的去中心化治理?

劉毅:在智慧合約平臺上以 DAO 的方式修改、治理應用會很費勁。

第一個問題是它是要先確定合約的什麼地方可以修改,什麼地方不可以修改的。如果 bug 出在不能修改的地方,或者需要修改原先認為不需要修改的地方,那麼即使 DAO 中所有的利益相關人都同意修改,一樣改不了。這是智慧合約本身的限制。

第二個問題是智慧合約平臺本身是為了開發可驗證應用的,它沒有提供跟 DAO、跟應用治理相關的基礎設施,也就是說,它無法實現應用的可程式設計的治理。

智慧合約平臺開發的應用都存在著上述這兩個問題,但透過應用鏈開發的應用可以解決這些問題。

比如 MakerDAO它透過 DAO 合約進行過多次投票來調整穩定費率,已經是以太坊上去中心化治理模式的典範

但今年四月底當程式碼審計發現投票合約存在漏洞,可能使使用者投票的 MKR 被永久鎖定時,只能是部署了一個新的投票合約,並需要呼籲使用者轉移老版本合約中的 MKR;而且投票合約是對治理規則的定義,但其本身的升級仍然是由專案方來決定的。

所以,因為智慧合約平臺的限制,這些 DAO 並不能做到真正的徹底的去中心化治理。它只能是在事先定義好的治理範疇中透過 DAO 有限治理,在該範疇之外的治理依然是回到了老路子上,是以中心化的方式來做的,並不能交由社羣管理。

問:在 Polkadot 上是如何對應用進行修改的?

劉毅:Polkadot 上應用的處理邏輯是用 rust 語言寫的,它是編譯成一個 wasm 的可執行的二進位制的檔案,透過鏈上分發給節點。

我們現在約定了一個協議或應用,用 wasm 實現了,但如果有人做了一個提案,認為應該改變某一個處理邏輯,或增加一個功能,或修改一個引數,那開發者們就可以按照這個提案去實現一個新的協議,用 rust 再寫一遍,然後大家在鏈上進行投票,決定要不要用這個協議換掉原來的。

只要大家投票透過,這個新的可執行檔案 wasm 就會下載到所有的節點上,節點發現有新的版本,就會執行從鏈上過來的新版本。

應用更新的整個過程都是在鏈上自動完成的,而且不會產生分叉。所以我們說 Polkadot 實現的是可程式設計的全流程鏈上治理

問:智慧合約開發的應用和應用鏈的應用,在修改問題上的很大的一個區別似乎是後者是透過節點來完成修改和升級的,這有點像公鏈自身的升級方式?

劉毅:是的。不同的地方在於這種升級是透過 DAO 以鏈上治理的方式來執行的,但大多數公鏈自身的升級不是以鏈上治理的方式來完成的。

比如以太坊升級,是鏈下治理的方式,大家決定包含哪幾個 EIP,然後確定一個時間點,大家都把新的軟體換上。

如果我們做一個分類的話,就是以太坊不支援公鏈的鏈上治理,EOS 支援公鏈的鏈上治理,但它們都不支援應用的去中心化治理;Polkadot 支援應用的鏈上去中心化治理,Cosmos 目前只支援應用的鏈下去中心化治理

問:為什麼說 Polkadot 提供的是可程式設計的治理,是鏈上治理? 

劉毅:Polkadot 鏈上的處理邏輯都是可執行程式

你可以在 Polkadot 鏈上發起一個提案,比如調整一個關鍵引數,你把程式編譯好後放到鏈上,那麼首先,提案本身是可以程式設計的。

其次,投票治理的規則,包括誰有資格投票、投票時票數怎麼記、提案透過要滿足的條件等等,這些也都是程式定義的,是清晰確定的、自動執行的,大家跟隨流程去投票就可以。

如果投票結果滿足了透過提案的條件,這個提案的可執行程式就會透過鏈上自動地分發到各節點,節點發現有新的程式,就會呼叫 set_code 函式,在執行時覆蓋原程式,執行新程式。整個的過程都是自動執行的。

據我所知,Polkadot 是目前唯一能做到在執行中無分叉升級的區塊鏈。Cosmos 應該也會支援鏈上去中心化治理,但是目前沒有看到它的鏈上升級技術。

問:能不能理解成,第一,Polkadot 上的應用修改是想改什麼地方就可以改什麼地方,沒有限制;第二,Polkadot 平臺支援去中心化治理的可程式設計和自動化執行。這就解決了智慧合約平臺上以 DAO 的方式治理應用時碰到的那兩個問題。

劉毅:是的。

問:應用在被駭客攻擊後,如果該應用是支援鏈上去中心化治理的,是不是也能更好的解決問題?

劉毅:是的。比如駭客把錢拿走了,這筆交易是不能改了,但可以透過升級應用的方式把這筆錢凍結,甚至把錢從駭客的地址裡拿走。

這些都可以透過應用的鏈上治理達成,你只要寫成程式就可以實現。所以我們稱它為可程式設計治理,這個空間是無限大的。

但到底什麼才是最優的治理結構?這是我們面臨的問題,比如是否需要設定一個委員會,能夠做緊急處理,能夠快速地把駭客帳戶凍結。

如果能夠設計合理的治理機制,就能讓應用始終適應市場變化、自身進化的需求,應用就會變得越來越好,市場規模也才有可能越做越大。

問:所以你覺得很多應用可能更適合基於應用鏈開發,而不是基於智慧和約開發?

劉毅:對。區塊鏈上的應用有兩種信任最小化的方式。一種是基於合約的可驗證性,即智慧合約不可修改產生的信任最小化;一種是基於合約的去中心化治理產生的信任最小化

智慧和約方式的應用要麼不去進化,這就阻礙了 DApp 創新潛能的釋放,但它如果進化,就會破壞信任最小化。不過這並不代表所有的應用都不適合用智慧合約開發,治理是有代價的,對於有些應用而言,最好的選擇仍然是智慧合約。

應用鏈方式的應用能夠實現可程式設計的、去中心化的治理,它透過 DAO 以鏈上治理的方式修改加密協議,同時不會破壞區塊鏈最重要的意義——信任最小化。

一些隨想

和劉毅老師的對談足夠讓人重新思考「治理」這個既熱門,但對大部分人來說又顯得有些生疏的話題。

一方面,區塊鏈是一種提供信任的機制,它能夠做到信任的最小化;另一方面,區塊鏈提供給使用者的最終信任似乎遵循的是短板理論,它取決於木桶中最短的那一塊。

在區塊鏈技術經過了這些年的發展之後,目前階段顯現在我們面前的信任的短板也許是「治理」。提供去中心化的分散式系統是一件事情,以去中心化的方式去治理這個系統是另一件事。

就像凱文·凱利在剛剛在中國的一次公開演講所說的一樣,他認為區塊鏈的數學基礎是很容易被信任的,但是那些進行區塊鏈服務的企業還有組織也需要被信任,這種信任就是另外一種層面。

治理不僅包含對公鏈本身的治理,也包含對去中心化應用的治理,因為後者也是信任鏈條上重要的一環。前者的重要性已經被大多數行業內人士注意到,但後者的重要性、以及如何用技術來支援這種治理似乎鮮少被討論,這可能是本文的意義所在。

這篇文章並不短,也不算好讀,謝謝你能看完。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;