在比特幣之前,有很多數字電子貨幣失敗的嘗試(本書的前言中提到了許多失敗的案例)。比特幣與大多數失敗的嘗試之間,最重要的區別在於去中心化。比特幣去中心化的核心創新方法是使用區塊鏈。
在這一節,我們會研究區塊鏈技術如何在貨幣體系以外的領域裡實現去中心化。本章我們會一直重複使用汽車的案例,這輛車的所有權是通過區塊鏈來控制的。這個案例是我們在第9章中介紹的智能合約的概念裡的具體體現。早在1990年年初,尼克·薩博(Nick Szabo)和其他幾位創新性提出智能資產和管理智能資產的數字化合約,遠遠早於比特幣。隨著區塊鏈的出現,這個想法變得越來越現實和具體。
令人鼓舞的案例
當代的汽車使用兩種主要的加鎖機制(locking mechanisms):門上的物理鎖和通過電子鎖住引擎不讓發動的制動器。用戶用遙控鑰匙可以與汽車無線通信,根據遙控器與車的距離或者用戶按下按鈕的特定動作,來解鎖車門和發動引擎。
為了防止假冒鑰匙入侵,車鑰匙的解鎖機制需要加密。雖然安全專家發現很多最近使用的加鎖機制存在很多問題,但是他們是有可能處理好這些問題的。一般來說,這些算法會使用對稱鑰匙加密技術。在我們這個案例中,用的是基於非對稱加密技術的類似橢圓曲線數字簽名算法的數字簽名技術。加 入 會 員 微 信
在這個例子裡,汽車儲存了一份遙控器的公開密鑰,用於打開車門和發動引擎。當遙控器請求開門的時候,汽車發送回隨機數並要求遙控器用它儲存的密鑰簽名。只有遙控器準確回復簽名,車門才會被打開。到目前為止,這個原理和實際中的防盜機制沒有什麼大的區別。唯一的區別是,我們使用了很深的加密技術,安裝起來比較昂貴。
實現智能
這次設計的智能汽車,是假設用來驗證遙控器的公開密鑰並不是靠汽車製造商永久地記錄在汽車裡;而是,智能汽車技術上可以不間斷地,無線接收例如比特幣一樣的區塊鏈上的新區塊。當汽車在組裝廠組裝的時候,遙控器裡第一個用戶(比如組裝廠的經理)的公開密鑰通過特殊操作加入區塊鏈。同時,這輛智能汽車也把該特殊操作的ID寫入它自帶的程序。
核心的思想是,汽車更改所有權的時候——從裝配車廠到質量監控室到運輸人員到汽車經銷商到第一個所有者——也同時更新到區塊鏈,區塊鏈同時授權每一步的轉換。值得注意的是,在這個模式下,授權用的遙控器沒有跟著車走。每個人或者公司都有一個預先存在的遙控器(或者帶著某種有遙控器功能的儀器)。這個遙控器裡面有一個唯一的簽名密鑰。根據區塊鏈的交易,簽名密鑰被激活或者被取消擁有這輛車的權利。這樣的交易以車最新的交易ID為輸入,同時設定一個新的公共密鑰為輸出ID。汽車目前的擁有者需要用私人密鑰在這個輸出ID上簽名。
這種設計和我們在第9章討論的智能資產相似,除了一個重大的區別: 區塊鏈的交易不僅僅表示汽車所有權的變更,它還代表真正的汽車物理擁有權的轉移。當汽車通過區塊鏈轉移的時候,前車主的遙控器無法工作,新車主的遙控器獲得開門和啟動引擎的權利。讓所有權等同於使用權的技術有著深遠的影響,這將促使強有力的去中心化。但是去中心化是否有用,這並不容易看清楚。我們將在11.4節回過頭來討論這個問題。
安全的交易
假設愛麗絲擁有一輛智能汽車想賣給鮑勃,能夠數字化地轉移汽車控制權會引起幾個有趣的可能性。比如,愛麗絲也許正在國外旅行正需要錢來支付旅費,所以要賣掉停在她家後院車庫的汽車。只要聯上互聯網,鮑勃就可以用比特幣支付給愛麗絲車錢,愛麗絲可以遠程通過區塊鏈把車的所有權轉移給鮑勃,鮑勃就可以開走這輛車。
然而,這樣的交易存在一定的風險。如果鮑勃先支付,愛麗絲也許收了錢而不轉移車的所有權。如果愛麗絲先轉移車的所有權,鮑勃也許不付錢就把車開走了。即使假設愛麗絲在現場,也有可能另一方突然改變主意而撤銷交易。這時候讓不在場的第三方來調解爭議也很困難。
我們之前多次碰到這種問題,包括在合幣(第6章)和域名幣(第10章)中。解決這類問題要使用同樣的原則。只要支付的貨幣和汽車的擁有權同時存在相同的區塊鏈,愛麗絲和鮑勃就可以產生一個不可分割的交易。這個交易同時轉移汽車的所有權和車款。具體地說,這個交易規定兩個輸入:愛麗絲的所有權和鮑勃的支付款;規定兩個輸出:歸鮑勃的所有權和歸愛麗絲的支付款。這個交易需要雙方提供輸入要素,因此要求雙方都要簽名。如果只有一方簽名,交易就無效。一旦一方簽名,交易的細節就無法改變,除非這個簽名無效。簽過名的交易一旦對整個區塊鏈廣播,鮑勃只要等預設的幾次確認(一般是6次),就可以擁有這輛車。鮑勃支付給愛麗絲的款項也同時被確認。兩個確認是相輔相成,缺一不可的。
細心的讀者也許注意到了一個微妙的問題。鮑勃可以收到愛麗絲簽名的交易,自己也簽名,但是不立即對外廣播。等到愛麗絲賣東西的價格變了,鮑勃才把舊交易用原來的價格對外廣播。所以為了避免這種問題,比較複雜的不可分割的交易裡包括截止時間。過了截止時間後,愛麗絲可以發送輸入她控制下的新地址,用來表示撤回她發給鮑勃的已經簽過名的交易。
這是本章案例之一。我們將會在本章看到,很多其他案例使用區塊鏈技術促使現實中的各種交易程序去中心化,從而達到不同種類的去中心化狀態。其中,不可分割性(atomicity)是絕大多數案例共有的特性。也就是說,交易每一方的交割都是聯繫在一起的,所以它們都同時發生或者都不發生。不可分割性是區塊鏈以外應用程序領域裡重要的安全概念。