編者按:本文系區塊鏈專家王濤講師,在掘金技術社群主辦的《給開發者的區塊鏈技術指南 | JTalk 掘金線下活動第五期》 活動上的分享整理。掘金 JTalk 目前已舉辦5期,每期 JTalk 會邀請垂直行業的優秀工程師來分享優秀的實踐經驗,技巧方法。旨在為開發者提供線下技術交流互動機會,幫助開發者成長。

現在區塊鏈所說的“3.0階段”,實際上更多的是偏向於業務,從資料庫角度來看,現在區塊鏈底層技術有很多可以提升的餘地。剛開始大家只是做一個數字貨幣,隨著合規的加入,大家可以在上面跑一些業務。 但區塊鏈底層鏈,包括效能、處理能力、通用功能,離商業化還有很大的距離。如果把區塊鏈技術未來暢想成一個10分的東西,我們認為現在區塊鏈功能只是在1分到2分的級別,還有非常長的路要走。 從技術角度理解,其實區塊鏈技術就是一個特殊的分散式多活資料庫。
區塊鏈技術具體有什麼樣的演進方向?
方向1:從專業化向通用化演進。 現在玩以太坊和比特幣,都是為了專門目的設計的一套軟體,比特幣是專門為轉賬設計的,以太坊是轉賬+智慧合約,通用方面,可以使用JAVA、C+ +程式,寫任何邏輯。現在區塊鏈基本是為專有系統定製的一套軟體,而不是一個通用的軟體。
方向2:各自為政向標準化演進。 搞區塊鏈最重要的是協議,而不是軟體,大家只要知道比特幣之間互動協議,可以使用專為比特幣設計的礦機,也可以自己寫一套東西,只要有協議就行。現在很多人做公鏈,每個公鏈都是獨立的通訊協議,這就會造成鏈與鏈中間通訊受到影響,可以用跨鏈機制、側鏈機制打破這些壁壘。相信未來在整個協議層可能會有更多通用化、標準化東西。
方向3:產品化與模組化不斷加強。 現在基本上大部分資料庫模組化做的非常好,比如希望用一種特殊的加密演算法,就把這個加密的庫替換原來庫就可以,這是未來區塊鏈需要提升的地方,就是框架能夠做到更好的模組化。
方向4,效能與可擴充套件性。 針對分片、記憶體計算、磁碟結構等進行優化,從單點磁碟結構到多分片對等多活架構,從而使得效能發揮到極致。這一塊需要技術上繼續突破才能實現效能的提升。
區塊鏈技術行業現狀:
- 區塊鏈體系結構沒有被統一。
- 區塊鏈開發語言極其混亂。
- 需求多種多樣,無標準使用正規化。 大家在學習區塊鏈技術時,成本很高,搞一個鏈要學一套新的開發語言,這個東西可能不流行了就要換新的語言,這會有很大的問題。做傳統大資料庫的,大家用的都是SQL,比較標準化。 另外,現在區塊鏈基本還沒有一個真正的殺手專案,沒有出現哪一個業務必須用區塊鏈來完成,這樣大家都想嘗試,用區塊鏈在這塊玩一玩,在那塊玩一玩,試試醫療、試試物流、試試IoT,哪個行業真正能用區塊鏈顛覆,核心價值在哪,怎麼用區塊鏈做這個事情,這些問題是未來一段時間行業裡需要去回答的,這幾點暫時是薄弱環節。
一、區塊鏈與資料庫相同點
特性:共識機制、儲存機制、智慧合約、分片、應用開發介面、安全。這些實際上都是區塊鏈底層老生常談的一些模組,對應到資料庫,有沒有一些對應的點? 共識機制。在過去資料庫架構裡,所謂一致性控制都是有一個主節點,所有寫操作會被複制到另外一個存節點做高可用配置。區塊鏈上,可以把這個體系擴充套件,假設主節點並不是固定的,而是每10分鐘換一次,在主節點MySQL,10分鐘換一次主節點,某種程度上是相通的。不管是POW、POS所謂共識機制,真正本質是到底在一段時間之內以誰的資訊為準,這個資料庫裡是以主節點為主,當它掛了以後,怎麼選出一個新的節點,這些都不重要,只是實現問題。
儲存機制。在區塊鏈裡,儲存說的都是鏈本身這個事,大家有興趣看一下比特幣、以太坊,除了鏈本身,還有類似於狀態儲存,比如鏈很長,可能有100GB,涉及到某個賬戶多次修改,鏈本身實際上是交易日誌,記錄每一條記錄修改方式,展現形式要歸到一個資料庫裡,都是要內嵌一個小型資料庫,把最終結果放到裡面。這一套體系對應到資料庫裡,無外乎就是資料庫的儲存+事務日誌。
智慧合約。是使用者自定義的託管程式,在資料庫裡託管程式叫儲存過程,在區塊鏈裡,本質是一樣的,最大不同點在於安全性方面。在資料庫裡調儲存過程,記錄最終結果,但是在區塊鏈裡,因為不可信任,記錄呼叫。 分片。大部分割槽塊鏈專案裡做得還不太成熟、不穩定,資料庫分片是非常成熟的東西,區塊鏈行業,由於分片之間交易很難保障,大部分割槽塊鏈公鏈專案很難做好的分片。
應用開發介面。在MySQL或Oracle用SQL,無外乎寫一段應用程式,扔到系統裡,別人呼叫。而區塊鏈技術也需要一個統一的訪問方式,才能更好實現通用化應用。
安全機制。在資料庫裡,一個表單,到底誰能讀、誰能寫,有一套定義,但在區塊鏈裡,安全是行級的安全,比如在比特幣裡,相當於全域性可讀,只有輸入可寫的安全配置。 從這幾塊來看,區塊鏈和資料庫的世界有很多相通之處。

