乾貨 | 創世文檔:Adam Back 如何設計出比特幣的引擎

乾貨 | 創世文檔:Adam Back 如何設計出比特幣的引擎

[公告] hach cash 郵票實現

時值 1997 年 3 月 28 日,密碼朋克郵件列表的 2000 多個訂閱者收到了一封郵件,開頭就是上面那句引文。發送者是一位 26 歲的英國人,埃克塞特大學(University of Exeter)的博士后。這個年輕的密碼學家在郵件組裡用名 Adam Back 博士,也是郵件組的高產貢獻者。這份郵件所包含的講解和簡單實現,作者命名為 “基於部分哈希碰撞的郵費方案” —— 其實就相當於用在電子郵件上的郵票,只不過其基礎是一種漂亮的密碼學方案。

“使用部分哈希值(partial hashes)的理由是,其計算成本可以任意調高”,Back 寫道,“但即刻可以驗證”。關於這個系統的優點,他就是這麼解釋的。

當年的密碼學家現在成了 Blockstream 公司的 CEO,但那封郵件在當時並沒產生多大反響:只有一個讀者回了信,而且討論的是選擇哈希算法的技術問題。但是,Hashcash 背後的技術 —— 工作量證明 —— 卻塑造了它誕生之後十多年的數字貨幣研究。

“以任務處理施加代價,打擊垃圾郵件”

Back 的 Hashcash 並不是同類方案的開創者。

早在 1990 年代早期,互聯網的前景,尤其是電子郵件系統的優點,對有所關注的技術人員來說已經顯而易見。但是,當時的互聯網先驅們,也意識到了電子郵件系統有自己的問題。

“尤其是,發送電子郵件很簡單、成本也很低,而且你還可以向許多人發送同樣的消息,那一定會招致濫用”,IBM 的研究員 Cynthia Dwork 博士和 Moni Naor 博士在他們發表於 1992 年的白皮書中這麼解釋。該白皮書名為 “以任務處理施加代價,打擊垃圾郵件”。

確實,隨着電子郵件的流行,垃圾郵件也層出不窮。

需要一個解決的辦法,早期的互聯網用戶都同意 —— 而其中一種就是 Dwork 和 Naor 的論文所提供的。

他們倆的方案是:發送電子郵件的人,每逢發送一份郵件,都要在郵件中附加一些數據。這些數據需是一個數學問題的解,而且每封郵件提出的問題都是獨一無二的。具體來說,Dwork 和 Naor 提出了三種可用於此場景的候選謎題形式,全都基於公鑰密碼學和簽名方案。

要給電子郵件添加一個解並不難,理想情況下只需一台普通計算機的處理能力,算個幾秒鐘就行,而且接收方是很容易能檢查出其有效性的。有趣的地方就在這裡:對發廣告的、搞詐騙的和黑客來說,即使一封郵件只需一點點處理能力,也會累積出高昂的成本,因為他們都想一次性發送幾千乃至幾百萬條消息。理論上來說,濫發消息的成本可以非常高昂,貴到無利可圖。

“主要想法就是讓用戶計算一個難度適中而不棘手的函數,然後才能獲得資源的訪問權,由此防止濫用”,Dwork 和 Naor 這麼解釋。

雖然 Dwork 和 Naor 沒有發明這個術語,但他們所提議的這類解決方案,後來以 “工作量證明” 之名為人所知。用戶必須出示他們的計算機工作的結果,以此證明他們花費了真實世界的資源。

多麼漂亮的方案,可惜可能過於超前。這套方案僅僅在一小圈計算機科學家內部流傳,從來沒得到廣泛的關注。

Adam Back 和密碼朋克

就在 Dwork 和 Naor 出版他們白皮書的同一時間,一群帶有自由意志主義(Libertarian)傾向的隱私權運動人士也開始意識到了互聯網的強大潛力。這群擁有同樣意識形態的人開始形成了一個郵件組,專門探討加強隱私的技術。跟 Dwork 和 Naor 一樣,這些 “密碼朋克” —— 這是後來人給他們的稱呼 —— 利用更新的密碼學來實現他們的目標。

幾年後,Adam Back —— 他在 1996 年取得博士學位 —— 在這個郵件組中成了最活躍的參與者之一,有時候一個月就能發幾十封郵件。跟其他密碼朋克一樣,他也對諸如隱私權、言論自由 和自由意志主義在內的話題充滿激情,而且他還參與到了如 “匿名中轉商”、加密文件系統、電子現金(由 David Chaum 博士發明)等話題的技術討論中。

但有一段時間,Back 最為人知的事迹可能是印製和販賣 “軍火” 上衣:就是印有加密技術協議的 T 恤衫,意在指出美國政府把 Phil Zimmermann 的 PGP(Pretty Good Privacy)加密程序按出口管制法律中的 “軍火” 條例來管制的荒謬之處。你要是穿上 Back 的衣服,穿越國境離開美國,那你可就成了一個 “軍火出口商” 了。

