精通區(qū)塊鏈編程:加密貨幣原理、方法和應(yīng)用開發(fā)(原書第2版)
定 價:119 元
前言我第一次偶遇比特幣是在2011年年中,當(dāng)時的反應(yīng)大概是哈!書呆子的錢嘛!因為沒能領(lǐng)會它的重要性,我忽視它長達(dá)六個月之久,而讓我稍感寬慰的是,我認(rèn)識的許多聰明絕頂?shù)娜艘彩沁@種反應(yīng)。在一次郵件列表討論時,我再次接觸到比特幣,于是決定閱讀中本聰(Satoshi Nakamoto)寫的白皮書,研究比特幣的權(quán)威解釋,看看到底是怎么一回事。我仍記得剛剛讀完那九頁內(nèi)容的一刻,我才終于明白了:比特幣不單單是一種數(shù)字貨幣,還是一種給貨幣及其他很多東西提供基礎(chǔ)的信任網(wǎng)絡(luò)。對不是貨幣,而是去中心化信任網(wǎng)絡(luò)的領(lǐng)悟,讓我開啟了為期四個月的比特幣沉醉之旅。我如饑似渴地尋找任何關(guān)于比特幣的點(diǎn)滴信息,變得越來越著迷,每天都會花12個小時以上緊盯屏幕,竭盡所能地閱讀、寫作、學(xué)習(xí)和編程。從這段著魔的狀態(tài)中走出來的時候,我的體重由于飲食沒有規(guī)律而輕了20多磅,同時我也堅定了要全心投入比特幣事業(yè)的決心。隨后的兩年,我創(chuàng)立了一系列開發(fā)比特幣相關(guān)服務(wù)和產(chǎn)品的公司,之后我決定寫第一本書。書的主題就是激發(fā)了我瘋狂的創(chuàng)造力并讓我冥思苦想的比特幣,它是我在繼互聯(lián)網(wǎng)之后遇到的最為振奮人心的技術(shù),F(xiàn)在是時候跟更廣大的讀者分享我對這項驚人技術(shù)的熱情了。閱讀對象本書主要面向程序員。如果你能使用一門編程語言,本書將會告訴你加密貨幣的原理、使用方法,以及如何開發(fā)與之相關(guān)的軟件。對希望理解比特幣及加密貨幣內(nèi)在工作機(jī)制的非程序員讀者,本書前幾章作為對比特幣的深入介紹依然適用。封面故事在群居生物物種中,切葉蟻表現(xiàn)出高度復(fù)雜行為的物種特征。但是群落中的每一只螞蟻個體僅僅遵循一些社會互動和化學(xué)氣味(即信息素)交換的簡單規(guī)則。維基百科提到:切葉蟻形成地球上僅次于人類的最為龐大且復(fù)雜的動物社會。實(shí)際上,切葉蟻不吃葉子,而是使用葉子制造一種真菌來充當(dāng)蟻群主要的食物來源。意識到了嗎?它們在耕作!雖然切葉蟻形成的是階級社會,且依靠蟻后繁衍后代,但是在蟻群中不存在中央集權(quán)體制或領(lǐng)導(dǎo)人。通過切葉蟻我們可以看到,群落中數(shù)百萬成員所展現(xiàn)的高度智能且復(fù)雜的行為是社會網(wǎng)絡(luò)中個體互動這一性質(zhì)的凸顯。大自然向我們證明,去中心化體制具有彈性并能創(chuàng)造出意想不到的復(fù)雜性和難以想象的精妙,而不需要中央集權(quán)體制、等級制度或復(fù)雜的組織結(jié)構(gòu)。比特幣網(wǎng)絡(luò)正是這樣一個高度復(fù)雜的去中心化可信網(wǎng)絡(luò),能夠支撐無數(shù)財務(wù)流程。然而,比特幣網(wǎng)絡(luò)的每一個節(jié)點(diǎn)都遵循一些簡單的數(shù)學(xué)準(zhǔn)則。節(jié)點(diǎn)間的相互作用促成并引起組織的復(fù)雜行為,而不是某個單一節(jié)點(diǎn)自身具有復(fù)雜性和可信性。就像蟻群一樣,比特幣的彈性網(wǎng)絡(luò)是一個由眾多遵循簡單準(zhǔn)則的簡單節(jié)點(diǎn)所組成的彈性網(wǎng)絡(luò),這些簡單的節(jié)點(diǎn)準(zhǔn)則聚合在一起可以完成驚人的事情,而不需要任何中樞協(xié)調(diào)。排版約定本書采用以下排版約定:斜體(Italic)指示新的術(shù)語、URL鏈接、email地址、文件名和文件擴(kuò)展名。等寬體(Constant width)用于程序清單的顯示,也用于段落中涉及的程序要素,如變量或函數(shù)名、數(shù)據(jù)庫、數(shù)據(jù)類型、環(huán)境變量、語句和關(guān)鍵字。等寬粗體(Constant width bold)顯示需要由用戶輸入的命令和其他文字。等寬斜體(Constant width italic)顯示需要由用戶提供的或根據(jù)上下文環(huán)境修改的值。這個標(biāo)志表示提示或建議。這個標(biāo)志表示通用注釋。這個標(biāo)志表示警告或提醒。代碼示例本書示例是基于類Unix操作系統(tǒng)(例如Linux或Mac OS X)的命令行,用Python或C 編程語言來編寫。全部代碼段均可在GitHub主代碼庫中的code子目錄獲得。讀者可以通過GitHub庫(https://github.com/aantonop/bitcoinbook)創(chuàng)建自己的代碼分支,嘗試書中示例,或者提交代碼更正。所有代碼段在大多數(shù)操作系統(tǒng)上都可以通過最小化安裝對應(yīng)語言的編譯器和解釋器來重現(xiàn)。在必要的地方,本書還提供了基本的安裝指令以及每步指令輸出的結(jié)果。為了適應(yīng)版面,本書重新格式化了部分代碼段和代碼輸出。在所有此類例子中,每行代碼以反斜杠(\)字符和換行符分開。當(dāng)你需要嘗試這些示例時,請刪除這兩個字符把被分隔的兩行重連起來,這樣就可以得到與例子中一致的結(jié)果了。本書所有代碼段盡可能地采用實(shí)值計算,因此你可以通過重復(fù)構(gòu)建本書提供的代碼示例,用你自己寫的代碼計算出相同的結(jié)果。譬如,書中出現(xiàn)的私鑰和對應(yīng)的公鑰及地址也都是真實(shí)存在的。示例中的所有交易、區(qū)塊和區(qū)塊鏈均被記錄在實(shí)際的比特幣區(qū)塊鏈中,是公共賬目的一部分,因而你可以在任何比特幣系統(tǒng)中檢查它們。使用代碼示例本書的目的是幫助你完成工作。總之,你可以在程序和文檔中使用本書的代碼示例。除非你要復(fù)制代碼的關(guān)鍵部分,否則不需要聯(lián)系我們獲得許可。例如,使用程序中的幾段代碼,或者引用本書及代碼來回答問題是不需要獲準(zhǔn)的;而售賣或分發(fā)包含O扲eilly書中代碼示例的光盤,或者將書中的大量代碼合并于你的產(chǎn)品或文檔則必須獲得我們的許可。我們鼓勵但不強(qiáng)制要求你在引用本書時表明出處。書目引用格式通常包括書名、作者、出版商、ISBN。例如:Mastering Bitcoin,Andreas M. Antonopoulos(O扲eilly, 2017),978-1-491-95438-6。本書某些版本提供了開源許可,如CC-BY-NC(https://creativecommons.org/licenses/by-nc/4.0/ ),這種情況下,開源許可條款適用。如果你覺得你對本書代碼示例的使用超出了合理范圍或上述許可,請隨時與我們聯(lián)系:permissions@oreilly.com。書中涉及的比特幣地址與交易書中的比特幣地址、交易、密鑰、二維碼、區(qū)塊鏈數(shù)據(jù)大部分都是真實(shí)的。這意味著你可以通過腳本或程序等方式在比特幣區(qū)塊鏈中查看示例給出的交易。然而,需要注意的是創(chuàng)建地址的這些私鑰要么寫入書中,要么已經(jīng)被焚毀。這就意味著如果你往這些地址中轉(zhuǎn)入比特幣的話,這些比特幣要么永遠(yuǎn)丟失,要么會被本書的其他讀者通過書中給出的私鑰拿走。不要向書中給出的任何地址轉(zhuǎn)比特幣。否則你的錢將永遠(yuǎn)消失或被本書其他讀者拿走。Safari在線圖書O扲eilly Safari(正式名稱為Safari在線圖書)是一個為企業(yè)、政府、教育家以及個人提供會員制的培訓(xùn)與參考的平臺。會員可以在該平臺獲取來自超過250家出版社提供的成千上萬的書籍、培訓(xùn)視頻、學(xué)習(xí)路徑、交互教程、策劃播放列表,這些公司包括: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。如何聯(lián)系我們美國:O扲eilly Media, Inc.1005 Gravenstein Highway NorthSebastopol, CA 95472中國:北京市西城區(qū)西直門南大街2號成銘大廈C座807室(100035)奧萊利技術(shù)咨詢(北京)有限公司討論或提出關(guān)于本書的技術(shù)問題,可發(fā)郵件至bookquestions@oreilly.com。要想更多了解我們書籍、課程、會議和新聞的信息,可以登錄我們的官網(wǎng):http://www.oreilly.com。我們的Facebook賬號:http://facebook.com/oreilly。關(guān)注我們的Twitter賬號:http://twitter.com/oreillymedia。我們在YouTube上的視頻:http://www.youtube.com/oreillymedia。聯(lián)系作者你可以在我的個人網(wǎng)站聯(lián)系我,網(wǎng)址為https://antonopoulos.com/本書的信息以及開放版本與翻譯的信息可以在https://bitcoinbook.info/獲取。請關(guān)注我的Facebook賬號https://facebook.com/AndreasMAntonopoulos。請關(guān)注我的Twitter賬號https://twitter.com/aantonop。請關(guān)注我的領(lǐng)英賬號https://linkedin.com/company/aantonop。特別感謝所有的贊助人,他們支持我數(shù)月的工作。你可以訪問我的贊助人網(wǎng)站:https://patreon.com/aantonop。致謝這本書的出版濃縮了很多人的努力與付出。在寫書的過程中,我很感激來自朋友、同事,甚至陌生人的幫助,是他們的加入與努力幫助我完成了這本關(guān)于數(shù)字貨幣和比特幣的純技術(shù)類書籍。我們不可能將比特幣技術(shù)與比特幣社區(qū)區(qū)分開,因為這本書不僅是社區(qū)的產(chǎn)品,也是比特幣技術(shù)的產(chǎn)品。我寫這本書的工作自始至終都得到了整個社區(qū)的鼓勵、歡呼、支持與獎勵。最重要的是,這本書讓我兩年來成為這個極好社區(qū)的一部分,我無法用語言表達(dá)你們接納我成為社區(qū)成員的感激之情。在寫書的過程中有太多的人需要感謝,以至于無法一一列舉,這些人包括我在會議、重大事件、研討會、聚會、比薩聚會以及小型私人集會相識的人,同時還有那些在Twitter、reddit、bitcointalk.org以及GitHub上與我聯(lián)系,并對本書成稿有影響的人。你在本書中找到的每個想法、類比、問題、回答以及解釋,都是在我與社區(qū)人員溝通交流時產(chǎn)生并得到驗證和優(yōu)化的結(jié)果。謝謝所有支持過我的人,沒有你們的支持就不會有這本書的存在。對此,我將永遠(yuǎn)心存感激。當(dāng)然,我是經(jīng)過了很長一段時間才成為作家并寫作了第一本書。我(在校學(xué)習(xí))的第一語言是希臘語,因此我需要在大學(xué)一年級時學(xué)習(xí)英語寫作補(bǔ)習(xí)課程。我要感謝英語寫作老師Diana Kordas,那年是他幫助我建立了自信并提升了寫作技能。隨后,作為教授,在為《*NetworkWorld》雜志撰稿時,我提升了自己在數(shù)據(jù)中心方面的寫作技能。我要感謝John Dix和John Gallant,他們給了我第一份寫作方面的工作,讓我成為《*Network World》雜志的專欄作者,還要感謝編輯Michael Cooney和同事Johna Till Johnson,是他們幫我編輯專欄文章,讓它們得以發(fā)表。四年每周500字的寫作經(jīng)驗最終給了我成為一名作家的足夠信心。還要感謝在我提交本書稿件至O扲eilly出版社時那些幫助過我的人,他們?yōu)槲姨峁﹨⒖己透寮䦟忛。特別要感謝John Gallant、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扲eilly出版社。還要感謝O扲eilly的Michael Loukides和Allyson MacDonald,是他們花費(fèi)數(shù)月時間幫助我出版本書。當(dāng)最終稿件因為種種原因未按計劃提交而錯過出版截止日期時,Allyson表現(xiàn)得特別耐心。對于第2版,我要感謝Timothy McGovern的全程指導(dǎo)、Kim Cofer的耐心編輯以及 RebeccaPanzer幫助插入了許多新圖表。最初一些章節(jié)的草稿是最難寫的部分,因為比特幣是一個很難說清楚的主題。每次研究比特幣中某個主題時,我還得考慮整體的技術(shù)內(nèi)容。當(dāng)我努力想將主題說得簡單易懂,圍繞這樣一個密集型技術(shù)主題展開敘述時,我不斷地被卡住并有點(diǎn)沮喪。最終,我決定以講述人們使用比特幣的故事為主線,從而讓我可以輕松地寫作本書。我要感謝我的導(dǎo)師兼朋友Richard Kagan,是他幫助我想到了以故事方式來編寫此書,讓我跨過了編者的阻礙。我要感謝PamelaMorgan,他審閱了本書第1版與第2版早期草稿的每個章節(jié),并且提出了很好的改進(jìn)意見,讓本書內(nèi)容質(zhì)量更高。同時,還要感謝San Francisco比特幣開發(fā)者組織小組,還要感謝幫助測試早期材料的Taariq Lewis和Denise Terry。感謝Andrew Naugler幫助設(shè)計信息圖標(biāo)。在本書編寫的過程中,我在GitHub上制作了早期草稿,然后邀請公眾對其進(jìn)行評論。收到了100多條評論、建議、修改和捐贈等方面的回應(yīng)。那些捐助者在文末的早期發(fā)布草稿的GitHub捐助者中進(jìn)行了公布,并表達(dá)了我的感激之情。真誠地感謝我的GiuHub志愿者編輯Ming T. Nguyen(第1版編輯)和Will Binns(第2版編輯),他們不辭辛勞地組織、管理和解決GitHub上的pull requests、issue reports,并且執(zhí)行bug修復(fù)工作。當(dāng)完成草稿撰寫后,本書經(jīng)歷了多輪技術(shù)審閱與修改。感謝Cricket Liu和Lorne Lantz的全程審閱、評論和支持。許多比特幣開發(fā)者貢獻(xiàn)了示例代碼、審閱、評論和鼓勵。感謝Amir Taaki和Eric Voskuil提供了示例代碼片段和許多很好的評論。Chris Kleeschulte編寫了附錄E;Vitalik Buterin和Richard Kiss幫助提供橢圓曲線數(shù)學(xué)解析和實(shí)現(xiàn)代碼;感謝GavinAndresen對本書的修訂、評論和支持;感謝Michalis Kargakis的評論、捐贈和btcd簡介;感謝Robin Inge修訂本書的勘誤,改進(jìn)了第2版的印刷效果。在第2版中,我再次得到了很多比特幣核心開發(fā)人員的幫助,包括讓隔離見證通俗易懂的Eric Lombrozo,幫助改進(jìn)交易章節(jié)的Luke-Jr,幫助審閱隔離見證和其他章節(jié)的Johnson Lau,還有其他很多要感謝的開發(fā)者。我深深地感謝幫助解釋閃電網(wǎng)絡(luò)的Joseph Poon、Tadge Dryja和Olaoluwa Osuntokun,他們還幫助我審閱文章,解答了我無法回答的問題。我將這本書和深愛之詞獻(xiàn)給我親愛的母親Theresa,她在我家房子的每面墻上放滿了書籍。盡管自認(rèn)為是科技產(chǎn)品排斥者,我母親還是在1982年給我買了第一臺電腦。我的父親Menelaos是一名土木工程師,剛在80歲時出版了他的第一本書,我的父親也是一名科技和工程技術(shù)愛好者,他教會了我邏輯思考與分析。感謝在寫書過程中所有支持我的人。
目錄前言1第1章 比特幣介紹91.1 比特幣是什么91.2 比特幣歷史111.3 比特幣的使用、用戶及用戶場景121.4 入門131.4.1 選擇比特幣錢包131.4.2 快速入門151.4.3 獲取比特幣171.4.4 查詢比特幣當(dāng)前價格181.4.5 發(fā)送和接收比特幣18第2章 比特幣的工作原理212.1 交易、區(qū)塊、挖礦和區(qū)塊鏈212.1.1 比特幣概述212.1.2 購買一杯咖啡222.2 比特幣交易242.2.1 交易輸入和輸出242.2.2 交易鏈252.2.3 找零252.2.4 常見的交易形式262.3 交易的構(gòu)建272.3.1 獲取正確的輸入272.3.2 創(chuàng)建交易輸出292.3.3 將交易加入賬簿302.4 比特幣挖礦312.5 在區(qū)塊中挖掘交易322.6 消費(fèi)交易33第3章 比特幣核心客戶端:參考實(shí)現(xiàn)353.1 比特幣開發(fā)環(huán)境363.2 從源碼編譯比特幣核心363.2.1 選擇比特幣核心版本373.2.2 配置比特幣核心生成383.2.3 生成比特幣核心可執(zhí)行文件403.3 運(yùn)行比特幣核心節(jié)點(diǎn)413.3.1 首次運(yùn)行比特幣核心423.3.2 配置比特幣核心節(jié)點(diǎn)433.4 比特幣核心客戶端應(yīng)用程序編程接口(API)463.4.1 獲得比特幣核心客戶端狀態(tài)信息473.4.2 探究和解碼交易483.4.3 探究區(qū)塊503.4.4 使用比特幣核心的編程接口513.5 其他替代客戶端、庫和工具包543.5.1 C/C 類543.5.2 JavaScript類543.5.3 Java類543.5.4 Python類543.5.5 Ruby類553.5.6 Go類553.5.7 Rust類553.5.8 C#類553.5.9 Objective-C類55第4章 密鑰和地址564.1 簡介564.1.1 公鑰密碼學(xué)和加密貨幣574.1.2 私鑰和公鑰584.1.3 私鑰584.1.4 公鑰604.1.5 橢圓曲線密碼學(xué)604.1.6 創(chuàng)建公鑰634.2 比特幣地址644.2.1 Base58和Base58Check編碼664.2.2 密鑰的格式694.3 用Python實(shí)現(xiàn)密鑰和比特幣地址744.4 高級密鑰和地址784.4.1 加密私鑰(BIP-38)784.4.2 P2SH和多重簽名地址794.4.3 靚號地址804.4.4 紙錢包85第5章 錢包885.1 錢包技術(shù)概述885.1.1 非確定性(隨機(jī))錢包895.1.2 確定性(種子)錢包905.1.3 分層確定性錢包(BIP-32/BIP-44)905.1.4 種子和助記詞(BIP-39)915.1.5 錢包最佳實(shí)踐915.1.6 使用比特幣錢包925.2 錢包技術(shù)細(xì)節(jié)935.2.1 助記詞編碼標(biāo)準(zhǔn)(BIP-39)935.2.2 從種子中創(chuàng)造HD錢包995.2.3在網(wǎng)店中使用擴(kuò)展公鑰103第6章 交易1086.1 簡介1086.2 交易細(xì)節(jié)1086.3 交易的輸出和輸入1106.3.1 交易輸出1116.3.2 交易輸入1136.3.3 交易費(fèi)1176.3.4 把交易費(fèi)加到交易中1186.4 交易腳本和腳本語言1206.4.1 非圖靈完備性1216.4.2 無狀態(tài)驗證1216.4.3 腳本構(gòu)建(鎖定與解鎖)1216.4.4 P2PKH1246.5 數(shù)字簽名(ECDSA)1266.5.1 數(shù)字簽名如何工作1276.5.2 驗證簽名1286.5.3 簽名散列類型(SIGHASH)1296.5.4 ECDSA數(shù)學(xué)1316.5.5 隨機(jī)性在簽名中的重要性1326.6 比特幣地址、余額和其他摘要133第7章 高級交易及腳本1367.1 簡介1367.2多重簽名1367.3 P2SH1387.3.1 P2SH地址1407.3.2 P2SH的優(yōu)點(diǎn)1407.3.3贖回腳本和標(biāo)準(zhǔn)確認(rèn)1417.4 數(shù)據(jù)記錄輸出(RETURN操作符)1417.5時間鎖1437.5.1交易鎖定時間1437.5.2檢查鎖定時間驗證1447.5.3相對時間鎖1467.5.4 帶nSequence的相對時間鎖1467.5.5 帶CSV的相對時間鎖1477.5.6 過去中位時間1487.5.7針對費(fèi)用狙擊的時間鎖1497.6 具有條件控制的腳本(條件語句)1497.6.1帶有VERIFY操作碼的條件語句1507.6.2 在腳本中使用流控制1517.7復(fù)雜的腳本示例153第8章 比特幣網(wǎng)絡(luò)1558.1 點(diǎn)對點(diǎn)網(wǎng)絡(luò)架構(gòu)1558.2 節(jié)點(diǎn)類型和角色1568.3 擴(kuò)展比特幣網(wǎng)絡(luò)1588.4 比特幣中繼網(wǎng)絡(luò)1588.5 網(wǎng)絡(luò)發(fā)現(xiàn)1608.6 全節(jié)點(diǎn)1638.7 交換庫存清單1648.8 簡易支付驗證(SPV)節(jié)點(diǎn)1658.9 Bloom過濾器1688.10 SPV節(jié)點(diǎn)如何使用Bloom過濾器1718.11 SPV節(jié)點(diǎn)和隱私1728.12 加密與認(rèn)證連接1738.12.1 Tor傳輸1738.12.2 P2P認(rèn)證和加密1748.13 交易池174第9章 區(qū)塊鏈1769.1 簡介1769.2 區(qū)塊結(jié)構(gòu)1779.3 區(qū)塊頭1779.4 區(qū)塊標(biāo)識符:區(qū)塊頭散列值和區(qū)塊高度1789.5創(chuàng)世區(qū)塊1799.6 鏈接區(qū)塊鏈中的區(qū)塊1809.7 默克爾樹1829.8 默克爾樹和簡單支付驗證1869.9 比特幣的測試鏈1879.9.1 testnet比特幣的試驗場1879.9.2 segnet隔離見證測試網(wǎng)1899.9.3 regtest本地區(qū)塊鏈1899.10 使用測試區(qū)塊鏈進(jìn)行開發(fā)190第10章 挖礦和共識19110.1 簡介19110.2 去中心化共識19410.3 交易的獨(dú)立校驗19510.4 挖礦節(jié)點(diǎn)19610.5 打包交易至區(qū)塊19710.5.1 創(chuàng)幣交易19810.5.2 創(chuàng)幣獎勵與礦工費(fèi)19910.5.3 創(chuàng)幣交易的結(jié)構(gòu)20110.5.4 創(chuàng)幣交易數(shù)據(jù)20210.6 構(gòu)造區(qū)塊頭20310.7 挖掘區(qū)塊20510.7.1 工作量證明算法20510.7.2 難度目標(biāo)值表示21010.7.3 重定目標(biāo)實(shí)現(xiàn)調(diào)整難度21110.8 成功挖出區(qū)塊21310.9 驗證新區(qū)塊21410.10 區(qū)塊鏈的組裝與選擇21410.11 挖礦和算力競爭22110.11.1 隨機(jī)數(shù)升位方案22310.11.2 礦池22310.12 共識攻擊22610.13 改變共識規(guī)則22910.13.1 硬分叉22910.13.2 硬分叉:軟件、網(wǎng)絡(luò)、挖礦和鏈23010.13.3 分離礦工和難度23110.13.4 有爭議的硬分叉23210.13.5 軟分叉23210.13.6 對軟分叉的批評23410.14 使用區(qū)塊版本發(fā)出軟分叉信令23410.14.1 BIP-34信令和激活23410.14.2 BIP-9信令和激活23510.15 共識軟件開發(fā)237第11章 比特幣的安全23911.1 安全原則23911.1.2 安全地開發(fā)比特幣系統(tǒng)24011.1.3 信任根24111.2 用戶安全最佳實(shí)踐24111.2.1 比特幣物理存儲24211.2.2 硬件錢包24211.2.3 平衡風(fēng)險24311.2.4 分散風(fēng)險24311.2.5 多重簽名和治理24311.2.6 生存能力24311.3 結(jié)論244第12章 比特幣應(yīng)用24512.1 簡介24512.2 基礎(chǔ)模塊(要素)24512.3 源于基礎(chǔ)模塊的應(yīng)用24712.4 染色幣24812.4.1 使用染色幣24912.4.2 發(fā)行染色幣24912.4.3 染色幣交易24912.5 合約幣25212.6 支付通道和狀態(tài)通道25312.6.1 狀態(tài)通道基本概念和術(shù)語25412.6.2 簡單支付通道示例25412.6.3 制造無須信任的通道25712.6.4 非對稱可撤銷承諾26012.6.5 散列時間鎖合約26312.7 路由支付通道(閃電網(wǎng)絡(luò))26412.7.1 閃電網(wǎng)絡(luò)示例26412.7.2 閃電網(wǎng)絡(luò)傳輸和路由26712.7.3 閃電網(wǎng)絡(luò)優(yōu)勢26912.8 結(jié)論270附錄A 比特幣白皮書271附錄B 交易腳本語言操作符、常量和符號282附錄C 比特幣改進(jìn)建議287附錄D 隔離見證296附錄E Bitcore308附錄F pycoin庫、實(shí)用秘鑰及交易程序311附錄G 比特幣瀏覽器命令320