1. 程式人生 > >梳理區塊鏈知識脈絡

梳理區塊鏈知識脈絡

1、

凌晨寫完上篇文章意猶未盡,於是我趁勝追擊,在瀏覽數篇文章後覺得還是應該讀原文,於是乾脆開著有道詞典劃詞翻譯功能,讀起了MIXIN的英文版白皮書,並一口氣讀掉17頁,同時喝掉了當天的第三杯咖啡。

凌晨三四點,滿腦子的新奇興奮;疲憊湧來的時候難以入睡,也睡不踏實。這意味著,我該緩緩勁兒,整理一下認知脈絡了。

下文即是我對近幾次新增知識點的脈絡整理。

2、

區塊鏈的本質,是一種不可篡改的資料庫技術。注意:不可篡改是一種追求,且需要用程式設計來保證的,並非是一個天然的結果。

古典的資料庫技術支援增刪查改四大類操作,而在區塊鏈技術中,只支援增查,不支援刪改。

查這個行為,相對簡單。

針對“增”這個行為,有幾層問題要解決:

  • what:資料庫中記錄的是哪些資料?
  • who:誰能往資料庫中增加資料?
  • why:為什麼要往資料庫中記錄這些資料?
  • how:如何實現往資料庫中新增資料,且實現不可篡改?

3、

關於how,至少有2大類方式,一類是順序連結的區塊鏈,另一類是有向無環圖DAG。

前者譬如BTC,ETH,EOS都是此類,後者譬如IOTA,byteball,MIXIN。

無論是哪一類,都面臨著同樣的一個核心問題,即“拜占庭容錯”。拜占庭容錯,解決的是“安全問題”,即:如何保證在有作惡節點的情況下,整個系統還能正常運轉,正確運轉?換言之,即便出現錯誤,也能修復之?“安全問題”的核心,是雙花問題。即:同一個幣,是否會被用了2次甚至更多次?

拜占庭容錯經歷了2個解決方案,最初是同步拜占庭容錯機制即PBFT,然後是非同步拜占庭容錯機制aBFT,或部分非同步拜占庭容錯機制。PBFT存在著效率慢的問題。某種意義上BFT已經可以等同於aBFT了。

拜占庭容錯的不同方案,是在解決安全問題的基礎上,提高效率。

4、

作為一種資料庫技術來說,目前的區塊鏈鏈上所能儲存的資料非常之少,僅幾百G資料就能使之達到極大瓶頸,遑論達到古典資料庫中的幾百T的資料。

於是決定哪些資料上鍊儲存,成為了一個非常重要的業務決策。而為什麼鏈上僅僅只記錄這些資料,就能實現不可篡改,能滿足業務需求呢?則是在決策時需要審慎考慮的。

上述效能瓶頸,包括至少2個維度,一個是鏈上儲存資料檔案的累積大小,另一個則是與鏈互動的反應速率。

在順序連結的區塊鏈中,比如EOS,通過修改節點數量,節點打包出塊的數量與時間間隔、廣播及確認簽名的時機等,是在嘗試實現效能的突破。當然也有一些其他解決方案,譬如閃電網路、側鏈等。

另外一種思路,則是採用有向無環圖DAG。在這個解決方案中,無需“打包出塊”,每條交易就是一個被處理、被確認的物件。且因為沒有順序等待,隨著邊和頂點越來越多,新產生的交易被處理、被確認的效率能越能達到網路通訊的極限。

5、

那麼,這裡有一個邏輯問題,到底是安全第一,效能第二,還是效能第一、安全第二呢?

又或者說,除了這種非此即彼的硬排序,是否有能在安全與效能之間有所權衡呢?

6、

除了安全和效能,還有一個重要的指標是可拓展性。

我們知道,BTC網路、ETH網路和EOS網路是無法直接聯通的。公鏈和不同的聯盟鏈、私有鏈也是無法直接連通的。每個“鏈”都是一顆自轉的小星球,與其它“鏈”甚至會產生競爭關係。每個鏈哪怕再拓展,也會有自己的能力瓶頸與資源瓶頸。

一個有趣的專案立志於 mix in one,去做以上各顆星球之間的連線,它就是MIXIN.ONE。

7、

在解決HOW這個問題時,要解決的是安全、效能、可拓展性,同時解決how的過程也是解決what 和why與who的過程。

在who這個問題上,誰有權利往資料庫中增加資料?即:記賬呢?

POW理論上人人可以去解謎題,但只有解答正確的人,才有權利記賬。

POS理論上所有持票的人都有權利記賬,持票越多,獲得記賬權利的概率就越大。

DPOS則是通過投票選舉出記賬的人,僅有有限的節點來記賬。

無論POS還是DPOS,都面臨持票人蔘與度並不高的情況。同時也需要面臨一個問題,即散戶存的幣,被錢包或交易所挪用投票怎麼辦?

一個延展問題是,記賬不是你想記,想記就能記的。這裡面有4個角色:一條資料行為的發起者與接受者,一條資料行為的執行者,一條資料行為的記錄者,一條資料行為的驗證者。這4個角色的定義範疇,門檻等,在不同專案中,有著不同的區別。

比如在bitcoin中,只有有權利記賬的人才能執行資料行為並通過打包出塊記錄下來,而所有參與挖礦的人都可以參與驗證。

那麼其它區塊鏈專案呢?

以上即為我關於區塊鏈認知的大致脈絡整理。