事務日誌。資料庫裡事務日誌和區塊鏈的鏈本身就是一個事情,在區塊鏈裡,每一個區塊對應到資料庫,可以認為對應的就是一個日誌檔案。最本質的區別是在於區塊鏈同步標準以區塊為單位,每一次主節點要把交易資訊打包成區塊,這個區塊作為交易日誌。當有任何資訊以後,立刻就可以把資料同步給其他節點。
共識機制。
POW本質是一種自我證明的方法,就是每一個節點大家都想讓別人跟自己同步,自己想成為主節點,怎麼成為主節點?POW方式是給大家很難的題自己去算,算完了以後,告訴大家算出來了,讓大家來驗證,如果驗證是對的,跟我看齊。好處是大家會把大部分時間花在計算過程當中,而對於網路沒什麼太大壓力。
POS正好相反,POS沒有過多自我計算的過程,相當於一大屋子人都想成為主節點,大家通過某種方式進行投票,這種機制不需要自己去搞,但對網路壓力很大,因為每一次投票都要設計上萬個節點競選,網路壓力很大,所以為什麼POS也不能夠完全真正解決高效能問題,因為當節點數太多,POS效率非常低。 DPOS,就是一屋子人選幾個代表,大家跟幾個代表看齊,從某種程度上是減少了網路壓力。但怎麼信這個代表,這個代表是不是代表廣大人民的利益,是不是靠譜,這又是一個問題。
DAG,這跟我們一直說了POW、POS是本質的區別,不管是POS還是POW,做得都是跟我看齊的事,本質是當某一個人在一段時間之內成為一個基準,大家跟基準點看齊。但DAG的思路是一幫菜市場大媽去傳播謠言,沒有一個基準點,當在DAG網路裡,所有傳輸都是非同步的,好處是不需要任何人成為這個基準出塊的節點,壞處是沒有辦法做時序控制,因為每個人討論東西順序不一樣。DAG唯一能做的事情就是轉賬,後面涉及到操作無外乎是加和減,如果菜市場大媽互相傳播方式,做一些高階操作,A和B兩個人先做加法再做乘法,C和D兩個人先做乘法再做加法,兩個結果不一樣。DAG演算法裡暫時很難突破排序的問題。傳統區塊鏈鏈式結構沒有這個問題,這個節點先做加做做乘,沒關係,只要說好了,他說先加就是先加,他說先乘就是先乘,這塊是DAG網路和傳統區塊鏈方式最大的區別。
區塊鏈鏈式結構和資料庫日誌結構是什麼樣的?



