我第一次偶遇比特币是在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岁时出版了他的第一本书,我的父亲也是一名科技和工程技术爱好者,他教会了我逻辑思考与分析。
感谢在写书过程中所有支持我的人。