首页>参考读物>计算机科学与技术>软件与程序设计

精通区块链编程:加密货币原理、方法和应用开发(原书第2版)
作者 : [希]安德烈亚斯·M.安东波罗斯(Andreas M. Antonopoulos) 著
译者 : 郭理靖 李国鹏 李卓 译 乔延宏 邵周 Higer 审校
出版日期 : 2019-05-22
ISBN : 978-7-111-62605-3
定价 : 119.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 341
开本 : 16
原书名 : Mastering Bitcoin: Programming the Open Blockchain,Second Edition
原出版社: OReilly Media, Inc.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

区块链的热度无须赘言。该书从基础技术层面解读开放区块链编程技术在金融领域的应用原理、实践及趋势。本书主要面向程序员,书中详细介绍了加密货币的原理、使用方法,以及如何开发与之相关的软件。对希望理解比特币及加密货币内在工作机制的非程序员读者们,本书前几章还深入介绍了比特币概念及其原理。

图书特色

图书前言

我第一次偶遇比特币是在2011年年中,当时的反应大概是“哈!书呆子的钱嘛!”因为没能领会它的重要性,我忽视它长达六个月之久,而让我稍感宽慰的是,我认识的许多聪明绝顶的人也是这种反应。在一次邮件列表讨论时,我再次接触到比特币,于是决定阅读中本聪(Satoshi Nakamoto)写的白皮书,研究比特币的权威解释,看看到底是怎么一回事。我仍记得刚刚读完那九页内容的一刻,我才终于明白了:比特币不单单是一种数字货币,还是一种给货币及其他很多东西提供基础的信任网络。对“不是货币,而是去中心化信任网络”的领悟,让我开启了为期四个月的比特币沉醉之旅。我如饥似渴地寻找任何关于比特币的点滴信息,变得越来越着迷,每天都会花12个小时以上紧盯屏幕,竭尽所能地阅读、写作、学习和编程。从这段着魔的状态中走出来的时候,我的体重由于饮食没有规律而轻了20多磅,同时我也坚定了要全心投入比特币事业的决心。
随后的两年,我创立了一系列开发比特币相关服务和产品的公司,之后我决定写第一本书。书的主题就是激发了我疯狂的创造力并让我冥思苦想的比特币,它是我在继互联网之后遇到的最为振奋人心的技术。现在是时候跟更广大的读者分享我对这项惊人技术的热情了。
阅读对象
本书主要面向程序员。如果你能使用一门编程语言,本书将会告诉你加密货币的原理、使用方法,以及如何开发与之相关的软件。对希望理解比特币及加密货币内在工作机制的非程序员读者,本书前几章作为对比特币的深入介绍依然适用。
封面故事
在群居生物物种中,切叶蚁表现出高度复杂行为的物种特征。但是群落中的每一只蚂蚁个体仅仅遵循一些社会互动和化学气味(即信息素)交换的简单规则。维基百科提到:“切叶蚁形成地球上仅次于人类的最为庞大且复杂的动物社会。”实际上,切叶蚁不吃叶子,而是使用叶子制造一种真菌来充当蚁群主要的食物来源。意识到了吗?它们在耕作!
虽然切叶蚁形成的是阶级社会,且依靠蚁后繁衍后代,但是在蚁群中不存在中央集权体制或领导人。通过切叶蚁我们可以看到,群落中数百万成员所展现的高度智能且复杂的行为是社会网络中个体互动这一性质的凸显。
大自然向我们证明,去中心化体制具有弹性并能创造出意想不到的复杂性和难以想象的精妙,而不需要中央集权体制、等级制度或复杂的组织结构。
比特币网络正是这样一个高度复杂的去中心化可信网络,能够支撑无数财务流程。然而,比特币网络的每一个节点都遵循一些简单的数学准则。节点间的相互作用促成并引起组织的复杂行为,而不是某个单一节点自身具有复杂性和可信性。就像蚁群一样,比特币的弹性网络是一个由众多遵循简单准则的简单节点所组成的弹性网络,这些简单的节点准则聚合在一起可以完成惊人的事情,而不需要任何中枢协调。
排版约定
本书采用以下排版约定:
斜体(Italic)
指示新的术语、URL链接、email地址、文件名和文件扩展名。
等宽体(Constant width)
用于程序清单的显示,也用于段落中涉及的程序要素,如变量或函数名、数据库、数据类型、环境变量、语句和关键字。
等宽粗体(Constant width bold)
显示需要由用户输入的命令和其他文字。
等宽斜体(Constant width italic)
显示需要由用户提供的或根据上下文环境修改的值。
这个标志表示提示或建议。
这个标志表示通用注释。
这个标志表示警告或提醒。
代码示例
本书示例是基于类Unix操作系统(例如Linux或Mac OS X)的命令行,用Python或C++编程语言来编写。全部代码段均可在GitHub主代码库中的code子目录获得。读者可以通过GitHub库(https://github.com/aantonop/bitcoinbook)创建自己的代码分支,尝试书中示例,或者提交代码更正。
所有代码段在大多数操作系统上都可以通过最小化安装对应语言的编译器和解释器来重现。在必要的地方,本书还提供了基本的安装指令以及每步指令输出的结果。
为了适应版面,本书重新格式化了部分代码段和代码输出。在所有此类例子中,每行代码以反斜杠(\)字符和换行符分开。当你需要尝试这些示例时,请删除这两个字符把被分隔的两行重连起来,这样就可以得到与例子中一致的结果了。
本书所有代码段尽可能地采用实值计算,因此你可以通过重复构建本书提供的代码示例,用你自己写的代码计算出相同的结果。譬如,书中出现的私钥和对应的公钥及地址也都是真实存在的。示例中的所有交易、区块和区块链均被记录在实际的比特币区块链中,是公共账目的一部分,因而你可以在任何比特币系统中检查它们。
使用代码示例
本书的目的是帮助你完成工作。总之,你可以在程序和文档中使用本书的代码示例。除非你要复制代码的关键部分,否则不需要联系我们获得许可。例如,使用程序中的几段代码,或者引用本书及代码来回答问题是不需要获准的;而售卖或分发包含O扲eilly书中代码示例的光盘,或者将书中的大量代码合并于你的产品或文档则必须获得我们的许可。
我们鼓励但不强制要求你在引用本书时表明出处。书目引用格式通常包括书名、作者、出版商、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/ ),这种情况下,开源许可条款适用。如果你觉得你对本书代码示例的使用超出了合理范围或上述许可,请随时与我们联系:permissions@oreilly.com。
书中涉及的比特币地址与交易
书中的比特币地址、交易、密钥、二维码、区块链数据大部分都是真实的。这意味着你可以通过脚本或程序等方式在比特币区块链中查看示例给出的交易。
然而,需要注意的是创建地址的这些私钥要么写入书中,要么已经被“焚毁”。这就意味着如果你往这些地址中转入比特币的话,这些比特币要么永远丢失,要么会被本书的其他读者通过书中给出的私钥拿走。
不要向书中给出的任何地址转比特币。否则你的钱将永远消失或被本书其他读者拿走。
Safari在线图书
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。
如何联系我们
美国:
O'Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
讨论或提出关于本书的技术问题,可发邮件至bookquestions@oreilly.com。
要想更多了解我们书籍、课程、会议和新闻的信息,可以登录我们的官网:http://www.oreilly.com。
我们的Facebook账号:http://facebook.com/oreilly。
关注我们的Twitter账号:http://twitter.com/oreillymedia。
我们在YouTube上的视频:http://www.youtube.com/oreillymedia。
联系作者
你可以在我的个人网站联系我,网址为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。
致谢
这本书的出版浓缩了很多人的努力与付出。在写书的过程中,我很感激来自朋友、同事,甚至陌生人的帮助,是他们的加入与努力帮助我完成了这本关于数字货币和比特币的纯技术类书籍。
我们不可能将比特币技术与比特币社区区分开,因为这本书不仅是社区的产品,也是比特币技术的产品。我写这本书的工作自始至终都得到了整个社区的鼓励、欢呼、支持与奖励。最重要的是,这本书让我两年来成为这个极好社区的一部分,我无法用语言表达你们接纳我成为社区成员的感激之情。在写书的过程中有太多的人需要感谢,以至于无法一一列举,这些人包括我在会议、重大事件、研讨会、聚会、比萨聚会以及小型私人集会相识的人,同时还有那些在Twitter、reddit、bitcointalk.org以及GitHub上与我联系,并对本书成稿有影响的人。你在本书中找到的每个想法、类比、问题、回答以及解释,都是在我与社区人员沟通交流时产生并得到验证和优化的结果。谢谢所有支持过我的人,没有你们的支持就不会有这本书的存在。对此,我将永远心存感激。
当然,我是经过了很长一段时间才成为作家并写作了第一本书。我(在校学习)的第一语言是希腊语,因此我需要在大学一年级时学习英语写作补习课程。我要感谢英语写作老师Diana Kordas,那年是他帮助我建立了自信并提升了写作技能。随后,作为教授,在为《*NetworkWorld》杂志撰稿时,我提升了自己在数据中心方面的写作技能。我要感谢John Dix和John Gallant,他们给了我第一份写作方面的工作,让我成为《*Network World》杂志的专栏作者,还要感谢编辑Michael Cooney和同事Johna Till Johnson,是他们帮我编辑专栏文章,让它们得以发表。四年每周500字的写作经验最终给了我成为一名作家的足够信心。
还要感谢在我提交本书稿件至O扲eilly出版社时那些帮助过我的人,他们为我提供参考和稿件审阅。特别要感谢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,是他们花费数月时间帮助我出版本书。当最终稿件因为种种原因未按计划提交而错过出版截止日期时,Allyson表现得特别耐心。对于第2版,我要感谢Timothy McGovern的全程指导、Kim Cofer的耐心编辑以及 RebeccaPanzer帮助插入了许多新图表。
最初一些章节的草稿是最难写的部分,因为比特币是一个很难说清楚的主题。每次研究比特币中某个主题时,我还得考虑整体的技术内容。当我努力想将主题说得简单易懂,围绕这样一个密集型技术主题展开叙述时,我不断地被卡住并有点沮丧。最终,我决定以讲述人们使用比特币的故事为主线,从而让我可以轻松地写作本书。我要感谢我的导师兼朋友Richard Kagan,是他帮助我想到了以故事方式来编写此书,让我跨过了编者的阻碍。我要感谢PamelaMorgan,他审阅了本书第1版与第2版早期草稿的每个章节,并且提出了很好的改进意见,让本书内容质量更高。同时,还要感谢San Francisco比特币开发者组织小组,还要感谢帮助测试早期材料的Taariq Lewis和Denise Terry。感谢Andrew Naugler帮助设计信息图标。
在本书编写的过程中,我在GitHub上制作了早期草稿,然后邀请公众对其进行评论。收到了100多条评论、建议、修改和捐赠等方面的回应。那些捐助者在文末的早期发布草稿的GitHub捐助者中进行了公布,并表达了我的感激之情。真诚地感谢我的GiuHub志愿者编辑Ming T. Nguyen(第1版编辑)和Will Binns(第2版编辑),他们不辞辛劳地组织、管理和解决GitHub上的pull requests、issue reports,并且执行bug修复工作。
当完成草稿撰写后,本书经历了多轮技术审阅与修改。感谢Cricket Liu和Lorne Lantz的全程审阅、评论和支持。
许多比特币开发者贡献了示例代码、审阅、评论和鼓励。感谢Amir Taaki和Eric Voskuil提供了示例代码片段和许多很好的评论。Chris Kleeschulte编写了附录E;Vitalik Buterin和Richard Kiss帮助提供椭圆曲线数学解析和实现代码;感谢GavinAndresen对本书的修订、评论和支持;感谢Michalis Kargakis的评论、捐赠和btcd简介;感谢Robin Inge修订本书的勘误,改进了第2版的印刷效果。在第2版中,我再次得到了很多比特币核心开发人员的帮助,包括让隔离见证通俗易懂的Eric Lombrozo,帮助改进交易章节的Luke-Jr,帮助审阅隔离见证和其他章节的Johnson Lau,还有其他很多要感谢的开发者。我深深地感谢帮助解释闪电网络的Joseph Poon、Tadge Dryja和Olaoluwa Osuntokun,他们还帮助我审阅文章,解答了我无法回答的问题。
我将这本书和深爱之词献给我亲爱的母亲Theresa,她在我家房子的每面墙上放满了书籍。尽管自认为是科技产品排斥者,我母亲还是在1982年给我买了第一台电脑。我的父亲Menelaos是一名土木工程师,刚在80岁时出版了他的第一本书,我的父亲也是一名科技和工程技术爱好者,他教会了我逻辑思考与分析。
感谢在写书过程中所有支持我的人。