乾貨 | 創世文檔:Adam Back 如何設計出比特幣的引擎

跟大多數人一樣,Back 沒有注意到 Dwork 和 Naor 的工作量證明提議。但在 1990 年代中期,他也一直在思考用類似的方法來對抗垃圾郵件,有時候會在密碼朋克郵件組裡 “高調” 發言。

比如,在給轉寄商增加更多隱私的上下文里,Back 會這麼評論:“使用 PGP 協議附帶的一個好處是,PFP 加密方法會給濫發消息的人施加一些開銷 —— 他每秒能加密的消息,應該比能用來塞爆一個 T3 鏈接所需的數量要少”。這多麼像 Dwork 和 Naor 的想法啊。

密碼朋克的郵件組在五年內迅速壯大。一開始它只是一小群在舊金山灣區開辦創業公司的人的在線討論平台,後來成了一個小型的互聯網現象,有幾千個訂閱者 —— 而且經常郵件會多到看不過來。

正是在這個時期 —— 1997 年,郵件組人數接近峰值的時間 —— Back 提出了他的 Hashcash。

Hashcash

Hashcah 類似於 Dwork 和 Naor 的防濫發方案,目的也是一樣的,但 Back 提出了一些額外的用途,比如抵抗濫用匿名中轉商。但就像這個名字暗示的那樣,Hashcash 的基礎跟 Dwork 和 Naor 所用的不是同一套,它基於哈希算法。

哈希算法是一種密碼學工具,它可以接受任意數據 —— 無論是一個字母還是一整本書 —— 作為輸入,然後輸出一個長度確定的、看起來毫無規律的數字。

舉個例子,“This is a sentence” 這個句子的 SHA-256 哈希值,是如下的十六進制數字:

乾貨 | 創世文檔:Adam Back 如何設計出比特幣的引擎

“轉換” 為常規的十進制數字為:

乾貨 | 創世文檔:Adam Back 如何設計出比特幣的引擎

二進制形式則是:

乾貨 | 創世文檔:Adam Back 如何設計出比特幣的引擎

但是,“This, is a sentence” 的 SHA-256 哈希值,卻是:

乾貨 | 創世文檔:Adam Back 如何設計出比特幣的引擎

如你所見,僅僅只是插入一個標點,產生的哈希值也會完全不同。而且,重要的是,兩個句子的哈希值都是完全無法預測的;即使你知道了第一個句子的哈希值,也無法從中推導出第二個句子的哈希值。要想知道,唯一的辦法就是實際運行哈希計算。

Hashcash 很聰明地運用了這種數學工具。

在 Hashcash 中,郵件的元數據(如 “發送者地址”、“收件人地址”、發送時間,等)都被形式化為一個協議。此外,電子郵件的發送者必須給這部分元數據加入一個隨機數字,稱作 “nonce”。所有這些元數據,包括這個 “nonce”,(輸入哈希函數后)可得出一個哈希值,這個哈希值看起來也會跟上面所示的隨機數一樣,毫無章法。

奧妙之處在於:不是隨便什麼哈希值都可以算作 “有效的”。哈希值的二進制形式,必須以預定數量的 “0” 開頭,才算有效;比如說,要有 20 個 “0” 開頭。發送者就要找出某個 nonce,使得哈希值的開頭要有 20 個 “0”,才行。但是,他是沒法預先知道哪個 nonce 能做到這一點的。

因此,要想得出這樣的有效的哈希值,發送者只有一種辦法:試錯(也即 “蠻力計算”)。他只能不斷嘗試不同的 nonce,直到找出一個有效的組合。否則,TA 的郵件就會被收件人的郵件客戶端拒絕。就像 Dwork and Naor 的方案,Hashcash 也要求付出計算資源:這是一種工作量證明系統。

“如果郵件沒有附帶 20 位的哈希值 …… 你的程序就會彈出一條聲明,解釋發郵件需要付郵費,以及哪裡能獲得合適的軟件”,Back 在密碼朋克郵件組裡這麼解釋,“這可以讓濫發郵件的人一夜之間破產,因為 100 0000 x 20 = 100 MIP 年,比他們的計算能力要大得多”。

值得注意的是,Back 的工作量證明系統比起 Dwork 和 Naor 的要更隨機。他們倆的方案只要求解出一個謎題,這意味着一台更快的計算機總是解得更快些(比起條件更差的計算機)。但從統計上來看,Hashcash 中更慢的計算機也有幾率會更快找出正確的解。

