本譯文首次以“s先生”的筆名發(fā)表于公眾號:補天遺石(ID:butianys)。譯無達詁鸭丛,歡迎交流指正(微信:data-lake)推捐。
譯注:溫斯頓·邱吉爾說過一句名言儡嘶,大概意思是:你回首看得越遠,你向前也會看得越遠芜飘。比特幣印證了這句話:比特幣的非凡和成功之處不在于它處于任何組件研究的前沿务豺,而在于它整合了許多不相關領域的舊創(chuàng)意。
本文回顧了比特幣和區(qū)塊鏈的學術譜系嗦明,展示了其組合創(chuàng)新的典范笼沥。文章雖然很長,但著墨之處娶牌,句句都切中技術演進中的關鍵點奔浅。縱觀全文诗良,如下圖目錄所示汹桦,讀者很容易建立比特幣技術路線的整體圖景。文章分別梳理總賬本鉴裹,貨幣舞骆,礦工的技術路線,層層遞進径荔,闡述這三個不同領域的技術積累如何匯集于比特幣這一神奇的創(chuàng)意督禽。
值得一提的是,關于分布式一致性和共識機制总处,目前主流的分布式技術狈惫,包括各種云計算解決方案,都沒有直面拜占庭故障辨泳,那么基于大規(guī)模P2P網絡結構的比特幣是如何解決這些問題呢虱岂?以及又是如何激勵節(jié)點參與共識呢?相信本文會給你精彩的答案菠红!
如果你已經在媒體上看到過比特幣第岖,并且對密碼學領域的學術研究有一定的了解,那么你可能會有如下的印象:從David Chaum開始(文獻10,12)试溯,幾十年來很多人對數字現金(digital cash)的努力研究蔑滓,最終都沒有獲得商業(yè)上的成功。因為這些工作需要一個集中的,類似銀行的服務器來控制系統(tǒng)键袱,而沒有任何一家銀行愿意為其背書燎窘。隨著比特幣的出現,一種不需要銀行的去中心化加密貨幣(cryptocurrency)方案被提出蹄咖,數字現金(digital cash)終于大獲成功褐健。比特幣的發(fā)明者,神秘的中本聰澜汤,并不是一個學術界的人蚜迅,比特幣與早期的學術方案并無相似之處。
本文認為,幾乎所有比特幣的技術組件都起源于20世紀80年代和90年代的學術文獻(見圖1)谎替。這并不是為了削弱中本聰的成就偷溺,而是指出他站在巨人的肩膀上。事實上钱贯,通過追溯比特幣思想的起源亡蓉,我們可以將中本聰洞察力的真正飛躍歸結為一個特定的,復雜的方式——一種組合創(chuàng)新(把底層組件整合在一起)的方式喷舀。這有助于解釋為什么比特幣花了這么長時間才被發(fā)明砍濒。已經熟悉比特幣工作原理的讀者可以從這個歷史回溯中獲得更深入的了解(更多介紹,參見Arvind Narayanan等人的Bitcoin and Cryptocurrency Technologies(文獻36)硫麻。比特幣的思想文化史也可以作為一個展示學術界爸邢、外部研究者和從業(yè)者之間合作關系的研究案例,并且為這些不同群體之間如何彼此合作獲益提供經驗教訓拿愧。
*譯注:比特幣可謂組合式創(chuàng)新的典范杠河。
1 總賬本(The Ledger)
如果你擁有安全的總賬本,那么將其用于數字支付系統(tǒng)的過程將會非常簡單浇辜。例如券敌,如果Alice通過PayPal給Bob 100美元,則PayPal從Alice的賬戶中扣除100美元柳洋,并將100美元存入Bob的賬戶待诅。這大體上和傳統(tǒng)銀行的業(yè)務差不多,雖然傳統(tǒng)銀行的業(yè)務之間并沒有一個共享的總賬本熊镣。
總賬本的概念是理解比特幣的起點卑雁。它記錄了系統(tǒng)內發(fā)生的所有交易募书,并且對系統(tǒng)的所有參與者開放,并被他們信賴测蹲。比特幣將系統(tǒng)的支付記錄轉換為貨幣莹捡。在銀行業(yè)務中,賬戶余額代表了可以從銀行取出來的現金扣甲,但一個比特幣代表什么篮赢?就目前而言,我們只能說比特幣代表包含固定價值的交易琉挖。
在互聯網這種參與者之間可能互不信任的環(huán)境中荷逞,怎樣才能如何建立一個總賬本?讓我們從簡單的部分開始:數據結構的選擇粹排。這個數據結構必須滿足一定的屬性要求——總賬本應該是不可變的。更準確地說涩澡,只能添加新的交易顽耳,不能修改刪除,也不能對已有交易重新排序妙同。除此之外射富,還需要獲得總賬本狀態(tài)的密碼摘要。摘要是一個簡短的字符串粥帚,可以避免存儲整個總賬本胰耗。如果總賬本被篡改,所產生的摘要必然會發(fā)生變化芒涡,從而可以檢測到篡改柴灯。需要這些屬性的原因是:與存儲在單個機器上的常規(guī)數據結構不同,總賬本是由互不信任的一組參與者共同維護的全局數據結構费尽。這與去中心化數字總賬本(decentralizing digital ledgers, 文獻7,13,21)的方法是不同的赠群,在去中心化數字總賬本中,參與者維護本地總賬本旱幼,并且由用戶查詢這些總賬本來解決沖突查描。
1.1 鏈式時間戳(Linked timestamping)
比特幣的總賬本數據結構有修改的借用了從1990年到1997年間由Stuart Haber和Scott Stornetta撰寫的一系列論文(他們1991年的論文還有另一個合著作者Dave Bayer,文獻5,22,23)。我們能夠知道這些歷史淵源是因為中本聰在他的比特幣白皮書(文獻34)中如此提及的柏卤。Stuart Haber和Scott Stornetta的主要工作是處理時間戳的文檔化——他們的目的是建立一個“數字公證”的服務冬三。對于專利,商業(yè)合同和其他文件缘缚,人們希望確定該文件是在某個時間點或者不遲于某個時間點創(chuàng)建的勾笆。Stuart Haber和Scott Stornetta的文檔概念非常泛化,可以是任何類型的數據桥滨。他們確實提到金融交易是潛在的應用匠襟,但金融交易不是他們關注的焦點钝侠。
在Stuart Haber和ScottStornetta方案的簡化版本中,文檔被不斷創(chuàng)建和廣播酸舍。每個文檔的創(chuàng)建者聲明一個創(chuàng)建時間(并簽名文檔)帅韧、文檔的時間戳和前一個廣播文檔。前一個廣播文檔友簽署了自己的前一個啃勉,所以文檔形成了一個很長的倒退鏈忽舟。外部用戶不能改變時間戳的信息,因為它是由創(chuàng)建者簽名的淮阐;創(chuàng)建者也不能在不改變整個信息鏈的情況下改變時間戳的信息叮阅。因此,如果通過可信源(例如泣特,另一個用戶或專門的時間戳服務)獲得鏈中的某個項目浩姥,那么該時刻之前的整個鏈是鎖定的,不可變状您,并且在時間上有序勒叠。進一步,如果你認為系統(tǒng)因為創(chuàng)建時間錯誤拒絕你的文檔膏孟,那么你必須地保證文檔至少與其聲稱的一樣久遠眯分。總之柒桑,比特幣只是借用Stuart Haber和Scott Stornetta設計的數據結構弊决,然后重新設計了其安全屬性(通過增加工作量證明,本文稍后介紹)魁淳。
*譯注:進一步飘诗,如果你認為系統(tǒng)因為創(chuàng)建時間錯誤拒絕你的文檔,那么你必須地保證文檔至少與其聲稱的一樣久遠界逛。無原文:Further, if you assume that the system rejects documents with incorrect creation times, you can be reasonably assured that documents are at least as old as they claim to be.
在Stuart Haber和Scott Stornetta的后續(xù)文獻中疚察,他們介紹了使這個數據結構更加高效的其他方案(其中一些在第一篇論文中有暗示)。首先仇奶,可以使用哈希而不是簽名來創(chuàng)建文檔之間的鏈接貌嫡;因為哈希更簡單,計算速度更快该溯。這樣的鏈接被稱為哈希指針岛抄。其次,不是單獨對文檔進行線程化處理(如果幾乎同時創(chuàng)建多個文檔狈茉,效率可能會很低)夫椭,它們可以分為批處理組或區(qū)塊,每個區(qū)塊中的文檔具有基本相同的時間戳氯庆。第三蹭秋,在每個區(qū)塊內扰付,文檔可以用一個哈希指針的二叉樹連接在一起,稱為Merkle樹仁讨,而不是一個線性鏈羽莺。順便提一下,在Stuart Haber和Scott Stornetta的第一篇論文發(fā)表的6年之后洞豁,即1991年盐固,Josh Benaloh和Michael de Mare獨立地提出了上述三個方案。
1.2 梅克爾樹(Merkle trees)
比特幣本質上使用Josh Benaloh和Michael de Mare在1991年和1997年提出的數據結構(中本聰大概不了解Josh Benaloh和Michael de Mare的工作)丈挟,圖2以簡化的形式表示刁卜。當然,在比特幣中曙咽,交易取代了文檔蛔趴。在Merkle樹的每一個區(qū)塊中,葉節(jié)點代表交易例朱,每個內部節(jié)點由兩個指針組成孝情。這個數據結構有兩個重要的屬性。首先茉继,最新區(qū)塊的哈希作為摘要。對任何交易(葉節(jié)點)的更改都需要將更改一直傳播到區(qū)塊根蚀乔,以及所有后續(xù)區(qū)塊的根烁竭。因此,如果你知道最新的哈希值吉挣,你可以從不可信源下載余下的總賬本派撕,并驗證是否改變。類似的觀點建立了數據結構的第二個重要屬性 ——也就是說睬魂,某人可以簡單有效地向你證明某個特定的交易是否包含在總賬本中终吼。這個用戶只須向你發(fā)送該交易區(qū)塊中的少量節(jié)點(這是Merkle樹的特點),以及每個后續(xù)塊的少量信息氯哮。高效地證明交易的包含能力對于性能和可伸縮性是非常需要的际跪。
順便說一下幔戏,Merkle樹是由對稱密碼學的先驅Ralph Merkle命名。Ralph Merkle在1980年的論文(文獻33)中提出了這個想法税课。他的目標應用是生產數字簽名證書的公共目錄摘要闲延。例如痊剖,當一個網站向你提供一個證書時,它也可以提供證書顯示在全局目錄中的簡短證明垒玲。只要你知道證書目錄中Merkle樹的根哈希陆馁,就可以高效地驗證證明。這個想法在密碼標準中是古老的侍匙,但它的力量只有在最近才被認可氮惯。它是最近實施的證書透明系統(tǒng)(文獻30)的核心。2015年的一篇論文提出了CONIKS想暗,將Merkle樹應用于端到端加密電子郵件的公鑰目錄(文獻32)妇汗。對全局狀態(tài)的部分進行高效的驗證是總賬本在新的加密貨幣(cryptocurrency) “以太坊(Ethereum)”中提供的關鍵功能之一。
比特幣可能是Josh Benaloh和Michael de Mare數據結構在真實世界中最著名的應用實例说莫,但它并不是第一個杨箭。至少有兩家公司 ——從90年代中期開始的Surety,從2007年開始的Guardtime ——都用到了文檔時間戳服務储狭。這些服務都有一個有趣的交集(An interesting twist)是Bayer, Haber和Stornetta(文獻5)提到的一個想法互婿,這個想法是在報紙上以廣告的形式定期刊登Merkle根。圖3顯示了由Guardtime發(fā)布的Merkle根辽狈。
1.3 拜占庭容錯(Byzantine fault tolerance)
當然慈参,沒有中心權威的互聯網貨幣要求更為嚴格。分布式賬本將不可避免地存在分叉刮萌,這意味著一些節(jié)點會認為A區(qū)塊是最新的塊驮配,而其他節(jié)點會認為B區(qū)塊是最新的塊。這可能是因為攻擊者試圖破壞總賬本的操作着茸;也可能僅僅是因為網絡延遲壮锻,不同的節(jié)點不知道對方的區(qū)塊,偶爾會幾乎同時產生區(qū)塊涮阔。僅僅依靠鏈式時間戳解決分叉是不夠的猜绣,這由Mike在1998年的文章中證明(文獻26)。
一個不同的研究領域——容錯分布式計算——已經研究了這個問題敬特,其中包括狀態(tài)復制(state replication)在內的不同名稱掰邢。解決這個問題的方法是使一組節(jié)點以相同的順序應用狀態(tài)轉換——通常,精確的順序無關緊要伟阔,只要所有的節(jié)點都是一致的尸变。對于數字貨幣(digital currency),要復制的狀態(tài)是一組余額减俏,交易即是狀態(tài)轉換召烂。早期的解決方案,包括由圖靈獎得主Leslie Lamport于1989年(文獻28,29)提出的Paxos——當通信信道不可靠時娃承,少數節(jié)點可能會出現某些“realistic”的故障奏夫,例如永遠離線或重新啟動怕篷,收到最初離線時發(fā)送的過時消息等——會考慮狀態(tài)復制。隨后發(fā)表的大量文獻酗昼,主要是應對更為復雜(敵對/不利)的環(huán)境廊谓,以及針對效率的權衡(tradeoff)。
一系列相關工作研究了網絡大多可靠的情況(消息以有限延遲傳遞)麻削,但是“故障”的定義被擴展為處理與協議的任何偏離(any? deviation)蒸痹。這種拜占庭式故障包括自然發(fā)生的故障以及惡意制造的行為。早在1982年(文獻27)呛哟,Lamport叠荠,Robert Shostak和Marshall Pease發(fā)表了一篇論文:《拜占庭將軍問題》。之后的1999年扫责,Miguel Castro和Barbara Liskov發(fā)表了一篇里程碑式的論文引入PBFT(practical Byzantine fault tolerance)同時容納了拜占庭故障和不可靠的網絡(文獻8)榛鼎。與鏈式時間戳相比,容錯有關的文獻數量是很多的鳖孤,包括Paxos者娱,PBFT和其他重要協議的數百種變體和優(yōu)化。
中本聰在最初的白皮書中沒有引用BFT的文獻或者使用其語言苏揣。他使用了一些概念黄鳍,將協議作為一種共識機制,并以攻擊者的形式平匈,以及節(jié)點加入和離開網絡的方式來考慮故障問題框沟。這與他明確聲明參考了鏈式時間戳的文獻(包括工作量證明,下文討論)形成鮮明對比吐葱。當被問及關于比特幣與拜占庭將軍問題(一個需要BFT解決的思想實驗)的郵件列表討論時街望,中本聰聲稱工作量證明鏈解決了這個問題(文獻35)校翔。
在接下來的幾年中弟跑,其他學者從分布式系統(tǒng)的角度研究了中本聰的共識機制——這仍然是一個正在進行的工作。有人表示防症,比特幣的屬性是相當弱的(文獻43)孟辑;而另外一些人則認為,對于比特幣的一致性屬性來說(文獻40)蔫敲,BFT的觀點并不公平饲嗽。另一種方法是定義已經充分研究的性質變體,并證明比特幣滿足它們(文獻19)奈嘿。最近貌虾,這些定義大大加強了,以提供一個更為標準的一致性定義裙犹,且該定義為消息傳遞保留更多現實性假設(文獻37)尽狠。然而衔憨,所有這些工作都假設部分參與節(jié)點的行為是“誠實”的(例如,協議兼容)袄膏,而中本聰則認為践图,沒有必要盲目地假設節(jié)點行為是誠實的,因為行為是被激勵的沉馆。對中本聰的激勵共識機制的全面分析并不適合過去的容錯系統(tǒng)模型码党。
2 工作量證明(Proof of Work)
幾乎所有容錯系統(tǒng)都假定系統(tǒng)中的大多數或絕大多數(如超過一半或三分之二)節(jié)點都是誠實和可靠的。在一個開放的對等網絡中斥黑,沒有節(jié)點的注冊些侍,節(jié)點可以自由地加入和離開授瘦。因此,攻擊者可以創(chuàng)建足夠多的Sybils或sockpuppet節(jié)點來打破系統(tǒng)的一致性保證。Sybil攻擊是由John Douceur在2002年正式形式化朴上,并提出借助于密碼學基礎設施——工作量證明——來化解它。
2.1 起源(The origins)
為了理解工作量證明色查,我們來看看這個概念的起源剪勿。工作量證明是由Cynthia Dwork和Moni Naor于1992年首次提出和創(chuàng)建的。他們的目標是阻止垃圾郵件耻姥。請注意销钝,垃圾郵件,Sybil攻擊和拒絕服務都是大致類似的問題:與常規(guī)用戶相比琐簇,攻擊者通過網絡增大其破壞力蒸健。工作量證明適用于三方防御。在Cynthia Dwork和Moni Naor的設計中婉商,電子郵件收件人只會處理那些附帶證明——發(fā)件人執(zhí)行了適量計算工作——的電子郵件似忧,即“工作量證明”。計算工作量證明在普通計算機上可能需要幾秒鐘的時間丈秩。因此盯捌,對普通用戶來說不會造成任何困難,但是對于垃圾郵件發(fā)送者蘑秽,在使用等效硬件的條件下饺著,發(fā)送一百萬封電子郵件則需要幾周的時間。
請注意肠牲,工作量證明(也稱為“難題求解”)必須特定于電子郵件以及收件人幼衰。否則,垃圾郵件發(fā)送者將能夠向同一個收件人發(fā)送多個郵件(或者向多個收件人發(fā)送相同的郵件)缀雳,而成本和一對一發(fā)送一樣渡嚣。第二個重要的特點是它應該給收件人僅造成最小的計算負擔;“難題求解”應該是易于驗證的,無論他們計算多么困難识椰。此外扬绪,Cynthia Dwork和Moni Naor認為帶有后門的功能——這是中心權威機構所知道的一個秘密——可以讓權威機構在不做工作量證明的情況下解決問題。一個可能的應用程序后門是為權威機構開放一個不產生成本發(fā)送郵件的郵件列表裤唠。Cynthia Dwork和Moni Naor的提案包含三個滿足其性質的候選難題挤牛,并啟動了整個研究領域,我們將再次回到這個主題种蘸。
2.2 哈夏垢埃現金(Hashcash)
一個非常類似的名為hashcash的想法是在1997年由當時是cypherpunk社區(qū)的博士后研究員Adam Back獨立發(fā)明的。Cypherpunk社員是反政府和反中心機構力量的活動家航瞭,并致力于通過密碼學推動社會和政治變革诫硕。Adam Back是注重實踐的人:他首先發(fā)布的是hashcash軟件,五年后的2002年才發(fā)布Internet草案(標準化文件)和論文(文獻4)刊侯。
Hashcash比Cynthia Dwork和Moni Naor的想法簡單得多:它沒有后門章办,也不需要中心權威,它只使用哈希函數而不是數字簽名滨彻。Hashcash基于一個簡單的原理:哈希函數在某些實際用途中表現為隨機函數藕届,這意味著找到哈希到特定輸出的輸入的唯一方法是嘗試各種輸入,直到產生期望的輸出為止亭饵。而且休偶,找到哈希到任意一組輸出的輸入的唯一方法是再次逐個嘗試對不同的輸入進行哈希。所以辜羊,如果讓你嘗試找到一個輸出哈希值以10個零開始的輸入(二進制)踏兜,你將不得不嘗試大量的輸入,你會發(fā)現每個輸出從10個零開始的機會都是(1/2)^10八秃,這意味著你將不得不嘗試(2)^10個輸入的順序碱妆,或大約1000個哈希計算。
顧名思義昔驱,在hashcash中疹尾,Adam Back把工作量證明看作一種貨幣形式。在他的網站上舍悯,他把這種貨幣定位為David Chaum的DigiCash實現選擇之一——一個由銀行向用戶發(fā)放無法追蹤的數字現金(digital cash)的系統(tǒng)航棱。他甚至在技術設計上做了一些權衡設計睡雇,使其顯得更像一種貨幣萌衬。后來,Adam Back評論認為比特幣就是hashcash的直接擴展它抱。但是秕豫,hashcash并不是現金,因為它沒有防止雙重支出(雙花)的保護。Hashcash的令牌不能在對等同伴之間交換混移。
同時祠墅,在學術領域中,研究人員發(fā)現歌径,除了垃圾郵件之外毁嗦,工作量證明還有很多應用場景,例如防止拒絕服務攻擊(文獻25)回铛,確保網絡分析的真實性(文獻17)狗准,密碼在線猜測的速率限制(文獻38)等。順便說一句茵肃,工作量證明這個詞是由Markus Jakobsson和Ari Juels在1999年撰寫的一篇論文中首次提出來的腔长,這篇論文也是到那時為止對這一研究的很好綜述(文獻24)。值得注意的是验残,這些研究人員似乎并不知道到hashcash捞附,各自獨立地朝著基于哈希的工作量證明的方向匯集,這在Eran Gabber等人的論文以及Juels(文獻18)和Brainard(文獻25)的論文中都有提及(本文中使用的許多術語是在有關論文發(fā)表后很長時間才成為標準術語的)您没。
側邊欄:Sybil-對抗網絡(Sybil-resistant networks)
John Douceur在他關于Sybil攻擊的論文中提出鸟召,所有參與BFT協議的節(jié)點都需要解決hashcash難題。如果一個節(jié)點偽裝成N個身份氨鹏,將無法及時解決N個難題药版,其偽造的身份將被清除。然而喻犁,惡意節(jié)點仍然可以獲得比只聲稱單一身份的誠實節(jié)點有更多的優(yōu)勢槽片。2005年發(fā)布的后續(xù)文章(文獻1)中提出,誠實的節(jié)點應該反過來模仿惡意節(jié)點的行為肢础,并聲稱其計算能力能夠承擔的盡可能多的虛擬身份还栓。利用這些虛擬身份執(zhí)行BFT協議,原來的假設“最多只有部分f節(jié)點故障”可以用“由故障節(jié)點控制的總計算能力的份額至多為f ”來代替传轰。因此剩盒,不再需要驗證身份,并且開放的對等網絡可以運行BFT協議慨蛙,比特幣恰好使用了這個想法辽聊,但中本聰提出了進一步的問題:用什么來激勵節(jié)點執(zhí)行昂貴的工作量證明計算呢?答案需要進一步的飛躍:數字貨幣(digital currency)期贫。
2.3 工作量證明和數字現金:雙環(huán)困境(Proof of work and digital cash: A catch-22)
你可能知道跟匆,作為反垃圾郵件措施,工作量證明沒有成功應用于其發(fā)源的應用通砍。一個可能的原因是不同設備求解難題的速度有巨大差異玛臂。這意味著垃圾郵件發(fā)送者可以用小額的投資來定制硬件烤蜕,就可以將濫發(fā)垃圾郵件的速率提高幾個數量級。在經濟學中迹冤,對生產成本不對稱的自然反應是進行貿易——即讽营,工作量證明的交易市場。但是泡徙,這里就是一個雙環(huán)困境(catch-22)橱鹏,因為這將需要一個可以工作的數字貨幣(digital currency)。事實上堪藐,正是因為缺乏這樣的貨幣蚀瘸,導致了工作量證明使用的最大動機不足。這個問題的一個粗暴的解決辦法是宣布“難題求解”是現金庶橱,正如hashcash試圖做的那樣贮勃。
*譯注:雙環(huán)困境,一般指互相抵觸之規(guī)律或條件所造成的無法脫身的困窘苏章;或者是不合邏輯的或矛盾的問題寂嘉。例如這就是一個相互矛盾的困窘:沒有人想要支持你除非你已經成功了,但是如果沒有人支持枫绅,你怎么可能成功呢泉孩?
工作量就是貨幣,而工作量又需要貨幣激勵并淋,這就是雙環(huán)困境寓搬。
如果強制規(guī)定工作量證明就是貨幣,中本聰的共識和激勵邏輯應該是這樣的:工作量證明就是貨幣县耽,這激勵礦工努力挖礦提供工作量證明句喷,然后獲得貨幣;同時利用經濟學原理設定規(guī)則兔毙,讓惡意節(jié)點的投入大于受益唾琼,惡意節(jié)點沒有動力破壞共識,就可以解決BFT中因為將軍叛變而不能達成共識的難題澎剥。
在比特幣之前的兩篇文章中發(fā)現了更為清晰的方案來將“難題求解”作為現金來處理锡溯,文章分別描述了b-money(文獻13)和bit gold(文獻42)。這些方案提供時間戳服務哑姚,用來簽署錢的創(chuàng)建(通過工作量證明)祭饭,并且一旦創(chuàng)建了錢,就可以簽署轉賬叙量。但是倡蝙,如果服務器或節(jié)點之間出現總賬本不一致的情況,文章則沒有給出明確的解決辦法宛乃。依靠多數原則來決定似乎是兩位作者的文章的隱含之意悠咱,但是由于Sybil問題,這些機制并不是很安全征炼,除非有一個gatekeeper控制網絡的引入析既,或者Sybil對抗本身是通過工作量證明來實現的。
3 組合創(chuàng)新(Putting it all together)
通過了解所有這些貢獻了比特幣設計細節(jié)的前輩谆奥,你會體會到中本聰真正天才般的創(chuàng)新眼坏。在比特幣中,“難題求解”不能自我構建成為現金酸些,相反宰译,他們只是用來保護總賬本。而工量作證明的解決是由專門的實體稱為礦工來完成的(雖然中本聰沒有估計到專業(yè)挖礦將會成為什么樣子)魄懂。
礦工們需要不斷地相互競爭沿侈,尋找下一個“難題求解”。每個礦工都要求解這個難題的一個稍微不同的變體市栗,因此成功的機會與礦工控制的全球采礦能力的一部分成正比缀拭。求解難題的礦工貢獻了基于鏈式時間戳的總賬本的下一個批次,或者區(qū)塊(即下一個交易)填帽。通過維護和交換總賬本蛛淋,貢獻一個區(qū)塊的礦工將會獲得一個新挖到貨幣的一份獎勵。很有可能的是篡腌,如果一名礦工貢獻了一個無效的區(qū)塊或交易褐荷,將會被大多數其他貢獻下一區(qū)塊的礦工拒絕,從而使無效區(qū)塊的獎勵失效嘹悼。這樣叛甫,由于金錢上的激勵,確保礦工們彼此都遵循同樣的協議杨伙。
比特幣巧妙地避免了困擾“工作量即現金(proof-of-work-as-cash)”機制的雙重支出(double-spending,雙花)問題合溺,因為它避開了“難題求解”本身的價值。事實上缀台,比特幣實現了“難題求解”與經濟價值的兩次解耦:生產一個區(qū)塊所需的工作量是一個浮動參數(與全球采礦能力成正比)棠赛,而且更進一步每個區(qū)塊發(fā)放的比特幣數也不是固定的。區(qū)塊獎勵(也就是新比特幣如何挖出)每四年設定一半(在2017年膛腐,獎勵是12.5比特幣/塊睛约,從最初50比特幣/塊減半而來)。比特幣包含了一個額外獎勵計劃——即交易發(fā)起者向具有包含該交易的區(qū)塊的礦工支付交易費用哲身,并且期望由市場決定交易費用和礦工的報酬辩涝。
那么,中本聰的天才并不是比特幣的任何單個組成部分勘天,而是創(chuàng)造了一種復雜方式——把各種技術融合在一起為整個系統(tǒng)注入生命活力怔揩。客觀的說捉邢,時間戳和拜占庭協議的研究人員沒有觸及節(jié)點激勵問題,直到2005年商膊,也沒有使用工作量證明來消除節(jié)點身份問題伏伐。反過來說,hashcash晕拆,b-money和bit gold的作者并沒有吸收共識/一致性算法的思想來解決雙重支出(雙花)問題藐翎。在比特幣中,一個安全的總賬本才能防止雙重支出(雙花)問題实幕,從而確保貨幣有價值吝镣。有價值的貨幣才能獎勵礦工,然后保證采礦力量的強度才能保證總賬本的安全昆庇。如果沒有足夠采礦力量末贾,一個對手可能會占據全球50%以上的采礦能力,從而能夠比網絡的其他部分更快地生成數據塊整吆,然后雙重支付交易未舟,并有效地重寫歷史記錄,使得整個系統(tǒng)赤字掂为。因此裕膀,比特幣是自舉的,在總賬本勇哗,貨幣昼扛,礦工這三個組件之間有一個閉環(huán)的依賴關系。中本聰面臨的挑戰(zhàn)不僅僅在于設計欲诺,而是能夠說服最初的用戶和礦工社區(qū)一起抄谐,面向未知的時代,縱身一躍:那個時候比薩的價格超過了10000比特幣扰法,網絡的采礦能力還不到今天的萬億分之一蛹含。
側邊欄:智能合約(Smart contracts)
一個智能合約就是把數據放在一個安全的總賬本中,并將智能合約擴展到計算塞颁。換句話說浦箱,它是一個公開指定程序正確執(zhí)行的共識協議。用戶可以調用智能合約程序中的功能祠锣,并服從程序指定的任何限制酷窥,并且功能代碼由礦工串聯執(zhí)行。用戶可以信任輸出而不必重做計算伴网,并可以編寫自己的程序來處理其他程序的輸出蓬推。通過與加密貨幣(cryptocurrency)平臺相結合,智能合約尤其強大澡腾,因為上述程序可以處理資金——擁有沸伏,轉讓糕珊,銷毀,在某些情況下甚至可以打印毅糟。
比特幣實現一種限制性編程語言作為智能合約红选。一個“標準”交易(即將貨幣從一個地址轉賬另一個地址的交易)就是用這種語言實現的簡短腳本。以太坊(Ethereum)提供更寬容和強大的語言留特。
智能合約的想法是由Nick Szabo在1994年提出的(文獻41)纠脾,因為可以類比于法律合同(智能合約比法律合同多了自動執(zhí)行的功能)玛瘸,所以命名為智能合約蜕青。Nick Szabo早就預見性(這個觀點已經被Karen Levy (文獻31)和Ed Felten 所批評(文獻16))的提出了智能合約作為數字現金協議的擴展,并且認識到拜占庭協議和數字簽名(等等)可以作為構建模塊糊渊。加密貨幣的成功使智能合約成為現實右核,對這個話題的研究也開始興起。例如渺绒,編程語言研究人員已經調整了他們的方法和工具贺喝,以自動發(fā)現智能合同中的錯誤并寫出可校驗正確的智能合約。
3.1 公鑰即身份(Public keys as identities)
本文基于這樣一個理解:一個安全的總賬本使創(chuàng)建數字貨幣(digital currency)更加容易宗兼。讓我們再回顧這個斷言躏鱼。當Alice希望支付Bob時,她將交易廣播給所有的比特幣節(jié)點殷绍。一個交易只不過是一個字符串:一個聲明“Alice希望支付給Bob一些錢”并由Alice簽名染苛。最終,這個聲明被礦工記入總賬本主到,交易即成為現實茶行。請注意,這個過程中并不要求Bob以任何方式參與登钥。但是讓我們把注意力放在這次交易的缺席者:顯然缺席的是Alice和Bob的身份畔师;相反,交易只包含他們各自的公鑰牧牢。這就是比特幣的一個重要的概念:公鑰是系統(tǒng)中唯一的身份看锉。交易向公鑰傳入或者傳出價值,這個公約就稱為地址塔鳍。
*譯者注:從這個地址概念的引入度陆,對比傳統(tǒng)的分布式系統(tǒng),中本聰的創(chuàng)新很巧妙献幔。
為了能夠“說出”一個身份懂傀,你必須知道相應的密鑰。你可以隨時創(chuàng)建一個新的身份——方法是生成一個新的密鑰對——而不需要中心機構或注冊機構蜡感。你不需要申請用戶名或通知其他人你已選擇了特定的名稱——這是去中心化身份管理的概念——比特幣沒有指定Alice如何告訴Bob她的化名(Pseudonyms)是什么蹬蚁,這是系統(tǒng)外部的恃泪。
與當今大多數其他支付系統(tǒng)截然不同,這些想法相當“古老”犀斋,可以追溯到數字現金(digital cash)之父David Chaum贝乎。實際上,David Chaum也對匿名網絡做了開創(chuàng)性的貢獻叽粹,正是在這個背景下览效,他發(fā)明了這個“數字化名”( Digital Pseudonyms)這個創(chuàng)意。在他1981年的論文“Untraceable Electronic Mail, Return Addresses, and Digital Pseudonyms(文獻9)” 他說:“數字化名”是一個公鑰虫几,用來驗證由相應私鑰的匿名持有者是否取得簽名锤灿。
現在,只有通過公鑰才知道收件人是一個明顯的問題:無法將郵件路由到正確的計算機辆脸。這導致了David Chaum方案的效率極低:匿名交易但校,不能消除。與集中支付系統(tǒng)相比啡氢,比特幣同樣效率極低:包含每個交易的總賬由系統(tǒng)中的每個節(jié)點維護状囱。無論如何,比特幣選擇了安全而同時選擇了低效倘是,從而實現了“免費”的匿名性(即公鑰作為身份)亭枷。David Chaum在1985年的論文(文獻11),把這些想法推進了一步搀崭,他提出了一種基于普遍“化名”隱私保護電子商務愿景叨粘,以及數字現金(digital cash)背后的關鍵思想——“盲簽名(blind signatures)”。
“公鑰即身份”的思想也存在于前面討論過的比特幣的先驅文獻中:b-money 和 bit gold门坷。但是宣鄙,大部分工作都建立在David Chaum的基礎上,而David Chaum自己后來的工作(包括電子現金)都偏離了這個想法默蚌。Cypherpunk社區(qū)對隱私保護的通訊和商務有濃厚的興趣冻晤,他們擁抱了他們稱之為nyms的“化名”。但對他們來說绸吸,nyms不僅僅是密碼身份(即公鑰)鼻弧,而是通常與公鑰相關的電子郵件地址。同樣锦茁,伊恩·戈德堡(Ian Goldberg)的論文——后續(xù)匿名通訊工作的基礎——贊成David Chaum的觀點攘轩,但是認為“化名”nyms應該是人們容易記住的用證書綁定的綽號。因此码俩,比特幣被證明是David Chaum思想最成功的例子度帮。
4 區(qū)塊鏈(The Blockchain)
到目前為止,本文沒有提到區(qū)塊鏈。如果你相信炒作笨篷,區(qū)塊鏈是比特幣的主要發(fā)明瞳秽。可能會讓你大吃一驚的是率翅,中本聰壓根沒有提到這個詞练俐。實際上,區(qū)塊鏈這個技術術語沒有標準的技術定義冕臭,但是被各方用來指稱與比特幣和總賬本有不同程度相似的系統(tǒng)腺晾。
討論受益于區(qū)塊鏈的示例應用程序將有助于澄清該術語的不同用途。首先辜贵,考慮一個銀行財團之間交易的數據庫后端悯蝉,交易在每天結束時呈網狀結構,賬戶由中央銀行結算念颈。這樣一個體系有少數的明確的各方泉粉,所以中本聰的共識將是矯枉過正的连霉。也不需要區(qū)塊鏈上的貨幣榴芳,因為賬戶是以傳統(tǒng)貨幣計價的。另一方面跺撼,鏈式時間戳顯然是有用的窟感,至少可以確保在網絡延遲的情況下實現一致的全局事務排序。狀態(tài)復制也是有用的:一家銀行會知道歉井,其本地數據副本與中央銀行用來結算賬戶的數據是一樣的柿祈。這使銀行擺脫了目前必須執(zhí)行的代價高昂的協調過程。
其次哩至,考慮一個資產管理應用程序,例如追蹤金融證券,房地產或任何其他資產所有權的文檔登記冊奥务。使用區(qū)塊鏈可以提高互操作性欺缘,降低進入門檻。我們希望有一個安全的全球文檔登記冊箭阶,最好能讓公眾參與虚茶。這本質上是20世紀90年代和新千年時代的時間戳服務所提供的。公共區(qū)塊鏈提供了一個特別有效的方法來實現這一點(數據本身可能被存儲在鏈外仇参,只有元數據存儲在鏈上)嘹叫。其他應用程序也受益于時間戳或“公告板”抽象,最顯著的是電子投票诈乒。
讓我們繼續(xù)資產管理的例子罩扇。假設你想通過區(qū)塊鏈執(zhí)行資產交易,而不是僅僅保存交易記錄怕磨。如果資產本身在區(qū)塊鏈以數字形式發(fā)行喂饥,并且區(qū)塊鏈支持智能合約寞缝,則可以進行交易。在這種情況下仰泻,智能合約解決了確保只有在資產轉移時才進行支付的“公平交換”問題荆陆。更一般地說,智能合約可以對復雜的業(yè)務邏輯進行編碼集侯,只要所有必要的輸入數據(資產被啼,價格等)都在區(qū)塊鏈上表示出來。
這種區(qū)塊鏈屬性與應用程序的映射使我們不僅能夠欣賞其潛力棠枉,而且還能夠使我們注入極為需要的懷疑態(tài)度浓体。首先,很多提議的區(qū)塊鏈應用辈讶,特別是在銀行業(yè)命浴,并沒有使用中本聰的共識機制。相反贱除,他們使用總賬本數據結構和拜占庭協議(這些技術生闲,如前文所述,可以追溯到上個世紀90年代)月幌。這就暗示了區(qū)塊鏈是一種新的革命性技術碍讯。相反,圍繞區(qū)塊鏈的嗡嗡聲(buzz)已經幫助銀行發(fā)起集體行動來部署共享總賬本技術扯躺,正如“石頭湯(stone soup)”的隱喻捉兴。比特幣也是去中心化總賬本工作的一個非常明顯的概念證明,并且比特幣核心項目提供了一個便利的代碼庫录语,可以根據需要進行調整倍啥。
*譯注: 《石頭湯》是一本根據法國民間故事改寫的作品,但瓊·穆特把故事的場景設定在古代中國澎埠。三個和尚來到一個飽經苦難的村莊虽缕,村民們長年在艱難歲月中煎熬,心腸變得堅硬失暂,不愿接納任何人彼宠。可是弟塞,和尚們用煮石頭湯的方法凭峡,讓村民們不知不覺地付出了很多,明白了分享與幸福在真諦决记。
瓊·穆特摧冀,美國圖畫書作家和畫家曾在日本學習,醉心于日本和中國傳統(tǒng)文化。創(chuàng)作了很多具有東方哲學智慧的圖畫書索昂,比如《禪的故事》建车。
其次,有一個誤導性的說法:區(qū)塊鏈通常比傳統(tǒng)的文檔登記更安全椒惨。要明白為什么缤至,必須把系統(tǒng)或平臺的整體穩(wěn)定性與終端安全(即用戶和設備的安全性)分開。誠然康谆,區(qū)塊鏈的系統(tǒng)性風險可能低于許多中心機構领斥,但區(qū)塊鏈的端點安全風險遠遠高于傳統(tǒng)機構相應的風險。區(qū)塊鏈交易幾乎是即時的沃暗,不可逆轉的月洛,而且在公共區(qū)塊鏈中,設計為匿名交易孽锥。在基于區(qū)塊鏈的股票登記中嚼黔,如果用戶(經紀人或代理人)失去對其私人密鑰的控制權——只要手機丟失或在計算機上安裝了惡意軟件——則用戶將喪失其資產。比特幣黑客惜辑、盜竊和詐騙的非凡歷史并不會給人們帶來多大的信心唬涧,據估計,至少有6%的比特幣在流通中被盜過一次(文獻39)韵丑。
側邊欄:許可區(qū)塊鏈(Permissioned blockchains)
雖然這篇文章強調私人和許可區(qū)塊鏈并沒有使用比特幣的大部分創(chuàng)新爵卒,但這并不意味著這個領域發(fā)生的有趣工作就很少虚缎。許可區(qū)塊鏈限制誰可以加入網絡撵彻,寫交易或挖礦(區(qū)塊)。特別是实牡,如果礦工被限制在一個值得信賴的參與者名單陌僵,則可以放棄工作量證明,以利于更傳統(tǒng)的BFT方法创坞。因此碗短,大部分的研究都是BFT算法的重生,并且可以提出如下問題:我們可以使用哈希樹來簡化共識算法嗎题涨?如果網絡只能以某種方式出現故障呢偎谁?
此外,圍繞身份和公共密鑰基礎設施纲堵,訪問控制以及存儲在區(qū)塊鏈上的數據的機密性等話題巡雨,還有一些重要的考慮因素。這些問題很大程度上不在公共區(qū)塊鏈中出現席函,也沒有被傳統(tǒng)的BFT文獻所研究铐望。
最后,還有一項工程性工作是提高區(qū)塊鏈的吞吐量,并將其應用于各種業(yè)務:比如供應鏈管理和金融技術正蛙。
5 經驗總結(Concluding Lessons)
這里描述的歷史為從業(yè)人員和專業(yè)學者提供了豐富(和互補)的經驗教訓督弓。從業(yè)者應該對革命性技術的主張持懷疑態(tài)度。如前文所示乒验,比特幣中那些引起企業(yè)興奮的大多數想法愚隧,例如分布式賬本和拜占庭協議,可以追溯到20年以上锻全。認識到你的問題可能不需要任何突破性創(chuàng)新——在研究論文中可以找到那些長期被遺忘的解決方案奸攻。
學術界似乎有相反的問題,至少在這種情形下:抵制激進的虱痕,外來的想法睹耐。比特幣白皮書的很多想法盡管都可以回溯其譜系,但比大多數學術研究更新穎部翘。而且硝训,中本聰不關心學術同行評議,也沒有完全把它與學術歷史聯系起來新思。因此在數年里窖梁,學術界幾乎完全忽視比特幣。許多學術團體非正式地認為夹囚,盡管比特幣事實上在實踐中運行的很好纵刘,但比特幣不可能基于過去系統(tǒng)的理論模型和經驗的來運行。
我們一再看到荸哟,研究文獻中的創(chuàng)意可能會逐漸被遺忘或被忽略假哎,特別是如果這些想法是超越它們的時代,甚至在流行的研究領域之外鞍历。從業(yè)者和專業(yè)學者都應該回顧舊的創(chuàng)意舵抹,收集當前系統(tǒng)的見解。比特幣的非凡和成功之處不在于它處于任何組件研究的前沿劣砍,而在于它整合了許多不相關領域的舊創(chuàng)意惧蛹。要做到這一點并不容易,因為它需要彌合不同的術語刑枝,假設等香嗓,但這是創(chuàng)新的寶貴藍圖。
從業(yè)者應該能夠識別過度炒作的技術并因此受益装畅。識別技術炒作有一些指標:難以確定其技術創(chuàng)新靠娱;由于企業(yè)急于把自己的產品附加到流行趨勢上,所以難以確定所謂技術術語的含義洁灵;難以確定正在解決的問題饱岸;最后掺出,要求技術解決社會問題或者制造經濟/政治動蕩。
相反苫费,學術界卻難以推銷其發(fā)明汤锨。例如,不幸的是百框,最初的工作量證明研究人員沒有得到比特幣的信貸(credit for bitcoin)闲礼,可能是因為這項工作在學術界以外并不為人所知。在學術界铐维,諸如發(fā)布代碼和與從業(yè)者合作等活動沒有得到充分的獎勵柬泽。事實上,迄今為止嫁蛇,學術工作量證明的原始分支仍然不承認比特幣的存在锨并!與現實世界接觸不僅有助于獲得信貸(credit),而且還會減少輪子再造睬棚,并且是找到新創(chuàng)意第煮。
6 致謝(Acknowledgements)
The authors are grateful to Adam Back, Andrew Miller, Edward Felten, Harry Kalodner, Ian Goldberg, Ian Grigg, Joseph Bonneau, Malte M?ser, Mike Just, Neha Narula, Steven Goldfeder, and Stuart Haber for valuable feedback on a draft.
7 參考文獻(References)
1. Aspnes, J., et al. 2005. Exposing computationally challenged Byzantine imposters. Yale University Department of Computer Science; http://cs.yale.edu/publications/techreports/tr1332.pdf.
2. Back, A. 1997. A partial hash collision based postage scheme; http://www.hashcash.org/papers/announce.txt.
3. Back, A. 2001. Hash cash; https://web.archive.org/web/20010614013848/http://cypherspace.org/hashcash/.
4. Back, A. 2002. Hashcash—a denial of service counter measure; http://www.hashcash.org/papers/hashcash.pdf.
5. Bayer, D., Haber, S., Stornetta, W. S. Improving the efficiency and reliability of digital time-stamping. Proceedings of Sequences 1991; https://link.springer.com/chapter/10.1007/978-1-4613-9323-8_24.
6. Benaloh, J., de Mare, M. 1991. Efficient broadcast timestamping; http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.9199.
7. Boyle, T. F. 1997. GLT and GLR: Component architecture for general ledgers; https://linas.org/mirrors/www.gldialtone.com/2001.07.14/GLT-GLR.htm.
8. Castro, M., Liskov, B. 1999. Practical Byzantine fault tolerance. Proceedings of the Third Symposium on Operating Systems Design and Implementation; http://pmg.csail.mit.edu/papers/osdi99.pdf.
9. Chaum, D. 1981. Untraceable electronic mail, return addresses, and digital pseudonyms. Communications of the ACM 24(2): 84-90; https://dl.acm.org/citation.cfm?id=358563.
10. Chaum, D. 1983. Blind signatures for untraceable payments. Advances in Cryptology: 199-203.
11. Chaum, D. 1985. Security without identification: transaction systems to make Big Brother obsolete. Communications of the ACM 28(10): 1030-1044; https://dl.acm.org/citation.cfm?id=4373.
12. Chaum, D., et al. 1988. Untraceable electronic cash. Advances in Cryptology: 319-327; https://dl.acm.org/citation.cfm?id=88969.
13. Dai, W. 1998; http://www.weidai.com/bmoney.txt.
14. Douceur, J. R. 2002. The Sybil attack; https://dl.acm.org/citation.cfm?id=687813.
15. Dwork, C., Naor, M. 1992. Pricing via processing or combatting junk mail; https://dl.acm.org/citation.cfm?id=705669.
16. Felten, E. 2017. Smart contracts: neither smart nor contracts? Freedom to Tinker; https://freedom-to-tinker.com/2017/02/20/smart-contracts-neither-smart-not-contracts/.
17. Franklin, M. K., Malkhi, D. 1997. Auditable metering and lightweight security; http://www.hashcash.org/papers/auditable-metering.pdf.
18. Gabber, E., et al. 1998. Curbing Junk E-Mail via Secure Classiffication. http://www.hashcash.org/papers/secure-classification.pdf.
19. Garay, J. A., et al. 2015. The bitcoin backbone protocol: analysis and applications. Advances in Cryptology: 281-310; https://eprint.iacr.org/2014/765.pdf.
20. Goldberg, I. 2000. A pseudonymous communications infrastructure for the Internet. Ph.D. dissertation, University of California Berkeley; http://moria.freehaven.net/anonbib/cache/ian-thesis.pdf.
21. Grigg, I. 2005. Triple entry accounting; http://iang.org/papers/triple_entry.html.
22. Haber, S., Stornetta, W. S. 1991. How to timestamp a digital document. Journal of Cryptology 3(2): 99-111; https://link.springer.com/chapter/10.1007/3-540-38424-3_32.
23. Haber, S., Stornetta, W. S. 1997. Secure names for bit-strings. In Proceedings of the 4th ACM Conference on Computer and Communications Security: 28-35; http://dl.acm.org/citation.cfm?id=266430.
24. Jakobsson, M., Juels, A. 1999. Proofs of work and bread pudding protocols; http://www.hashcash.org/papers/bread-pudding.pdf.
25. Juels, A., Brainard, J. 1999. Client puzzles: a cryptographic countermeasure against connection completion attacks. Proceedings of Networks and Distributed Security Systems: 151-165; https://www.isoc.org/isoc/conferences/ndss/99/proceedings/papers/juels.pdf.
26. Just, M. 1998. Some timestamping protocol failures; http://www.isoc.org/isoc/conferences/ndss/98/just.pdf.
27. Lamport, L., et al. 1982. The Byzantine Generals Problem. ACM Transactions on Programming Languages and Systems 4(3): 382-401; https://dl.acm.org/citation.cfm?id=357176 .
28. Lamport, L. 1989. The part-time parliament. Digital Equipment Corporation; https://computerarchive.org/files/mirror/www.bitsavers.org/pdf/dec/tech_reports/SRC-RR-49.pdf.
29. Lamport, L. 2001. Paxos made simple; http://lamport.azurewebsites.net/pubs/paxos-simple.pdf.
30. Laurie, B. 2014. Certificate Transparency. acmqueue 12(8); https://queue.acm.org/detail.cfm?id=2668154.
31. Levy, K. E. C. 2017. Book-smart, not street-smart: blockchain-based smart contracts and the social workings of law. Engaging Science, Technology, and Society 3: 1-15; http://estsjournal.org/article/view/107.
32. Melara, M., et al. 2015. CONIKS: bringing key transparency to end users. Proceedings of the 24th Usenix Security Symposium; https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-melara.pdf.
33. Merkle, R. C. 1980. Protocols for public key cryptosystems. IEEE Symposium on Security and Privacy; http://www.merkle.com/papers/Protocols.pdf.
34. Nakamoto, S. 2008. Bitcoin: a peer-to-peer electronic cash system; https://bitcoin.org/bitcoin.pdf.
35. Nakamoto, S. 2008. Re: Bitcoin P2P e-cash paper; http://satoshi.nakamotoinstitute.org/emails/cryptography/11/.
36. Narayanan, A., et al. 2016. Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction. Princeton University Press; http://bitcoinbook.cs.princeton.edu/.
37. Pass, R., et al. 2017. Analysis of the blockchain protocol in asynchronous networks. Annual International Conference on the Theory and Applications of Cryptographic Techniques; https://link.springer.com/chapter/10.1007/978-3-319-56614-6_22.
38. Pinkas, B., Sander, T. 2002. Securing passwords against dictionary attacks. Proceedings of the Ninth ACM Conference on Computer and Communications Security: 161-170; https://dl.acm.org/citation.cfm?id=586133.
39. Reuters. 2014. Mind your wallet: why the underworld loves bitcoin; http://www.cnbc.com/2014/03/14/mind-your-wallet-why-the-underworld-loves-bitcoin.html.
40. Sirer, E. G. 2016. Bitcoin guarantees strong, not eventual, consistency. Hacking, Distributed; http://hackingdistributed.com/2016/03/01/bitcoin-guarantees-strong-not-eventual-consistency/.
41. Szabo, N. 1994. Smart contracts; http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html.
42. Szabo, N. 2008. Bit gold. Unenumerated; https://unenumerated.blogspot.com/2005/12/bit-gold.html.
43. Wattenhofer, R. 2016. The Science of the Blockchain. Inverted Forest Publishing.
44. Rivest, R. L., Shamir, A. 1996. PayWord and MicroMint: Two simple micropayment schemes. International Workshop on Security Protocols.