专家评论

我羡慕那些能直接看懂区块链源代码的程序员—他们能感受到区块链的创世之美,而我只能粗浅地理解。我强迫自己反复看比特币/以太坊的白皮书,于工作于兴趣,我都希望能够从源头了解区块链,但我不是程序员,只看白皮书,无法深入,更谈不上系统。
恰好碰到本书的出版,读之大有裨益,即使看不懂书中的代码也不要紧,它能帮你建立对区块链的系统性了解。正如纳·斯·穆勒所说“几乎所有新颖和惊人的思索都受到过有系统的粗浅的思想的启发”,更何况此书一点也不粗浅,它生动透彻,不只是适合有志于区块链领域的程序员阅读,也适合我们这种希望对区块链的思想有系统性深入了解的人读,因此郑重推荐。
—西门柳上,容铭投资合伙人,《正在爆发的互联网革命》作者
在我看来,区块链是门杂学,也是件独一无二的艺术品,它巧妙地融合了很多已有的技术,通过密码朋克的精神把自由主义极客紧紧绑到了一起。
这也是我很喜欢和区块链领域开发者打交道的原因,这是一群有着强烈共识并愿意用行动去推动变革的人。这本书会向你阐述这套系统背后的技术、经济和心理逻辑。
—阿秋(刘婧雅),回向基金合伙人
区块链技术的出现,标志人类社会进入了信用记账的阶段,这是社会经济发展的一个里程碑,也是金融科技发展和数字社会的新台阶。区块链的概念最早出现于2008年问世的比特币白皮书中,成为比特币产出、记录、流通的基础协议和技术应用。尽管比特币一直以来饱受争议,但其所应用的区块链技术给我们带来的是信用和价值的传递。本书从比特币的基础技术概念、应用、用户和场景解析入门,深入浅出地剖析了区块链行业发展的基础逻辑,具有极强的实操性和指导性。特别适合区块链行业从业者、爱好者作为入门读物。
—Hana Zhang,DAEX Blockchain合伙人,多家交易平台投资人