(打個比方,如果某人跑得比別人快,在短跑比賽中 TA 每次都能贏。但如果某人只是買了更多的彩票,其他人也總有幾率能比他中得多 —— 只是不那麼經常能中獎而已。)

數字世界的稀缺性

與 Dwork 和 Naor 的提案命運相似,Hashcash 從未獲得很大的進展。Back 在 2002 年的白皮書中詳細講解了 Hashcash。Apache 的開源 SpamAssassin(垃圾郵件過濾)平台實現了它,而微軟也在一種不兼容的 “電子郵件郵戳” 格式中利用了工作量證明的想法。而 Back 和其他學者,連年致力於為這個解決方案提出不同的應用,但都沒有得到多少關注。對大多數潛在應用來說,缺乏網絡效應使他們難以啟動。

但是,Dwork 和 Naor、Back(的獨立研究),都確實創造了一些東西。數字化的產品最強大的特性之一便是它們很容易就能被複制,而工作量證明本質上是第一種不依賴於中心的虛擬稀缺性概念:它將電子數據與真實世界、有限的計算資源綁定在了一起。

而稀缺性,毫無疑問,是貨幣的前提。實際上,Back 在他的密碼朋克郵件發言和白皮書中,都特別明確地將 Hashcash 放在貨幣的類別中,與當時世界上唯一一種數字現金(Chaum 的 DigiCash)相對照。

“在 digicash 獲得廣泛使用前,Hashcash 也許能提供一種臨時措施”,Back 在郵件組中說,“Hashcash 是自由的,你只需在你的電腦上消耗一些計算,就能得到它。這符合自由表達的網絡文化,經濟拮据的人也能和百萬富翁、退休政府官員等等平等對話。(而且)如果 digicash 出了問題(被接管或者要求保管用戶的身份信息),Hashcash 也能提供一種控制垃圾郵件的後備方案。”

但是,除開這個名字,Hashcash 並不能很好地擔當一種成熟的現金(Dwork 和 Naor 的提議當然也不行)。也許更重要的是,接收者 “收到” 的工作量證明,對他來說沒有任何用處。不像貨幣,你可以花在別的地方。此外,因為計算機的性能日益提高,相同的時間裡,它們可以生成越來越多的證明 —— Hashcash 會遭遇超級通脹。

撇開其它所有,工作量證明所提供的,乃是數字貨幣研究的一個全新的基礎。後來的大多數重要的數字貨幣方案,都建立在 Hashcash 之上,一般來說都是讓工作量證明得以重用(Hal Finney 的 “可重用的工作量證明(PROW)” 即是最明顯的例子)。

比特幣

當然,最終來說,工作量證明成了比特幣的基石,而 Hashcash 也是比特幣白皮書中為數不多的引用之一。

然而,比特幣對 Hashcash(或者說其變種)的利用方式迥異於此前其他人所提出的。不像 Hashcash 和其他基於 Hashcash 的方案,工作量證明自身所提供的稀缺性,在比特幣中並沒有直接被用作貨幣。實際上,Hashcash 被用來創造一種競賽:無論哪個礦工最先製造出了一個有效的工作量證明 —— 也即一個比特幣交易塊的哈希值 —— TA 就決定了哪些交易是下一批得到處理的。至少在理論上,大家都是平等競賽的:很像彩票,即使是小礦工,也有概率成為在某個位點上第一個製造出有效工作量的人。

進一步地,每當一個區塊被挖出,它就確認了一批交易,這些交易不太可能被撤銷。攻擊者必須證明自己做了跟先被挖出的那個區塊(的出塊者)至少同樣多的工作量,而這個量值會隨着後續區塊的出現而不斷累加,在正常情況下,這個難度會呈指數上升。因此,欺騙所需花費的真實世界資源,一般都會大於欺騙所能獲得的潛在獲利。比特幣交易的接收者,也因此有了信心,自己收到的錢不會憑空消失。

這種運用 Hashcash 的方式可謂一箭雙鵰:既用去中心化的方式解決了 “多重支付問題”,又提供了一種方式,讓新幣可以沒有中心化的發行者又能進入流通。

Hashcash 並沒有成為第一個電子現金系統 —— Ecash 已經佔得先機,而工作量證明自身也不能實際用作貨幣。但沒有它,可能至今也不會出現一個 去中心化 的數字現金系統。

(完)

(文內有許多超鏈接,可點擊左下 ”閱讀原文“ 從 EthFans 網站上獲取)

原文鏈接:

https://bitcoinmagazine.com/technical/genesis-files-hashcash-or-how-adam-back-designed-bitcoins-motor-block

作者: Aaron Van Wirdum

翻譯: 阿劍

本文鏈接:https://www.8btc.com/article/6644910

轉載請註明文章出處

(0)
上一篇 2021-06-04 07:32
下一篇 2021-06-04 07:51

相关推荐