二、區塊鏈與資料庫的不同

從安全級別來講,區塊鏈有很多機制確保安全性。對於資料庫大家的想法是這個東西是跑在資料中心裡的,區塊鏈基本上有一個筆記本就可以了,所以除了確保本地安全以外,更重要的是協議層面確保其他對等節點、相鄰節點有沒有作惡的壞人。在三個層面上確保安全,對於記錄級安全,屬於交易數字簽名、智慧合約數字簽名,就是當做一筆交易時,一定要通過數字簽名來驗證帳號是否有權利修改這套記錄,通過加密,從記錄級確保修改這條記錄的人一定是本人。區塊級的安全機制,當收到塊以後怎麼確保這個塊是正確的,這個塊包括默克爾樹、挖礦校驗,這是對於區塊安全的保障。對於鏈級安全機制,怎麼確保這個鏈是靠譜的,利用前一個區塊生成校驗碼、分叉解決方案。

三、區塊鏈技術和資料庫技術融合的形式
而在底層技術上,我認為通過兩者的技術融合,可能會出現“去中心化資料庫”這麼一種產品形態。 對於去中心化資料庫,其主要的技術點有一下幾個:
- 百分之百去中心化,是一個區塊鏈的資料庫。
- 沒有全域性鎖。
- 非固定節點生成日誌,每個節點都有可能成為出塊的節點。
- 非同步事務確認。
- 一次性策略調整。
- 行級安全性與觸發器。 應用場景,包括電商、金融、信用、物聯網,這些都有可能,這個形式非常好。現在的商業模式是中間商把所有人資源整合,利用整個資源提供便利性,賺中間差價,如果是區塊鏈機制,或者叫做去中心化的資料庫的機制,被普遍應用的話,從整個商業模式上來講,不太需要資源密集型中間商,可能會把這些行業現有的商業模式解耦。 對於未來區塊鏈商業模式來說,區塊鏈未來絕不僅僅被侷限於交易這麼一個簡單的操作,我們認為未來會是一個去中心化的協作組織。 例如,攜程是中心化的旅遊網站,有各種各樣的資源,包括酒店、機票、旅遊景點資源,會把這些資源打包賣給要出行的各位。未來會不會有一個區塊鏈攜程或攜程區塊鏈,它的做法是統一一套體系,可以讓希爾頓和長城飯店直接連到鏈裡,另外可以找某一個人或某一個組織,專門是做網站的,專門把這個鏈裡所有資源整合起來,做成網站掛出去,相當於去中介化,不需要用攜程這樣的組織把所有的資源統一起來賣差價,而是讓所有的人都自發參與到去中心化組織裡,來達到商業目的。 我們認為區塊鏈未來是去中心化協作,而不僅僅只是交易這麼一套東西。 基本就是這些,謝謝!
以上是《給開發者的區塊鏈技術指南 | JTalk 掘金線下活動第五期》 講師王濤的分享,如果你對掘金的 JTalk 線下活動感興趣,可以關注掘金活動頁面的 JTalk 活動報名。掘金 JTalk 目前已舉辦5期,每月一期的 JTalk 會邀請垂直行業的優秀工程師來分享優秀的實踐經驗,技巧方法。旨在為開發者提供線下技術交流互動機會,幫助開發者成長。
JTalk 預告
JTalk 第六期即將在杭州舉辦。
- 主題:從前端到“後端”
- 時間:5.20