重新為比特幣白皮書劃重點,並附送 8 個今天讀起來依然散發著智慧光芒的中本聰問答。
撰文:李畫
致謝:吳為龍
中本聰認為比特幣系統應該具有這樣的特點:一旦該系統的 0.1 版本開始執行,整個系統的核心設計將永遠保持不變。他把該目標作為比特幣工程實現的指導,最典型的一個體現就是使用指令碼引擎,使得系統可以支援未來每一種可能的交易型別。
十年過去了,比特幣系統似乎正如中本聰希望的那樣,並未發生核心設計的改變。這也意味著,在十年之後的今天,比特幣白皮書仍然是我們理解比特幣、甚至理解區塊鏈時,最重要的文獻。
當初大家在郵件列表和 bitcointalk 論壇中對比特幣提出的那些問題,現在也可能依然會困擾我們。那麼,中本聰當時的回答也許可以作為我們如今討論這些問題的起點。就像中本聰更偏愛的系統設計思路是「不重複造輪子」,在討論問題時,我們也可以避免重複造輪子。
出於上述兩方面的原因,我撰寫了本文,希望從重讀比特幣白皮書開始,從源頭理解比特幣。
本文包含兩個部分:第一部分是對比特幣白皮書的解讀,不過需要指出,我的這種解讀只是理解白皮書的一個角度,而且這種解讀更多是從技術角度來理解比特幣;第二部分,是郵件列表和 bitcointalk 論壇裡關於比特幣的一些問題,以及中本聰對這些問題的回答,我覺得這些問題放在今天,依然對更好的理解比特幣有著重要的啟發意義。
細讀比特幣白皮書,從這幾個點入手
1. 電子現金
比特幣白皮書的標題是《比特幣:一種點對點的電子現金系統》,它指的是比特幣是一種完全透過點對點技術實現的電子現金系統。這其中的關鍵詞「電子現金」也許可以作為我們理解比特幣的重要線索。
當我們在網際網路上進行交易時,並不像線上下使用現金時那樣可以直接把錢給到參與交易的另一方,而是必須依賴金融機構作為可信第三方來處理這筆電子支付。這種基於信任的模型有很多缺陷,比如會增加交易成本,比如所有的交易實際上都是可逆轉的。
有沒有可能在電子支付中、或者說在網際網路支付中,發明一種新的交易媒介,它允許任意雙方在不需要信任第三方的情況下直接交易,就像現金交易一樣?
這正是比特幣系統想要實現的目標:電子現金。
中本聰曾在討論比特幣價值的時候,讓大家想象一種稀有的金屬:它沒有任何實際的用途,也不適合用作裝飾,但它非常神奇地可以在通訊通道中傳輸。那麼,當這種金屬不論是因為什麼原因獲得了某種價值後,人們是否想要擁有這種金屬作為交易媒介。中本聰的這個比喻有助於我們更好地理解「電子現金」的含義。
2. 電子現金的所有權問題
要實現電子現金,第一件事是要能夠確定「現金」的所有權。線上下這種識別很容易,誰拿著那張錢,那張錢就是誰的;但線上上沒有實體貨幣,這種方法顯然不行,因此比特幣透過「數字簽名」識別所有權,該方式與雅浦島上確認貨幣所有權的方式有幾分相似之處。
雅浦島的石幣
太平洋的雅浦島上沒有金屬資源,島上的居民從距離該島 400 英里的帛琉島上開採石灰岩,再把石頭運回小島作為貨幣使用。買賣雙方在交易中決定買家使用多大的石幣付費,如果那塊石頭太大,那麼收款人只需要在付款人的石頭上做個標記,就可以把這塊石頭的所有權轉移給自己,雖然石頭可能依然放在付款人的家中。
比特幣在網路中的存在形式是一個數字簽名鏈。交易時,原所有者在該數字簽名鏈的末尾加上新所有者的公鑰(實際是公鑰的雜湊),就完成了比特幣所有權的轉移,就像雅浦島人在石幣上做個標記 / 簽名就完成了石頭所有權的轉移一樣。
也就是說,比特幣數字簽名鏈上最新的公鑰是屬於誰的(擁有與公鑰對應的私鑰),這筆「電子現金」就是誰的。
3. 電子現金的雙重支付問題
在實現了電子現金的所有權後,接下來需要解決的問題就是雙重支付(或稱為「雙花」)的問題。這或許是設計電子現金時最核心、也最難解決的問題。
讓我們回到現金,透過對比找出電子現金為什麼會面臨雙重支付問題,以及可以如何去解決該問題。
在使用現金支付時,我們把一張錢先給了誰,那張錢就是誰的,因此我們無法花費同一張錢兩次,抽象理解的話就是,我們用時間確定支付事件發生的先後次序,並只認可先發生的那筆支付。
與現金支付相同的是,在分散式網路中,我們同樣只認可最早發生的那筆交易。與現金支付不同的是,在分散式的網路中,我們無法透過時間確定交易發生的順序,因為網路的參與者們並未對時間達成共識。最簡單的例子,一臺計算機認為時間是上午 9:01,另一臺計算機可以認為時間是上午 9:02,物理時間是行不通的。
中本聰選擇的方法是透過時間戳,實現參與者在時間上的共識,從而使得系統能使用這種時間共識確定事件發生的順序。
時間戳功能是比特幣的核心,以至於中本聰稱比特幣系統是一個「分散式的安全的時間戳伺服器」。
我們也許可以這麼去理解時間戳:在現實世界中,一秒就是一秒,每一秒與另一秒的長短是完全相同的,一秒接著一秒構成時間的順序;在比特幣系統中,「一秒」就是一個時間戳,如果用物理時間衡量,每一秒的長短是由一個新區塊被挖出來的時間決定的,大約等於 10 分鐘,每一秒與另一秒的長短各不相同。但如果用比特幣時間衡量,可以認為每一秒與另一秒並無區別,一秒接著一秒(每一個新的時間戳被新增到之前的時間戳之後)構成一個連貫的時間的順序。
交易被打包進區塊,區塊被蓋上時間戳,也就相當於每筆交易都有唯一確定的發生「時間」,節點在處理新的交易時,會去檢查這筆交易對應的「電子現金」在當下的時間之前有沒有被花費過,如果沒有,就接受這筆交易,併為它打上時間戳(確定發生的時間);如果被花費過,就拒絕這筆交易。如此一來,「電子現金」的雙重支付問題就得到了解決。
在一個分散式系統中,誰來蓋時間戳,或者說誰來決定上一秒的時間結束了,接下來進入到下一秒?透過工作量證明(PoW),誰能搶先算出落在某個區間內的雜湊數值,誰就能蓋時間戳。
這個時間戳如何獲得共識?最長鏈原則,最長鏈代表的是大多數(大多數算力)的決定。工作量證明加上最長鏈原則也被稱為中本聰共識,共識是所有區塊鏈系統最核心的部分,它的本質是為了實現分散式的時間戳服務。
當所有權問題和雙重支付問題都得到解決之後,我們就有了一種可以在網路中使用的電子現金,它使得線上支付可以從一方直接傳送給另一方,而無需透過金融機構。中本聰把他實現的這種系統稱為比特幣。
二、八個依然散發智慧光芒的中本聰問答
中本聰在郵件列表和 bitcointalk 論壇中回覆了許多關於比特幣的問題,他對自己的答案很有信心,他認為這些問題幾乎都是他在設計系統前就已經考慮到了的。多年之後,這些回答讀起來依然散發著智慧的光芒。
我們選擇了那些放到今天依然有意義的問答,並歸納整理如下。
1. 挖礦是不是浪費能源?
中本聰回覆:這和黃金開採相似。黃金開採的成本與黃金的價格水平是一致的,開採是一種浪費,但這種浪費遠少於黃金作為交換媒介所產生的效用。比特幣也一樣,把比特幣用於交換媒介所產生的效用遠遠高於挖比特幣需要的電力。
2. 比特幣的價格模型是可持續的嗎?
中本聰回覆:當比特幣還沒有在市場上確立價格之前,基於生產成本的估值模型是有意義的,任何商品的價格都趨向於生產成本。但是在幾年以後,當新挖出來的比特幣只佔供應量很小一部分的時候,將會是比特幣的價格決定生產成本,而不是反過來。NLS (一位社羣成員)的基於能源消耗的估值模型是一個很好的起點。但在未來,市場力量將是決定比特幣價格的主要因素。
3. 如果「壞人」比「好人」有更多的算力怎麼辦?
中本聰回覆:這首先要求單個「壞人」的算力比所有「好人」的算力之和更大;其次,即使單個「壞人」的算力更大,他能做的只是雙花自己的錢,他需要透過買東西花費這筆錢(如今可以是在交易所交易),然後在收到「貨物」之後,透過攻擊網路重新花費這筆錢。這種攻擊對於攻擊者來說或許並不划算,如果有這種算力還不如好好的挖礦。
4. 比特幣是匿名的嗎?
中本聰回覆:比特幣的匿名性取決於比特幣地址是否關聯了使用者的個人資訊。如果沒有,那麼就是匿名的,因為比特幣地址是一串隨機數字,它本身是不包含識別資訊的。為了保護隱私,每個比特幣地址最好只使用一次。
5. 比特幣網路可以傳送「私人資訊」嗎?訊息加密是比特幣的內建功能嗎?
中本聰回覆:全世界都可以看到這條訊息,它是完全公開的。因為 ECDSA 只能用於數字簽名,不能用於訊息加密。RSA (比特幣並未使用該演算法)可以用於訊息加密,但它的資料量太大了,不管是對儲存空間還是對頻寬的要求都比 ECDSA 大一個量級,使用 RSA 是不合適的。
永久記錄一條所有人都可以看到的訊息是不明智的。如果需要訊息系統,它應該是一個與比特幣網路平行的獨立系統,訊息不應該被記錄在區塊鏈上。可以用比特幣金鑰對給訊息簽名,以證明訊息的來源。
6. SHA-256 被攻破了怎麼辦?(此問題類似於量子計算來了怎麼辦)
中本聰回覆:SHA-256 非常難以被破解,即使被破解了,我們可以在麻煩到來之前就有序地用新的演算法替換掉它。
7. 比特幣的可分割性好嗎?
中本聰回覆:比特幣顯示為 1.00,但它實際上包含 8 個小數位,是 1.00000000。
8. 那些找不回私鑰的丟失了的比特幣怎麼辦?
中本聰回覆:這些比特幣只會讓其他人的比特幣更值錢,可以把它看作是對所有人的捐贈。
三、重回最開始的地方
人們對比特幣的解讀有很多,對區塊鏈的解讀以及由此延伸開來的關於區塊鏈能做什麼的論點則更多。但如果你想從源頭出發認識比特幣、認識區塊鏈,下邊是還不錯的旅程開始的地方。
看上去最遠的路,也許是最快的路。
1. 比特幣白皮書:
https://bitcoin.org/bitcoin.pdf
2. 中本聰在郵件列表發表過的所有言論:
https://satoshi.nakamotoinstitute.org/emails
3. 中本聰在 bitcointalk 發表過的所有言論:
https://bitcointalk.org/index.php?action=profile;u=3;sa=showPosts
4. 與比特幣相關的重要文獻資料:
https://nakamotoinstitute.org/literature