2.2 去中心化系統
中本聰是一個充滿理想主義的密碼朋克,他看到了中心化系統的一些缺點,于是致力于開發去中心化系統。在去中心化系統中,并不存在擁有特權的中心節點,每個網絡節點擁有的信息和權力都是一樣的,稱其為對等節點。對等節點組成的網絡稱為對等網絡,也叫P2P網絡,如圖2.4所示。對等網絡上運行的信息系統叫作分布式系統,比特幣系統所依托的區塊鏈就是一個分布式的數據庫系統。而比特幣本身從技術上來說,可以看成是運行在這個區塊鏈上的一個資產交易記錄鏈。
圖2.4│對等網絡(去中心化系統)示意圖
在中心化的銀行系統中,銀行的中心節點服務器享有特權,只有它才能夠記賬,每一次貨幣交易都作為一條記錄記在銀行系統的數據庫中。而在比特幣系統中,不存在一個記賬中心,所有的計算機節點都是平等的,它們都參與記賬,每當一個節點發生交易時,它會把交易數據向全網廣播發送,全網的節點都會把這次交易記錄下來。每一個節點(包括交易者的計算機)都存儲所有記賬的數據庫,而且所有節點記錄的數據庫賬本都是一模一樣的。這樣帶來了以下好處。
(1)你再也不用擔心你的資產會因中心節點損壞而消失,因為賬本數據在整個區塊鏈網絡的計算機中都有留存。大家都可以證明你擁有這筆資產。
(2)因為大家擁有的信息都一樣,不存在信息不對稱,也就不會產生某個節點因為擁有特權而侵犯大家權益的問題。
(3)區塊鏈通過加密技術保障數據不易篡改、不易偽造;通過賬本的分布式存儲技術保障交易公開、透明、可追溯;通過智能合約技術保障交易的自動化、智能化執行。因此,區塊鏈解決了網絡上人與人之間的信任問題。當你和一個陌生人交易時,你不再需要一個中心化的中介系統,而是可以直接在區塊鏈上進行點對點交易,這樣就節省了大量的中間成本和信用成本。
去中心化的分布式系統雖然有很多好處,但設計并運行這樣的系統是很難的,因為和中心化系統相比,它運行在一個不可信任的環境中,要保持系統的一致性、完整性、安全性是非常困難的。往往中心化系統很容易做到的事,在去中心化系統中會非常困難。這個道理很簡單,一個團體如果有一位領導,大家都信任他并服從他的命令,那么這個團體很容易開展活動;如果這個團體中沒有領導,大家各干各的,甚至還有人惡意搞破壞,那么就會很難辦成一件事。
中心化系統與去中心化系統的對比如圖2.5所示。
圖2.5│中心化系統與去中心化系統的對比
那么,在去中心化的比特幣系統中具體有哪些需要解決的問題呢?總結起來,主要有以下幾點。
(1)去中心化系統中成千上萬個節點都擁有記賬和存儲賬本數據的權力,節點的加入和退出都是完全自由的,沒有人來管控和認證,這樣難免就會出現心懷不軌的破壞分子。那么怎樣防止有人惡意篡改數據或者偽造賬本呢?
(2)比特幣系統的節點分布在全球各地,在網絡中同時會產生成千上萬個交易數據需要記賬,各地的網絡有快有慢,有時部分網絡還有可能斷線,要全網所有的節點保持所記錄的交易賬目都是一模一樣的,即保持全網的一致性,也是非常困難的。
(3)雙重支付防不勝防。通俗地講,雙重支付是指把一份資產使用兩次,也稱其為“雙花”。例如地球村里有3位村民在進行商品交換,他們是二黑、翠花和小明。當前全網的區塊鏈賬本上都記錄著二黑有1個比特幣,他把這個幣發送給了翠花,并向全網進行廣播。于是,大家記下這筆交易,把二黑的比特幣從他的賬目記錄中除去,在翠花的賬目記錄中增加1個比特幣?,F在二黑沒有比特幣了,但是由于網絡傳輸不同步,二黑廣播這次交易后小明并沒有及時收到信息,小明的賬本上仍然記錄著二黑有1個比特幣。于是,二黑又向小明發送這個比特幣,用來交換某些物品。二黑把自己的1個比特幣同時交換給2個人的行為就是雙花攻擊,這構成了交易欺詐,如圖2.6所示。
圖2.6│區塊鏈中的“雙花”攻擊
看了上面這些問題,讀者應該對實現區塊鏈的難度有了一個基本了解。正是因為很難,所以在中本聰出現之前,密碼朋克中的這么多IT精英,也是屢試屢敗。但是,中本聰總結了前人的經驗,并設計了一個非常巧妙的運行機制,成功解決了這些問題,使得比特幣系統在無中心節點運維管理的情況下,穩定運行。中本聰到底設計了一個什么樣的機制?地球村的小明又該怎樣用它來解決二黑的“雙花”呢?要搞懂這些問題,首先必須了解一些密碼學的基礎知識。