上架指导

计算机\安全

封底文字

伴随着金融世界领域中的技术变革,本书将带领你走进看似复杂的比特币世界,为你参与到数字货币互联网提供必要的知识。无论你是正在构建下一个杀手级应用,还是在投资一个初创企业,或者只是对这种技术好奇,这本全面修订和扩展的第2版都是必不可少的。
比特币,第一个成功去中心化的数字货币,虽然仍处在早期的发展阶段,却已经孕育了全球数十亿美元规模的经济效应。这种经济活动对任何有相关知识和热情的人都是开放的。本书提供了必要的知识,你只需要付出你的热情。
第二版包括:
1.比特币及其所蕴含的区块链技术的广泛介绍——非技术人员、投资者和企业高管的理想选择。
2. 比特币及加密货币的技术基础——为开发者、工程师和软件系统架构师量身定制。
3. 比特币去中心化的网络、点对点架构、交易生命周期和安全原则等相关细节的详细介绍。
4. 新的进展,如隔离见证、支付通道和闪电网络。
5. 深入挖掘区块链的应用, 包括如何通过结合区块链构建上层应用。
6. 使用故事、类比、示例和代码片段等阐述关键的技术概念。

Andreas M. Antonopoulos是备受好评的畅销书作家、演讲家和教育家,也是世界上最重要的比特币和开放式区块链专家之一。Andreas善于化繁为简,让普通人理解深奥的技术话题。当我在Rubix by Deloitte任职期间,当第一次提到比特币时,这本书就是必读的书籍。
                                                            ———IIianan Oris Valiente ,Rubix by Deloitte前合伙人  
