跳到主要內容

橙皮書專訪:資料庫沒有殺死應用伺服器,區塊鏈也無法接管一切

Retric
專訪

作者: Retric

媒體: 橙皮書

日期: 2018 年 12 月 7 日

ArcBlock-橙皮書

今天早上跟 arcblock 的老冒交流了一個小時,他提到幾點我覺得挺有意思的:

1、智慧合約可以拿來類比資料庫裡的「預存程序」的發展。

資料庫的預存程序(Stored Procedure)有兩個最成功的用法,一個是 validator(驗證器),一個是 trigger(觸發器)。

1、validator 是用來保證每個欄位的資料在一個合理範圍內,比如儲存員工的薪資資料,我設計資料庫的時候就提前知道一個員工每個月的薪資不會超過 100 萬,那存進去的數字就有 0-100 萬的範圍,提前做限制,非法數字就存不進去;

2、trigger 是用來在一些條件下觸發執行動作的。比如銀行的資料庫,如果一個客戶的銀行餘額低於 0 了,那要觸發一個通知,告訴銀行這個使用者要破產了。以前沒有觸發器,就只能一遍一遍地對資料庫進行輪詢,現在有了 trigger,就可以很輕鬆地把一些邏輯寫進資料庫裡。

這兩個東西出來的時候,業界曾一度非常激動,認為這是新一代的資料庫,甚至有人認為我們可以不需要應用伺服器了,所有的程式碼都寫進資料庫就行了。但到了今天事實證明,資料庫並沒有取代應用伺服器,它只是提供了很重要的基礎設施,但上面還疊加了很多其他層的中間層。

類比區塊鏈的話,智慧合約就是預存程序一個很自然的發展。我們在去年也一度以為,以太坊要接管一切,所有的應用都應該跑在以太坊上。但今天大家都知道,智慧合約很有用,但大部分應用是在鏈下的,區塊鏈只是其中一個技術元件。不過這不妨礙區塊鏈的偉大性,就像資料庫在今天也是不可取代的地位,只是它的很多市場份額會被應用吃掉。現在的區塊鏈之所以難用,也是因為我們試圖讓一般使用者直接在資料庫上透過 SQL 語句來做操作、做互動。

註:所謂的「預存程序」,指的是在大型資料庫系統中,一組為了完成特定功能的 SQL 語句集,儲存在資料庫中,經過第一次編譯後呼叫時不需要再次編譯,使用者透過指定預存程序的名稱並給出參數(如果該預存程序帶有參數)來執行它。預存程序是資料庫中的一個重要物件。

這個定義,其實真的很像是「智慧合約」。

2、R3 之前做過一個 human readable 的智慧合約,相當於折衷地把智慧合約跟當下的法律快速橋接起來,是個有意思的案例。

R3 的 Corda 是一個分散式帳本,在 2016 年它裡面提出了一個很有意思的創新,就是在鏈上部署一個合約,會同時生成兩份:一份是機器讀得懂(machine-readable)的機器程式碼,一份是人類讀得懂(human-readable)的法律條款。

很多人說,智慧合約把規則寫到機器上面進行約束,雖然能在鏈上強制執行轉帳之類的操作,但是現實世界和法律世界的映射,還是沒辦法得到保證。法律可以不承認線上的智慧合約。R3 為了解決這個問題,讓智慧合約部署的同時生成一份有效的法律合約,就能快速解決這個問題,而不用等到法律逐漸完善、明確出智慧合約這一塊的法律究竟怎麼制定。

這是一個有趣的嘗試,只是不知道現在進展得怎麼樣了。

3、電腦在越來越逼真地模擬現實世界,但人類和技術最終會互相適應並發展。

從資料庫的發展來看,以前所有資料的儲存和維護都放在一台電腦上就可以了,後來慢慢發展到分散式的場景,我們假設這些機器都是可信的,用中心去統一調度,再到現在,我們又慢慢退回到,假設這些節點並不可信的情況,實際上越來越貼近現實世界真實的情況。

但人類可能也需要跟技術互相適應並發展。這方面我想到了一個例子:人類的協作組織方式其實一直受技術實現方式的限制。過去我們以公司的單位去發展,是因為金融技術只能支撐我們以公司的單位去發展,即使這種組織方式跟傳統的家庭、部落相比,已經是一個很大的創新了。現在我們有了新的技術,組織方式也需要新的變化。

未來如果 AI 發展到一定程度,區塊鏈也許會被我們拿來作為一種足夠強大的治理工具,保證這些技術不朝著危險的方向發展。

P.S:熊市裡關注區塊鏈的人越來越少了,我們今後會寫更多類似這樣的「文章」——比較簡單直接、長度很短的、沒什麼文采的筆記。現在還肯看文章的應該都是特別硬核的老鐵了,真正關注這個行業的人、或者這個行業的相關從業者們,大家時間寶貴,不如來點純的。讓我們回歸樸素的討論與交流。

ArcBlock-橙皮書

原文連結: https://orange.xyz/p/272