白碩:智能合約、DApp與世界計算機

白硕:智能合约、DApp与世界计算机

鏈得得專欄作者簡介:白碩,北大理學博士。曾任中科院計算所軟件室主任、軟件方向首席科學家,上海證券交易所總工程師。

區塊鏈興起以來,特別是以以太坊為代表的具有可編程特性的所謂區塊鏈2.0興起以來,關於區塊鏈是“世界計算機”的說法就一直在流行。據說V神比較愛用這個說法,但不知是不是他的首創。具有圖靈完備性的智能合約執行環境是實現所謂“世界計算機”的一種途徑。

更廣泛地說,支持任何種類的DApp運行環境都走在這條道路上。我們在本文中想表達幾層意思:一、圖靈完備的“世界計算機”的技術路線,在計算機發展史上絕不是新鮮的,各種類型的嘗試都有。二、即使考慮到“可信”的訴求,用成千上萬臺計算機做同一件事情,無論如何是效率低下的,不改進沒有前途,局部的改進值得肯定但不是根本性的。三、從智能合約到可信的世界計算機,靠譜的計算架構是“鏈下執行、鏈上驗證”,這是“一切即挖礦”方法論在“世界計算機”領域的體現。

古已有之”的世界計算機

上個世紀,計算機科學的偉大先驅阿蘭·圖靈創立了通用可計算模型——圖靈機模型。圖靈的理論並非停止於用圖靈機模擬一個個具體的算法,而是超越了對具體算法的模擬而上升到為用有限符號所描述的任意算法提供通用執行環境的更高層面。當我們把算法編碼為數據,這個通用執行環境也就相當於處理經過編碼的算法這類特殊數據的某個圖靈機。在這個層面,圖靈提出了通用圖靈機的停機問題,並證明其不可判定。在這個層面,數據和程序可以相互轉化,這開啟了通往通用數字計算機的生命之門。

基於世界上最早的通用數字計算機的設計和製造實踐,馮·諾依曼提出了著名的程序代碼存儲的原則,後世稱之為“馮·諾依曼架構”。在這個原則指導下,通用圖靈機從理論模型落地為工業產品,並一直沿用至今。在計算機的存儲中,數據和程序長的樣子並無根本分別。一段存儲內容是數據還是程序,完全取決於程序的內在邏輯和初始入口。正面的例子有操作系統的boot,反面的例子有病毒的傳播,無一不是靠了馮·諾依曼他老人家定下來的這條神聖的架構原則所賜。

互聯網出現以後,數據通過網絡的傳輸有了明確的落地載體,傳輸的內容也就可以玩花樣了。如果說在單機時代,程序和數據都在本地一個池子裡還顯不出花樣的差別的話,當網絡把一個池子變成用通信管道連接的兩個池子之後,“世界計算機”的玩法也就逐漸清晰起來。

第一種玩法:程序在遠程,本地上載數據到遠程

我們在最初的RPC(遠程進程調用)和Web興起以後的CGI、PHP、ASP都可以看到這種模式,以COM/DCOM和CORBA為代表逐漸形成兩個分佈式對象體系陣營,後來逐步進化為SOA(面向服務架構)和現在流行的微服務體系。

第二種玩法:程序在本地,遠程下載數據到本地

這種數據驅動的應用激活模式,被微軟OLE/ActiveX玩得爛熟。微軟的瀏覽器插件都是這麼幹的,網景(Netscape)的瀏覽器就是這麼被微軟乾死的。現在還在活著的其他瀏覽器和客戶端App,要想繼續活著,也必須走這條道路。

第三種玩法:數據在遠程,本地上載程序停靠到遠程

這種模式就是所謂移動agent模式。在上世紀90年代,曾經引起過一陣小小波瀾,但終究難起大浪,因為大家都認為這樣的模式太不安全了。沒過多久這套把戲就銷聲匿跡了。

第四種玩法:數據在本地,遠程下載程序到本地處理