本书内容和比特币协议完全保持一致,若你想要全面了解区块链的潜力,请阅读此书。
                                         ———Jameson Lopp,BitGo软件工程师               
Andreas的书将带你加入金融世界的软件变革浪潮之中。
                                          ——Naval Ravikant,AngelList合伙人  

译者序

郎咸平说:比特币白给我都不要。
巴菲特说:比特币是泡沫,不是一种能够生产价值的资产。
紫色的股说:为什么说比特币是典型的泡沫?
也有人说,区块链是最伟大的发明,堪比互联网。
那么,比特币到底是什么?难道我们能做的就是人云亦云?
如何能有自己的独立判断?
每个人都有自己的“全知遮蔽”,就像每个人都看不见自己的后脑勺一样。在自己的视野内,在自己的舒适区,如鱼得水,但就是这种感觉最容易让人觉得“自己以为的”就是客观事实。
正确的态度是研究明白,之后才有资格做判断。
本书就能够帮助你全面了解比特币,同时理解其他数字货币。
在翻译过程中得到了higer(区块链研究社社长)的支持和鼓励,特此致谢。
以下朋友对本书做出了巨大贡献。
菜菜子:翻译了英文版序言、第2版更新说明、词汇表、附录B等章节。
柴春燕和格林怪物:负责翻译附录D。
Robbie_英语翻译:第4章审校。
吴迪:第5章和第9章审校。
格林怪物:第6章审校。
阿龙:第7章和第11章审校。
阮立志和冯锦炜:第10章审校。
琳:第12章审校。
黄豆:封面、封底、扉页以及其他内容审校。
由于时间原因和个人能力原因,初稿中有许多格式和理解错误。以上各位朋友在审校过程中修正了初稿中的许多错误,在此深表感谢。
即便如此,当前版本还可能存在部分错误,欢迎读者在GitHub上提交勘误,也可以发至邮箱:yuntianming@aliyun.com

