关于本书
我第一次偶遇比特币是在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。
书中涉及的比特币地址与交易
书中的比特币地址、交易、密钥、二维码、区块链数据大部分都是真实的。这就意味着你可以通过脚本或程序等方式在比特币区块链中查看示例中给出的交易。
然而,需要注意的是创建地址的这些私钥要么写入书中,要么已经被“焚毁”。这就意味着如果你往这些地址中转入比特币的话,这些比特币要么永远丢失,要么被本书的其他读者通过书中给出的私钥拿走。
[警告]
不要给书中给出的任何地址转比特币。否则你的钱将永远消失或被本书其他读者拿走。
鸣谢
这本书的出版浓缩了很多人的努力与付出。在写书的过程中,我很感激来自从朋友、同事、甚至陌生人的帮助,是他们的加入与努力帮助我完成了这本关于数字货币和比特币的纯技术类书籍。
我们不可能将比特币技术与比特币社区区分开,因为这本书不仅是社区的产品,也是比特币技术。我写这本书的工作从始至终都得到了整个社区的鼓励、欢呼、支持与奖励。最重要的是,这本书让我2年来成为这个极好社区的一部分,我无法用言语表达你们接纳我成为社区成员的感谢之情。这写书的过程中有太多的人需要感谢,以至无法一一列举,这些人包括我在会议、重大事件、研讨会、聚会、比萨聚会以及小型私人集会遇到的,同时还有那些在Twitter、reddit、bitcointalk.org以及GitHub上与我联系,并对本书成稿有影响的人。你在本书中找到的每个想法、类比、问题、回答以及解释,都是在我与社区人员沟通交流时产生的,并得到验证和优化的结果。谢谢所有支持过我的人,没有你们的支持将不会有这本书的存在。对此,我将永远心存感激。
当然,我是经过了很长一段时间才成为作家并编写了第一本书。我的第一语言是(学校教育)希腊语,因此我需要在大学一年级时接受英语写作补习课程。我要感谢我的英语写作老师Diana Kordas,那年是他帮助我建立了自信和写作技能。随后,作为教授,在为《NetworkWorld》杂志撰稿时,我提升了自己在数据中心方面的写作技能。我要感谢John Dix and John Gallant,他们给了我第一份写作方面的工作,让我成为《Network World》杂志的专栏作者,还要感谢我的编辑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岁时出版了他的第一本书,我的父亲是一名科技和工程技术爱好者,他教会了我逻辑思考与分析。
感谢在写书过程中所有支持我的人。