這種模式大家可能還記憶猶新:這不就是“瘦客戶端”嗎?有人也管它叫“網絡計算機(NC)”,有人管它叫“透明計算”,其實一回事。在網絡帶寬越來越富裕的今天,它不再奢侈,自有它可落地的場景。

這四種玩法,用一張2X2的表格,橫向表示激活模式,縱向表示傳輸模式,畫出來是這樣的:

白硕:智能合约、DApp与世界计算机

由此可見,世界計算機的玩法,的確是“古已有之”,只不過當時的叫法是“世界是一臺網絡計算機”。但是,誰也沒傻到用成千上萬臺計算機幹同樣的事,執行同樣的程序還要彼此達成共識。那樣做,太損失效率了,以至於大家對這種架構的可能性想都不要去想。那麼,究竟是什麼原因,使“傻事”成了了不得的發明創造了呢?這就不得不提及一個重要的概念:可信。

程序如何“可信”?

程序如何“可信”?這個問題在傳統的計算機行當裡也不是沒有人考慮過的新概念。但是傳統可信計算的研究,侷限在數據高度敏感的少數部門之內,因此其圈子也相對“小眾”,本文也不擬展開論述。筆者僅僅指出一點:傳統可信計算圈子對可信計算環境的訴求,與當今區塊鏈領域的訴求相比,不僅沒有絲毫的遜色,甚至可以說是有過之而無不及。

區塊鏈因為其承載經密碼學勾稽、群體見證從而可傳輸價值的“公共賬本”而變得重要起來。但是一個像比特幣一樣只能記賬和轉賬的公共賬本,只是對現實世界人們的“賬本”、“錢包”或“保險箱”的簡單模仿。對於大千變化的數字世界來說,這點簡單模仿似乎太單薄了些。V神說,好吧,我來給你們加點作料。於是有了虛擬機和智能合約。

虛擬機是智能合約的執行環境,但是,在別人掌控的主機上,作為執行環境的虛擬機和作為執行對象的合約代碼都是可偽造、可做手腳的。智能合約裡又充進去了許多交給智能合約支配的數字資產,萬一把不可信的執行結果達成了共識回寫到賬本,那就萬劫不復了。於是乎,“記賬”的概念在以太坊那裡有了新的推廣,不僅記錄賬本上你直接支配的資產,也記錄用代碼支配著你的一部分資產和信任狀態的智能合約的運行軌跡,即所謂“世界狀態”。如果“世界狀態”的比對是成功的,智能合約的運行結果據稱就是可信的。為了以“公鏈”的方式達成對智能合約執行結果的可信性,於是有了成千上萬臺計算機在同樣的虛擬機執行環境下運行著同樣一批智能合約的蔚然景觀。

但是,難道這就是“可信”的代價?這就是“世界計算機”這麼美好的概念帶給我們的現實?不!且不說數十萬個合約擠在一條公鏈上等待分配計算資源來運行是一件多麼恐怖的事情,導致“油”價水漲船高,單就是這種千軍萬馬低效率地做同一件事情的打法,也絕非一個訓練有素的計算機專業人士所能容忍,更不要說那些揭竿而起的極客了。有人犯傻,就有聰明人的機會。

一種解決方案就是把合約(或一般地,DApp)的執行引到“側鏈”上去。在對合約的執行結果只有少數人感興趣,但合約所關聯的數字資產與公鏈仍然有千絲萬縷聯繫的情況下,這是一個可行的解決辦法。亦來雲(Elastos)傾向於這種解決方案。

還有一種解決方案就是跨鏈。用同構的子鏈運行智能合約,所涉及的數字資產則在子鏈和公鏈之間進行跨鏈清算。Cosmos傾向於這種解決方案。

EOS更加狡猾。明知公鏈資源緊張,偏偏把緊張的資源拿出來拍賣形成套路,什麼內存啊、畫布啊,都幹得出來。

前兩種方法在對計算壓力進行分流方面做得都是可圈可點的。但是現狀是,一個DApp部署在鏈下,要麼不涉及“可信”訴求,要麼對“可信”無可奈何只能接受現狀(例如天氣預報、航班到達時間、比賽結果比分這樣的外部信息源),否則部署在鏈上一定是首選。避開公鏈而選擇側鏈和跨鏈,仍然沒有離開“鏈”。這是一種必然的宿命,還是沒有找到關鍵的突破口?