译者
2019年5月

推荐序

2008年比特币诞生,它原本只是密码学极客们的一个玩物,没想到慢慢席卷全球。在2008年以前还没有人能够成功地研发出运行良好的数字货币,直到比特币问世;另外,作为比特币的底层技术,区块链在此之前也是无人提及。那么区块链到底有什么魔力,能让整个世界为之疯狂呢?
相信很多初学者都有这样的疑问。我也曾带着这样的困惑翻阅了大量的书籍,然后才有了比较全面的认识。2010年从中科院毕业以来,我一直在农行软件开发中心工作,平时做的主要是一些传统银行核心系统的研发,有时候会觉得枯燥。特别是,2013年互联网金融爆发,直接冲击了银行的传统业务。我并非觉得压力大,而是看到了机会。
那个时候银行业正处于变革的关口,大量的员工和我一样看到了这样的机会,选择出走寻求更好的待遇。正犹豫不决是否要像他们一样选择离开的时候,我看到单位内部的一封邮件里提到了关于研究区块链技术方面的文字。我自身对新技术有狂热,经过一番思量,2016年6月我给总经理发了一封邮件,正式决定从当时枯燥的工作岗位上“出走”,选择进入一个全新的领域,虽然我仍在银行业,但我觉得在一个大的平台上,或许有更好更多的资源让我学习这些新东西。
这是故事的开始,也是区块链研究社(建立之初叫作“区块链研习社”)成立的发端。正是得益于这样的机会,我当时有幸参加了大量的区块链会议,并接触到业内顶尖的区块链专家,从而耳濡目染地慢慢深入。我当时意识到这个群体还很小,整个社会对区块链的了解还远远不够,虽然以前有很多布道者也曾尝试推动区块链技术在国内的发展,但是我决定做一件不太一样的事情—建立一个区块链的学习社群,让所有爱好者能够在这里获得最贴心的区块链知识服务,并形成一个强有力的群体,创造更大的价值和影响力。因此,2017年1月,区块链研习社成立,这是国内最早的区块链学习社群,目前整个群体人数近3000。对于这个社群,我把它当成一份事业来做,至少要做20年。
在带着大家学习的过程中,很多人都会问我一个问题:“从何入手?”我深知理论的学习总是非常必要的,武装了大脑之后才能更好地践行,于是我推荐大家看书学习。而这里首推的就是本书,可以说它是学习区块链的入门首选,是宝典级的区块链书籍。只不过,比特币经历了几年的发展,也开始出现一些变化,比如进行了隔离见证升级,也分叉出了一个全新的币种BCC,因此第1版的书籍很多地方可能需要更新。
本书译者乔延宏也是我们区块链研究社的核心成员,他多年来都在打磨一个叫作“认知学习法”的学习方法,并尝试将其应用到各种新领域知识的学习当中,效果颇为显著。为此,他还专门成立了一个品牌,叫作“云天明”,希望将此方法传递给更多的人。使用该方法,他快速掌握了区块链知识,并在网络上撰写了30多万字的文章,同时担任本书的第一译者。
刚开始的时候他只是一味地进行翻译,在有限的渠道进行推广,为了坚持,他基本上每天都在进行翻译工作,从而形成了初稿。对于他这种过人的毅力,我非常佩服。不过我觉得,我们应该做一件更有价值的事情—将这些翻译进行充分校订并形成阅读体验良好的中文电子书籍和纸质书籍,供全国的区块链爱好者学习,为我们的国家,为这个世界,更好地普及区块链知识。
为了全力促成此事,我又从人才济济的区块链研究社内部挑选了大量的精英配合乔延宏的翻译和校订工作,这个团队历经多个日夜的苦思琢磨和仔细推敲,最终促成了本书中文版的问世。
相信本书会成为你最好的入门书籍,即便你有了一定的基础,偶尔翻一翻都会有不一样的收获。
现在将这把钥匙送给你,一起打开区块链世界的大门,共创美好的未来吧!

