星球日報:以太坊把公鏈都帶歪了嗎?

作者: 盧曉明
來源: 星球日報
日期: 2018 年 7 月 13 日
ArcBlock CEO 冒志鴻:區塊鏈應該做回它應該做的事,不應該做通用計算。

會不會目前大部分人努力的區塊鏈方向,都是錯的?
比如跨鏈、比如所有人都在談的區塊鏈 3.0。
Odaily 星球日報最近跟 ArcBlock 創辦人兼 CEO 冒志鴻討論了一下相關的問題。上述兩個問題基於圈內對區塊鏈領域所面臨痛點的判斷——鏈與鏈之間無法互聯互通,公鏈效能無法滿足大規模商業應用。如果從根本上否認這兩個痛點——都是偽需求,那是不是目前的無數專案就顯得毫無意義?
對標資料庫,區塊鏈也需要有通用存取工具
在開始聊這個話題之前,先來更新一下 ArcBlock 的最新進展。這將會涉及我們討論的前兩個話題:對標資料庫,區塊鏈是不是需要通用查詢工具?是不是需要 interledger 級別的跨鏈?
Odaily 星球日報在今年 1 月時對 ArcBlock 做了報導,ArcBlock 最主要的目標是降低區塊鏈應用的開發門檻,加速區塊鏈應用落地。ArcBlock 類似 PaaS 平台,搭建一個去中心化區塊鏈應用的開發框架。6 月 30 日,ArcBlock 區塊基石平台上線了它的第一個應用:開放鏈存取協定實驗台(OCAP Playground)。
ArcBlock 介紹,這是一個直接面向開發者、構建於開放鏈存取協定(Open Chain Access Protocol,簡稱 OCAP)之上的開發工具,建立了一個區塊鏈應用開發環境。開發者無需任何下載安裝,只要有瀏覽器就能開始區塊鏈測試和應用開發。目前公測版 OCAP 支援比特幣、以太坊等底層區塊鏈。
這個工具對開發者的作用,就是可以在只懂一種語言的情況下,把自己的應用部署在不同的鏈上。這就降低了開發者的學習門檻,不需要因為語言而綁定公鏈。OCAP 採用 Facebook 主導並開源的 GraphQL 語言,冒志鴻認為這也有利於吸引原有的 GraphQ 開發者群體支援 OCAP。
對開發者友善不僅需要體現在語言上。
冒志鴻還舉了節點部署成本的例子。「以太坊的全節點是用來挖礦,開發者執行應用依然要自己部署一個節點。就像你自己用電一樣,電網到處都有電,你也需要有一個配電箱。以太坊基金會也意識到這個問題,因此孵化了一個名為 Future 的雲端節點服務,部署好之後賣給開發者,開發者依然需要為雲端節點付費。OCAP 也幫開發者部署全節點。」
「現在大家都意識到一件事:就是得開發者得天下。區塊鏈很像資料庫,本身非常底層,必須要有開發者支援。」
另一方面,對於某些產業型或應用類公鏈而言,如果它們支援了 OCAP,就可以快速接入社群和開發者,不用重新發明工具。
先看一下以太坊的發展,光有公鏈和智慧合約並不足以讓開發者開發應用,還需要有很多工具,因此以太坊基金會本身也孵化了不少專案,幫助開發者存取鏈和開發應用。冒志鴻表示,作為一條通用型公鏈,以太坊也許可以這麼做,但對 CyberMiles(電商公鏈)和 Eloncity(微電網電力結算)這類應用鏈來說,並不希望把精力放在這裡,它們就可以選擇製作一個鏈適配器來適配 OCAP 協定。
冒志鴻認為,類似的通用工具未來會是公鏈的標準配備。 他再次類比資料庫,查詢 SQL 資料庫,需要有查詢工具,「之前所有的廠商都有自己的查詢工具,現在則是通用的,因為所有的資料庫都用 SQL 語言,都用 ODBC 和 JDBC Driver」。
ODBC(Open Database Connectivity,開放資料庫互連)是微軟開放服務架構(WOSA,Windows Open Services Architecture)中有關資料庫的一個組成部分。它建立了一組規範,並提供一組資料庫存取的標準 API(應用程式介面)。JDBC(Java DataBase Connectivity standard)與 ODBC 類似,也是一個物件導向的應用程式介面(API),所有 Java 程式都可透過它存取各類關聯式資料庫,是 Java 核心類別庫的一部分。
OCAP 的靈感來自 ODBC。「今天資料庫廠商都會把自身的 ODBC 和 JDBC 驅動程式開發好,否則沒有人會使用你的資料庫。」冒志鴻認為,公鏈世界也會出現具有類似地位的工具,ArcBlock 希望未來由社群或公鏈的開發者自行開發鏈適配器。
Interledger 級別的跨鏈是偽需求?
ArcBlock 做的事情在某種程度上跟跨鏈相關,因為其開發平台希望支援開發者將自己的應用部署在不同的區塊鏈上,這就涉及不同鏈上資產的互動。然而,今天的跨鏈機制依然非常不成熟。大部分提到資產「跨鏈」的團隊,實際上做的都是「區塊鏈版 Visa 和 MasterCard」的事,做了一個中間商去兌換兩種幣別之間的匯率——不就是今天幣幣交易所的錢包。
當 Odaily 星球日報直接問冒志鴻,ArcBlock 的跨鏈如何實現鏈上資料的保真時,冒志鴻也非常直接地表示,要實現這項技術其實非常困難。現在的跨鏈,包括他們自己,都沒有實現鏈上資料的保真,本質上都像交易所一樣,根據匯率在兩條鏈上開立帳戶,一增一減。他稱這為應用級跨鏈,每條鏈並不知道自己在「跨鏈」。
另一種「鏈自己是知道的」思路,他稱為 interledger 思路,試圖將兩條鏈之間的資產雙向錨定起來。 比如公有鏈專案 Cosmos;閃電網路在他看來不算跨鏈(有主鏈、側鏈之分)。他解釋,極度簡化的鏈,就是一個應用。「目的是要做到雙向錨定,從 A 上面發出了交易,是從 Transaction 的角度,在 B 鏈上到帳,一旦出現問題,就會回滾,這個安全性更好。」
如果拿這種技術跟上面的「區塊鏈版跨境匯款」相比,這時候做鏈間價值轉移,就可以直接對接。「如果有一邊出現問題,比如分叉了,應用級跨鏈中,另一邊是不知道的;interledger 情境中,則是彼此知道的。」
因此,他認為兩者確實有「很大區別」。可是,他認為這個方案很可能「得不償失」:
一方面 interledger 的難度非常高,「interledger 就是建起橋梁,兩條鏈的東西還得是一致的,但是兩條鏈確實是不一樣的」;另一方面實際應用需求很少,「99% 都只需要應用級的跨鏈,只有很少需要 interledger 級別的跨鏈,比特幣和以太坊為了安全性,可能需要這種」。
這個判斷,同樣是他以「資料庫歷史」為鑑得出的。他介紹,在 80、90 年代,曾經有一個概念叫聯邦分散式資料庫,願景是:兩家企業使用的資料庫供應商不同,該技術希望從資料庫的角度讓交易保證資料交易的原子性,難度極其高,但後來證明在現實中根本不需要。「既然可以透過應用層保證一致性,為什麼一定要在底層做呢?因此我們其實在整體設計上比較實用主義。」
如果要預測誰先做成這種級別的跨鏈技術,他認為第一個能落地的可能是 Cosmo。
很可能以太坊把大家都帶歪了
聊完跨鏈,我問到公鏈領域的變化,還有以太坊和 EOS 的智慧合約漏洞問題。這個背景是智慧合約漏洞頻繁出現,為了規避這些問題,某些公鏈甚至選擇將智慧合約設計成圖靈不完備,以此保證公鏈的安全性。
作為一個致力於整合公鏈開發框架的創業者,冒志鴻的看法簡直是要否定以太坊大方向的節奏。
他認為,這半年以來市場沒有發生很大的變化,大部分公鏈都想做一個更好的以太坊。「凡是想在新公鏈上做一個虛擬機器的,都是以太坊的追隨者。我有一個大膽的判斷:很有可能以太坊把大家都帶歪了。 以太坊想做全世界的通用電腦,社會需要區塊鏈,但是不一定需要電腦。」
以太坊的智慧合約多次出現漏洞,業界普遍認為這與智慧合約過於靈活有關,也就是以太坊想把智慧合約做成圖靈完備。冒志鴻總結,以太坊智慧合約漏洞,一是因為過於靈活;二是由於虛擬機器和語言是新做的,不太成熟。「前段時間出現溢位的問題(美圖幣的問題,都是整數溢位導致的),原本應該在語言層面就解決。」
「這些都是因為以太坊想做通用計算,願景太大。」
至於 EOS,在冒志鴻看來「走得更歪」:目標方向是更好的以太坊,實際上只是把以太坊做得更中心化,在虛擬機器語言的選擇上似乎也有問題。
「以太坊之所以選擇寫一套新語言 Solidity,就是為了能實現智慧合約程式碼的一致性。為什麼不能用現有的語言,而要用一個 VM 來實現?這就要看第三方能不能稽核。」他認為,EOS 所選擇的虛擬機器語言 WebAssembly(WASM),本質上底層是 JavaScript,能不能做到一致性是一個巨大的問題。
批評完兩家「現象級」的通用型公鏈,他的想法是,公鏈應該承載更多價值傳遞的事情。「公鏈可能應該把更多的東西專注在 Token 上,未來我們想做可程式化 Token。」
他將此稱為公鏈除了比特幣和以太坊之外的第三種方向,這條鏈的所有東西都圍繞 tokenise 來實現,專門為 token 服務,不是圖靈完備。
ERC20 沒有得到足夠關注,以太坊只是在這個語言中實現 interface,其實作為一個 Token,它簡陋得不可思議。「只能用 token 來表徵,比如 token 的智慧合約,現在都是當某個條件發生的時候,token 會從某個位址轉到某個位址,會如何被分配。」
「現在是一張白紙,token 只定義了 interface,只是一個介面,我認為它應該要做服務。」
他希望構建一個非常完善的 token 公開帳戶體系。「這就是回歸本質,就像一個資料庫伺服器,有人也提供 web 介面,但是資料庫就應該把查詢搜尋等做好。區塊鏈應該做回它應該做的事,不應該做通用計算。」
