區塊鏈能做哪些普通數據庫系統不能做的事情?
除了加密貨幣之外,區塊鏈(公共或私有)還有哪些優勢以及在區塊鏈中實現比基於傳統數據庫的系統更有用的實際案例?
區塊鍊是資料結構,其唯一的優點是在該結構中儲存數據可以讓您在某些條件下實現去中心化。
所以你的問題歸結為“權力下放有多重要”?去中心化系統往往具有以下有利屬性:
- 開放(任何人都可以參與;未經許可)
- 無國界(只要您可以到達另一個連接的節點,國家/地區邊界無關緊要)
- 中性(系統不關心你用它做什麼)
- 審查阻力(交易/數據輸入是不可阻擋的)
- 不信任(通過跨多個節點驗證很容易檢測到偽造數據)
- 不變性(數據不能被刪除或更改)
- 民眾
這很難回答,因為“區塊鏈”不是一個很好定義的東西。該術語通常是指在分佈式系統中對密碼學的某些使用,但除此之外它的含義取決於您詢問的對象。對於那些將其用作通用術語的人來說,它通常只是一個行銷術語。
如果您假設至少有一個實際的區塊鏈正在建構,或者由基於經濟激勵的一組未經許可的參與者(“礦工”),或者由一組具有長期身份的許可簽名者,那麼您的問題是重新問實際上沒有意義。區塊鏈共識算法不會與數據庫競爭或取代數據庫。它們是一種就全域狀態達成共識的機制,其中多個參與者有權接受更改。可以說,這些參與者中的每一個都已經自己需要一個數據庫——區塊鏈只是這些數據庫所有已接受更新的日誌。即使在比特幣中,每個節點實際上都有一個帶有 UTXO 集的本地數據庫。在 Bitcoin Core 中,這是一個 LevelDB 數據庫,但沒有根本原因不能使用另一個數據庫。
當然,在某些情況下,您只需要一個單一的權限來決定對數據庫的所有更改。在這種情況下,數據庫確實是您所需要的。但這是一個愚蠢的比較:今天有很多分佈式系統的案例,在生產使用中,與區塊鏈無關。例如,查找 Paxos 或 Google Spanner。複雜性不在於數據庫部分,而在於保持參與者同步。這就是共識算法的作用。我所知道的大多數生產實例都使用相互信任的權限(分佈式系統用於性能/延遲而不是信任),但允許不信任參與者的算法也是眾所周知的,例如 PBFT。
現在,深入探勘:私有區塊鏈與這樣的系統相比如何?答案很簡單:它實際上是一種看待同一事物的新方式。私有區塊鏈(即有一組可以批准更改的已知身份)依賴於在區塊簽名者之間執行傳統的共識算法(例如 PBFT)來確保只出現一條鏈。這裡的“區塊鏈”實際上是更改日誌,因為它的許多屬性(例如臨時分叉的能力)甚至都沒有被使用。該日誌可能對審計有用,如果您將其建構為雜湊鏈,您確實可以將其稱為區塊鏈。但是這裡沒有任何創新。這並不意味著“區塊鏈技術”在這裡毫無用處,例如一些密碼學
當您談論公共區塊鏈(任何人都可以成為更改的授權者)時,事情會變得更加有趣,但它的案例非常有限。我將在這裡專注於工作量證明,因為我不相信任何完全避免 PoW 的解決方案實際上可以安全地提供相同的屬性。PoW 所做的就是用投注代替已知身份的區塊簽名在特定版本的歷史和支付賭注。始終與大多數人(“礦工”)下注的每個人都會獲得報酬,而分歧的人則不會。這裡有兩個基本的變化:(a)必須有一些有價值的東西可以支付給礦工,這通常意味著你的區塊鏈需要定義自己的貨幣,將案例限制為有效地僅限於加密貨幣(b)你沒有得到保證不再收斂,只是在機率和經濟假設下。
總而言之,您的問題的答案實際上取決於您對區塊鏈的含義,以及您將其與什麼樣的事物進行比較:
- 區塊鏈中使用的密碼學可能廣泛適用於各種環境,但與區塊鍊或數據庫本身沒有任何關係。
- 在只有一個授權人的情況下使用共識算法(私有或公共,包括典型的“基於區塊鏈”的算法)是愚蠢的;你應該直接使用數據庫。
- 當您的授權人受信任時(例如,因為它們都由同一家公司運營),使用容錯共識算法(傳統的 BFT 等算法或 PoW)是矯枉過正的。改用 Paxos 之類的東西。
- 使用像 PoW 這樣的去信任共識算法確實增加了一些其他結構沒有給你的東西(無許可參與,這意味著沒有一組參與者可以審查你的更改),但是成本很高,而且它的經濟假設使它幾乎只有用對於定義自己的加密貨幣的系統。世界上可能只有一個或幾個實際使用過的地方。