Higer(区块链研究社社长)
2017年11月12日

图书目录

前言1
第1章 比特币介绍9
1.1 比特币是什么9
1.2 比特币历史11
1.3 比特币的使用、用户及用户场景12
1.4 入门13
1.4.1 选择比特币钱包13
1.4.2 快速入门15
1.4.3 获取比特币17
1.4.4 查询比特币当前价格18
1.4.5 发送和接收比特币18
第2章 比特币的工作原理21
2.1 交易、区块、挖矿和区块链21
2.1.1 比特币概述21
2.1.2 购买一杯咖啡22
2.2 比特币交易24
2.2.1 交易输入和输出24
2.2.2 交易链25
2.2.3 找零25
2.2.4 常见的交易形式26
2.3 交易的构建27
2.3.1 获取正确的输入27
2.3.2 创建交易输出29
2.3.3 将交易加入账簿30
2.4 比特币挖矿31
2.5 在区块中挖掘交易32
2.6 消费交易33
第3章 比特币核心客户端:参考实现35
3.1 比特币开发环境36
3.2 从源码编译比特币核心36
3.2.1 选择比特币核心版本37
3.2.2 配置比特币核心生成38
3.2.3 生成比特币核心可执行文件40
3.3 运行比特币核心节点41
3.3.1 首次运行比特币核心42
3.3.2 配置比特币核心节点43
3.4 比特币核心客户端应用程序编程接口(API)46
3.4.1 获得比特币核心客户端状态信息47
3.4.2 探究和解码交易48
3.4.3 探究区块50
3.4.4 使用比特币核心的编程接口51
3.5 其他替代客户端、库和工具包54
3.5.1 C/C++类54
3.5.2 JavaScript类54
3.5.3 Java类54
3.5.4 Python类54
3.5.5 Ruby类55
3.5.6 Go类55
3.5.7 Rust类55
3.5.8 C#类55
3.5.9 Objective-C类55
第4章 密钥和地址56
4.1 简介56
4.1.1 公钥密码学和加密货币57
4.1.2 私钥和公钥58
4.1.3 私钥58
4.1.4 公钥60
4.1.5 椭圆曲线密码学60
4.1.6 创建公钥63
4.2 比特币地址64
4.2.1 Base58和Base58Check编码66
4.2.2 密钥的格式69
4.3 用Python实现密钥和比特币地址74
4.4 高级密钥和地址78
4.4.1 加密私钥(BIP-38)78
4.4.2 P2SH和多重签名地址79
4.4.3 靓号地址80
4.4.4 纸钱包85
第5章 钱包88
5.1 钱包技术概述88
5.1.1 非确定性(随机)钱包89
5.1.2 确定性(种子)钱包90
5.1.3 分层确定性钱包(BIP-32/BIP-44)90
5.1.4 种子和助记词(BIP-39)91
5.1.5 钱包最佳实践91
5.1.6 使用比特币钱包92
5.2 钱包技术细节93
5.2.1 助记词编码标准(BIP-39)93
5.2.2 从种子中创造HD钱包99
5.2.3在网店中使用扩展公钥103
第6章 交易108
6.1 简介108
6.2 交易细节108
6.3 交易的输出和输入110
6.3.1 交易输出111
6.3.2 交易输入113
6.3.3 交易费117
6.3.4 把交易费加到交易中118
6.4 交易脚本和脚本语言120
6.4.1 非图灵完备性121
6.4.2 无状态验证121
6.4.3 脚本构建(锁定与解锁)121
6.4.4 P2PKH124
6.5 数字签名(ECDSA)126
6.5.1 数字签名如何工作127
6.5.2 验证签名128
6.5.3 签名散列类型(SIGHASH)129
6.5.4 ECDSA数学131
6.5.5 随机性在签名中的重要性132
6.6 比特币地址、余额和其他摘要133
第7章 高级交易及脚本136
7.1 简介136
7.2多重签名136
7.3 P2SH138
7.3.1 P2SH地址140
7.3.2 P2SH的优点140
7.3.3赎回脚本和标准确认141
7.4 数据记录输出(RETURN操作符)141
7.5时间锁143
7.5.1交易锁定时间143
7.5.2检查锁定时间验证144
7.5.3相对时间锁146
7.5.4 带nSequence的相对时间锁146
7.5.5 带CSV的相对时间锁147
7.5.6 过去中位时间148
7.5.7针对费用狙击的时间锁149
7.6 具有条件控制的脚本(条件语句)149
7.6.1带有VERIFY操作码的条件语句150
7.6.2 在脚本中使用流控制151
7.7复杂的脚本示例153
第8章 比特币网络155
8.1 点对点网络架构155
8.2 节点类型和角色156
8.3 扩展比特币网络158
8.4 比特币中继网络158
8.5 网络发现160
8.6 全节点163
8.7 交换“库存清单”164
8.8 简易支付验证(SPV)节点165
8.9 Bloom过滤器168
8.10 SPV节点如何使用Bloom过滤器171
8.11 SPV节点和隐私172
8.12 加密与认证连接173
8.12.1 Tor传输173
8.12.2 P2P认证和加密174
8.13 交易池174
第9章 区块链176
9.1 简介176
9.2 区块结构177
9.3 区块头177
9.4 区块标识符:区块头散列值和区块高度178
9.5创世区块179
9.6 链接区块链中的区块180
9.7 默克尔树182
9.8 默克尔树和简单支付验证186
9.9 比特币的测试链187
9.9.1 testnet—比特币的试验场187
9.9.2 segnet—隔离见证测试网189
9.9.3 regtest—本地区块链189
9.10 使用测试区块链进行开发190
第10章 挖矿和共识191
10.1 简介191
10.2 去中心化共识194
10.3 交易的独立校验195
10.4 挖矿节点196
10.5 打包交易至区块197
10.5.1 创币交易198
10.5.2 创币奖励与矿工费199
10.5.3 创币交易的结构201
10.5.4 创币交易数据202
10.6 构造区块头203
10.7 挖掘区块205
10.7.1 工作量证明算法205
10.7.2 难度目标值表示210
10.7.3 重定目标实现调整难度211
10.8 成功挖出区块213
10.9 验证新区块214
10.10 区块链的组装与选择214
10.11 挖矿和算力竞争221
10.11.1 随机数升位方案223
10.11.2 矿池223
10.12 共识攻击226
10.13 改变共识规则229
10.13.1 硬分叉229
10.13.2 硬分叉:软件、网络、挖矿和链230
10.13.3 分离矿工和难度231
10.13.4 有争议的硬分叉232
10.13.5 软分叉232
10.13.6 对软分叉的批评234
10.14 使用区块版本发出软分叉信令234
10.14.1 BIP-34信令和激活234
10.14.2 BIP-9信令和激活235
10.15 共识软件开发237
第11章 比特币的安全239
11.1 安全原则239
11.1.2 安全地开发比特币系统240
11.1.3 信任根241
11.2 用户安全最佳实践241
11.2.1 比特币物理存储242
11.2.2 硬件钱包242
11.2.3 平衡风险243
11.2.4 分散风险243
11.2.5 多重签名和治理243
11.2.6 生存能力243
11.3 结论244
第12章 比特币应用245
12.1 简介245
12.2 基础模块(要素)245
12.3 源于基础模块的应用247
12.4 染色币248
12.4.1 使用染色币249
12.4.2 发行染色币249
12.4.3 染色币交易249
12.5 合约币252
12.6 支付通道和状态通道253
12.6.1 状态通道基本概念和术语254
12.6.2 简单支付通道示例254
12.6.3 制造无须信任的通道257
12.6.4 非对称可撤销承诺260
12.6.5 散列时间锁合约263
12.7 路由支付通道(闪电网络)264
12.7.1 闪电网络示例264
12.7.2 闪电网络传输和路由267
12.7.3 闪电网络优势269
12.8 结论270
附录A 比特币白皮书271
附录B 交易脚本语言操作符、常量和符号282
附录C 比特币改进建议287
附录D 隔离见证296
附录E Bitcore308
附录F pycoin库、实用秘钥及交易程序311
附录G 比特币浏览器命令320

教学资源推荐
作者: 罗晓芳 李慧 孙涛 孙大为 朱鸣华 杨微 编著
作者: 周纯杰 何顶新 周凯波 彭刚 张惕远 编著
作者: 马玉春 李壮 张鲲 黄应红 编著
作者: 顾元刚 等
参考读物推荐
作者: 宋钛旭 编著
作者: 揭金良等
作者: [美]穆拉特·埃尔德(Murat Erder),[美]皮埃尔·普约尔(Pierre Pureur),[美]伊恩·伍兹(Eoin Woods) 著
作者: 钟大伟 高铎 王鹏 宋超 著