**關于本書**
我第一次偶遇比特幣是在2011年年中,當時的反應大概是“哈!書呆子的錢嘛!”因為沒能領會它的重要性,我忽視它長達六個月之久,而讓我稍感寬慰的是,許多我認識的一些聰明絕頂的人也是這種反應。在一次郵件列表討論時,我再次接觸到了比特幣,于是決定閱讀中本聰(Satoshi Nakamoto)寫的白皮書,研究比特幣的權威解釋,看看到底是怎么一回事。我仍記得剛剛讀完那九頁內容的那一刻,那時我才終于明白了:比特幣不單單是一種數字貨幣,還是一種給貨幣及其他很多東西提供基礎的信任網絡。對“不是貨幣,而是去中心化信任網絡”的領悟,讓我開啟了為期四個月的比特幣沉醉之旅。我如饑似渴地尋找任何關于比特幣的點滴信息,變得越來越著迷,每天都花上12 個小時以上緊盯屏幕,竭盡所能地不斷閱讀、寫作、學習和編程。從這段著魔的狀態中走出來的時候,我的體重由于前期沒有規律飲食輕了20 多磅,同時我也堅定了要全心投入比特幣事業的決心。
隨后的兩年,我創立了一系列開發比特幣相關服務和產品的公司,之后我決定寫我的第一本書。書的主題就是激發了我瘋狂的創造力并讓我冥思苦想的比特幣,它是我在繼互聯網之后遇到的最為振奮人心的技術。現在是時候跟更廣大的讀者分享我對這項驚人技術的熱情了。
**閱讀對象**
本書主要面向程序員。如果你能使用一門編程語言,本書將會告訴你加密貨幣的原理、使用方法,以及如何開發與之相關的軟件。對希望理解比特幣及加密貨幣內在工作機制的非程序員讀者們,本書前幾章作為對比特幣的深入介紹依然適用。
**封面故事**
在群居生物物種中,切葉蟻表現出了高度復雜行為的物種特征。但是,群落中的每一只螞蟻個體僅僅遵循一些社會互動和化學氣味(即信息素)交換的簡單規則。維基百科提到:“切葉蟻形成地球上僅次于人類的最為龐大且復雜的動物社會。”實際上,切葉蟻不吃葉子,而是使用葉子制造一種真菌來充當蟻群主要食物來源。意識到了嗎?它們在耕作!
雖然切葉蟻形成的是階級社會,且依靠蟻后繁衍后代,但是在蟻群中不存在中央集權體制或領導人。通過切葉蟻我們可以看到,群落中數百萬成員所展現的高度智能且復雜的行為是社會網絡中的個體互動這一性質的凸顯。
大自然向我們證明,去中心化體制具有彈性并能創造出意想不到的復雜性和難以想象的精妙,而不需要中央集權體制、等級制度或復雜的組織結構。
比特幣網絡正是這樣一個高度復雜的去中心化的可信網絡,能夠支撐無數財務流程。然而,比特幣網絡的每一個節點都遵循著一些簡單的數學準則。節點間的相互作用促成了組織的復雜行為,而并不是任何某個單一節點自身具有復雜性和可信性。就像蟻群一樣,比特幣的彈性網絡是一個由眾多遵循簡單準則的簡單節點所組成的彈性網絡,這些簡單的節點準則聚合在一起可以完成驚人的事情,而不需要任何中樞協調。
**本書慣例**
本書采用以下排版上的約定:
斜體:指示新的術語、URL鏈接、email地址、文件名和文件擴展名
等寬字:用于程序清單的顯示,也用于段落中涉及的程序要素,如變量或函數名、數據庫、數據類型、環境變量、語句和關鍵字。
等寬粗體:顯示需要由用戶輸入的命令和其他文字。
等寬斜體:顯示需要由用戶提供的或根據上下文環境修改的值。
[TIP]這個標志表示提示或建議。
[NOTE]這個標志表示通用注釋。
[WARNING]這個標志表示警告或提醒。
**代碼示例**
本書示例是基于類Unix 操作系統(例如Linux 或Mac OS X)的命令行,用Python,C++編程語言來說明的。全部代碼段均可在Github 主代碼庫中的code 子目錄獲得。讀者可以通過GitHub 創建自己的代碼分支,嘗試書中示例,或者提交代碼更正。
所有代碼段在大多數操作系統上都可以通過最小化安裝對應語言的編譯器和解釋器來重現。在必要的地方,本書還提供了基本的安裝指令以及每步指令輸出的結果。
為了便于打印,本書重新格式化了部分代碼段和代碼輸出。在所有此類例子中,每行代碼以反斜杠(\)字符和換行符分開。當你需要嘗試這些示例時,請刪除這兩個字符,把被分隔的兩行重連起來,就可以看到與例子中一致的結果了。
本書所有代碼段盡可能地采用實值計算,因此你可以通過重復構建本書提供的代碼示例,用你自己寫的代碼計算出相同的結果。譬如,書中出現的私鑰和對應的公鑰及地址也都是真實存在的。示例中的所有交易、區塊和區塊鏈均被記錄在實際的比特幣區塊鏈中,是公共賬目的一部分,因而你可以在任何比特幣系統中檢查它們。
**使用代碼示例**
本書的目的是幫助你完成工作。總的來說,你可以在你的程序和文檔中使用本書的代碼示例。除非你要復制代碼的關鍵部分,否則不需要聯系我們獲得許可。例如,使用程序中的幾段代碼,或者引用本書及代碼來回答問題是不需要獲準的;而售賣或分發包含O'Reilly書中代碼示例的光盤,或者將大量書中代碼合并于你的產品或文檔則必須獲得我們的許可。
我們鼓勵、但不強制要求您在引用本書時表明出處。書目引用格式通常包括書名、作者、出版商、ISBN。例如:“精通比特幣,Andreas?M?Antonopoulos(O'Reilly)。版權2017 Andreas?M?Antonopoulos, 978-1-491-95438-6.”
本書某些版本提供了開源許可,如CC-BY-NC,這種情況下,開源許可條款適用。如果你覺得你對本書代碼示例的使用超出了合理范圍或上述許可,請隨時與我們聯系:permissions@oreilly.com。
**書中涉及的比特幣地址與交易**
書中的比特幣地址、交易、密鑰、二維碼、區塊鏈數據大部分都是真實的。這就意味著你可以通過腳本或程序等方式在比特幣區塊鏈中查看示例中給出的交易。
然而,需要注意的是創建地址的這些私鑰要么寫入書中,要么已經被“焚毀”。這就意味著如果你往這些地址中轉入比特幣的話,這些比特幣要么永遠丟失,要么被本書的其他讀者通過書中給出的私鑰拿走。
[警告]
不要給書中給出的任何地址轉比特幣。否則你的錢將永遠消失或被本書其他讀者拿走。
O'Reilly Safari(正式名稱為Safari在線書店) 是一個為企業、政府、教育家以及個人提供會員制的培訓與參考的平臺。
會員可以在該平臺獲取來自超過250家出版社提供的成千上萬的書籍、培訓視頻、學習路徑、交互教程、策劃播放列表,這些公司包括:Prentice Hall Professional, Addison-Wesley Professional, MicrosoftPress, Sams, Que, Peachpit Press, Adobe, Focal Press, Cisco Press, John Wiley& Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FTPress, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett以及CourseTechnology,除此之外還有其他很多公司。
要獲取更多信息,請訪問:http://oreilly.com/safari
要想更多了解我們書籍、課程、會議和新聞的信息,可以登錄我們的官網:http://www.oreilly.com
我們Facebook賬號: http://facebook.com/oreilly
關注我們的Twitter賬號: http://twitter.com/oreillymedia
我們在YouTube上的視頻??http://www.youtube.com/oreillymedia
聯系作者
你可以在我的個人網站聯系我(Andreas M. Antonopoulos):
https://antonopoulos.com/
《精通比特幣》的信息以及開放版本與翻譯的信息可以在此網址獲取:
https://bitcoinbook.info/
請關注我Facebook賬號:
https://facebook.com/AndreasMAntonopoulos
請關注我Twitter賬號:
https://twitter.com/aantonop
請關注我領英賬號:
https://linkedin.com/company/aantonop
特別感謝所有的贊助人,是他們支持我了數月的工作。你可以訪問我的贊助人網站:
https://patreon.com/aantonop
**鳴謝**
這本書的出版濃縮了很多人的努力與付出。在寫書的過程中,我很感激來自從朋友、同事、甚至陌生人的幫助,是他們的加入與努力幫助我完成了這本關于數字貨幣和比特幣的純技術類書籍。
我們不可能將比特幣技術與比特幣社區區分開,因為這本書不僅是社區的產品,也是比特幣技術。我寫這本書的工作從始至終都得到了整個社區的鼓勵、歡呼、支持與獎勵。最重要的是,這本書讓我2年來成為這個極好社區的一部分,我無法用言語表達你們接納我成為社區成員的感謝之情。這寫書的過程中有太多的人需要感謝,以至無法一一列舉,這些人包括我在會議、重大事件、研討會、聚會、比薩聚會以及小型私人集會遇到的,同時還有那些在Twitter、reddit、bitcointalk.org以及GitHub上與我聯系,并對本書成稿有影響的人。你在本書中找到的每個想法、類比、問題、回答以及解釋,都是在我與社區人員溝通交流時產生的,并得到驗證和優化的結果。謝謝所有支持過我的人,沒有你們的支持將不會有這本書的存在。對此,我將永遠心存感激。
當然,我是經過了很長一段時間才成為作家并編寫了第一本書。我的第一語言是(學校教育)希臘語,因此我需要在大學一年級時接受英語寫作補習課程。我要感謝我的英語寫作老師Diana Kordas,那年是他幫助我建立了自信和寫作技能。隨后,作為教授,在為《*NetworkWor*ld》雜志撰稿時,我提升了自己在數據中心方面的寫作技能。我要感謝John Dix and John Gallant,他們給了我第一份寫作方面的工作,讓我成為《*Network Wor*ld》雜志的專欄作者,還要感謝我的編輯Michael Cooney和我的同事Johna Till Johnson,是他們幫我編輯我的專欄文章,讓它們得以發表。四年每周500字的寫作經驗最終給了我足夠的信心成為一名作家。
還要感謝那些在我提交本書稿件至 O’Reilly出版社時那些幫助過我的人,他們為我提供參考和稿件審閱。特別要感謝JohnGallant、Gregory Ness、Richard Stiennon、Joel Snyder、Adam B. Levine、Sandra Gittlen、John Dix、Johna Till Johnson、Roger Ver以及Jon Matonis。特別感謝Richard Kagan、Tymon Mattoszko和Matthew Taylor,Richard Kagan、Tymon Mattoszko幫我審閱了本書早期稿件,MatthewTaylor幫我修改了稿件。
感謝《*DNS and BIND*》的作者Cricket Liu,是他將我介紹給了O’Reilly出版社。還要感謝O’Reilly 的Michael Loukides和Allyson MacDonald,是他們花費數月時間幫助出版本書。當最終稿件因為種種原因未按計劃提交而錯過出版截止日期時,Allyson表現地特別耐心。對于第2版,我要感謝Timothy McGovern的全程指導、Kim Cofer的耐心編輯以及 RebeccaPanzer幫助插入了許多新圖表。
最初的一些章節的草稿是最難寫的部分,因為比特幣一個很難說清楚的主題。每次我研究比特幣中某個主題時,我還得考慮整體的技術內容。當我努力想將主題說得簡單易懂,圍繞這樣一個密集型技術主題展開敘述時,我不斷地被卡住并有點沮喪。最終,我決定以講述人們使用比特幣的故事為主線來編寫本書,從而讓我可以輕松地編寫本書。我要感謝我的導師兼朋友,Richard Kagan,是他幫助我想到了以故事方式來編寫此書,讓我跨過了編者的阻礙。我要感謝PamelaMorgan,他審閱了本書第一版與第二版的早期草稿的每個章節,并且提出了很好的改進意見,讓本書內容質量更高。同時,還要感謝San Francisco比特幣開發者組織小組,還要感謝幫助測試早期材料的TaariqLewis和Denise Terry。感謝Andrew Naugler幫助設計信息圖標。
在本書編寫的過程中,我在GitHub上制作了早期草稿,然后邀請公眾對其進行評論。收到了100多條評論、建議、修改和捐贈等方面的回應。那些捐助者在文末的早期發布草稿的GitHub捐助者中進行了公布,并表達了我的感謝之情。真誠地感謝我的GiuHub自愿者編輯Ming T. Nguyen (第1版編輯) and Will Binns (第2版編輯),他們不辭辛勞地組織、管理和解決GitHub上的pull requests、issue reports,并且執行bug修復工作。
當完成草稿撰寫后,本書經歷了多輪技術審閱與修改。感謝Cricket Liu和Lorne Lantz的全程審閱、評論和支持。
許多比特幣開發者貢獻了示例代碼、審閱、評論和鼓勵。感謝Amir Taaki和Eric Voskuil提供了示例代碼片段和許多很好的評論。Chris Kleeschulte編寫了BitCore附錄部分;Vitalik Buterin和Richard Kiss幫助提供橢圓曲線數學解析和實現代碼;感謝GavinAndresen對本書的修訂、評論和支持;感謝 Michalis Kargakis的評論、捐贈和btcd簡介;感謝Robin Inge對本書的勘誤,改進了第2版的印刷效果。在第2版中,我再次收到了很多比特幣核心開發人員的幫助,包括讓隔離見證通俗易懂的Eric Lombrozo,幫助改進交易章節的Luke-Jr,幫助審閱隔離見證和其他章節的JohnsonLau,還有其他很多要感謝的開發者。我深深地感謝幫助解釋閃電網絡的Joseph Poon、Tadge Dryja和Olaoluwa Osuntokun,他們還幫助我審閱了我的文章,幫助我解答了我無法回答的問題。
我將我的書和深愛之詞獻給我親愛的母親Theresa,她在我們住的房子中的每面墻上放滿了書籍。盡管自認為是科技產品排斥著,我母親還在1982年給我買了第一臺電腦。我的父親Menelaos是一名土木工程師,剛在80歲時出版了他的第一本書,我的父親是一名科技和工程技術愛好者,他教會了我邏輯思考與分析。
感謝在寫書過程中所有支持我的人。