EOS的做法不是在解決問題,而是在利用沒解決的問題發“鏈難財”,不說也罷。

“世界計算機”和區塊鏈的關係,陷入深深的糾結當中……

一切即挖礦

今年開春,“交易即挖礦”的口號引發了一場至今尚未偃旗息鼓的“搬磚引流”大戰。所謂“交易即挖礦”,就是把平臺幣的發行和來交易所交易的流量掛鉤。從金融角度看,流量並不等於流動性,平臺幣並不是獎勵給提供更好流動性的交易者的,而是獎勵給被扭曲的、不具有市場化定價意圖的搬磚行為的。這和交易所設立的初衷是相背離的。當然,作為短期的促銷行為,我們無可指責。更何況,平臺幣兼有權益屬性,對於目前數字資產交易所治理結構的改善是有所幫助的。所以,不能全盤否定“交易即挖礦”的做法,但“交易即挖礦”也說不上就是能使交易所脫胎換骨的靈丹妙藥。

按下交易所不表,我們來拓展一下“交易即挖礦”這個口號。它對我們的最大價值在於,從這個口號往前再走一步,就是“一切即挖礦”。從今年六月份筆者在烏鎮提出“一切即挖礦”這個觀點以來,筆者得到了方方面面對這個觀點的響應。現在,我們從“世界計算機”的角度,看看“一切即挖礦”意味著什麼。

在現實世界中,我們遇到大量的計算任務和信息處理任務,都具有執行難度和檢驗難度的非對稱性。執行任務難,檢驗執行結果容易的例子比比皆是。數學家們為了黎曼猜想前赴後繼奮鬥了一百多年,好容易有牛人宣稱差不多做出來了,結果一曬出來輿論譁然,不少人說這根本沒有證明麼。數學證明,構造難,檢驗相對容易。在數理邏輯中,即使是命題邏輯公式,構造證明的複雜性是NP完全的,檢驗證明的複雜性卻是多項式的。

NP完全問題都有這樣的特點。

現實的很多工作流程,分解開來也是這樣。做一個東西難,檢驗一個東西做得是否合格,就相對容易很多。你為社區做一項具體的貢獻難,大家檢驗你做沒做你所聲稱的貢獻,容易多了。

所以,以上的例子在佐證“一切即挖礦”的觀點。一切即挖礦,作為一種DApp架構設計的方法論原則,可以這樣來表述:把一項工作儘可能地分解成為若干個“執行-驗證”環節。把“執行”環節甩到鏈外,不關心其過程,只要其結果;把驗證過程留在鏈內,群體見證,保證其可信性,並把結果的可信性與激勵的可信性強掛鉤、緊耦合。

可以看出,這樣的架構安排如果能夠得到徹底的貫徹,公鏈計算資源會有根本性的釋放和緩解。公鏈只做檢驗,不做只看結果不看過程的任何事情。要幹這些事情,去鏈外幹。反正你乾的不對,沒人踩你。你幹得慢,你拿不到激勵。如此而已。反過來,在鏈外發揮最大效率優勢的執行方,會得到更多的激勵。這可以鼓勵技術極客們把功夫花在鏈外,讓DApp幹好該乾的事情。

比特幣的礦機,就是最典型的鏈外DApp。你怎麼解哈希,沒人管你,也沒必要把代碼和芯片設計曬給別人。區塊鏈只需要看結果,只需要對結果達成共識。在這種架構下,礦工們也確實得其所了。這將不是個例,一切DApp,只要可能,執行環節一定會甩到鏈外;油水大到一定程度,一定會硬件化。這是不可阻擋的歷史潮流。

原來,世界計算機也可以不那麼笨重的。

最好看的得得專欄正式上線,來鏈得得App給這些幣圈鏈圈最有思想的專業領袖瘋狂打Call吧!


分享到:


相關文章: