• 序一

    序一

    微博上有人感慨:“小说家死了,他的小说还会有人读;程序员死了,他就被人忘了。99%的软件,生命周期不超过5年,这意味着你现在写的代码,5年后将毫无用处。如何做一些留得下来的事情,是每个程序员应该认真思考的问题。”引得许多码农感慨良千。

    但有一个活生生的案例显示,并不是这样。2008年,中本聪发布比特币白皮书,2009年1月,他开发了比特币的第一个版本,也就是被人们熟知的satoshi客户端。7年来,无数开发者为比特币提交了代码,中本聪的代码保留下来的微乎其微,目前仅占代码总量的2%,但他的思想被原原本本的继承下来,那就是去中心化理念:区块链就好比一台信用的机器,让政府、公司、机构与个体作为平等的节点呈现在分布式网络上,各自管理自己的身份与信用,共享一部不可修改的交易总账。最近另一个区块链项目“以太坊”不顾社区的反对,强行发起一次硬分叉,回滚了区块链数据,引来不小争议。

    区块链与普通软件项目所不同的是,它是去中心化的。这意味着它可能遵循不同的开发组织理念,比如官方,对于区块链项目可能并不那么重要,甚至官方这个词都是值得商榷的,因为软件是开源的,任何人都可以开发它的新版本,或者Fork出一条新链。即使存在官方,也并不意味着区块链就是他的产品,他的孩子,官方并不拥有区块链数据修改的主导权。区块链更像是把数据(信用)写在无限纸带上的单向图灵机,能够根据指令读写当前纸带格子上的数据,每执行一条指令就往后移动一格,但不能修改过去所写入的数据。

    与所有开源社区一样,比特币等区块链项目的开发方式具有这样一些特征:1、人们按照自己兴趣和意愿选择加入,开发者并非项目发起人或官方的雇员。2、任何人可以无偿获取开源项目的源码以及相应的编程工具,并为项目贡献自己的代码。3、软件开发和发布的主体并非是公司,而是一些基金组织或个人,他们不以盈利为目的。4、参与人员分布于全球各地,彼此间通过互联网进行协作。

    然而,就是这种看似松散、不稳定的工作组织方式,却爆发了惊人的生产力,这儿有一个视频形象的记录了比特币项目是怎样从一颗种子生长为一棵参天大树的:https://youtu.be/PfKlee8kLE4 。比特币这样的区块链项目,任何对规则的重大改变都需要获得社区的广泛共识,对软件的任何更新必须由大多数矿工所安装后才能让修改生效。正如本书的作者所言:“加密货币都是去中心化的,去中心化的基础就是P2P节点众多,那么如何吸引用户加入网络成为节点,有那些激励机制?同时,开发的重点是让多个节点维护一个数据库,那么如何决定哪个节点写入?何时写入?一旦写入,又怎么保证不被其他的节点更改(不可逆)?回答这些问题的答案,就是共识机制。”

    起初,作者以imfly这个ID在巴比特社区发贴,分享自己“用Nodejs开发加密货币”的经验与心得,正如许多开源项目的艰难起步,一开始并没有得到多少支持,甚至还会迎来冷嘲热讽。但欣慰的是,imfly坚持了下来,并有了更多志同道合的朋友加入,从而有了这本书,有了巴比特社区的开发者群体。

    在巴比特社区,有很多开发者聚集在这儿,热心回答区块链新手的提问。在问答版,共有455个比特币问题、98个加密货币问题、88个区块链问题得到了解答,平均每个问题会得到5条热心回复。这些技术大牛回答新手问题除了能得到社区虚拟金币的奖励,并无其它报酬。但是,他们在推动中国区块链开发者社区发展壮大的同时,也在无形中建立了自己的影响力。viaBTC的创始人海洋在巴比特社区发贴,找到了投资者与合作伙伴。imfly发起了“亿书”项目,旨在打造人人可用的去中心化软件,以加密货币为驱动,促进人类知识分享。币区势创始人潘国力在社区发起众筹成功,获得了第一笔启动资金,创立社会化情绪指数,在区块链大数据趋势分析领域建立了自己的品牌……如果你有一颗梦想的种子,与其让它在阴影的角落独自生长,不如公布于社区,让100个头脑参与其中,让它像蒲公英一样四处传播。

    我相信,在去中心化的共识机制之下,巴比特社区会诞生越来越多“亿书”这样的项目,会涌现越来越多的区块链开发者。区块链项目一般是基于开源的工作方式,所以任何人随时随地都可以接入互联网即可获得开源的代码、文档并在之上做出贡献,亦即是说全社会的力量可以贡献于同一份代码和文档系统。而传统项目往往受制于安全管理,不只是在不同公司之间,即使在一个公司内部,一个产品的代码往往也被分割为几块,分别由不同的人群访问和维护。同时由于代码牵涉到商业利益,即使发现错误,开发者也不一定有权力去做对应的修改,这些都使代码的质量不断下滑。但在区块链项目中,开发者借助互联网,在全社会范围内开源软件,可以形成自己的清晰目录,任何人都可以很方便的检索公开信息,这使得代码重用变得非常容易,而不存在重复制造轮子的现象。本书分享的源码Ebookcoin,与Lisk一样都是Crypti的一个独立分支,具有侧链功能,可以承载多种去中心化的应用。因此,对于研究Crypti、Lisk,还是Ebookcoin,或者学习Node.js前后端开发技术的朋友,本书都将提高你的学习与开发效率。

    长铗 巴比特创始人兼CEO,著名科幻作家 2016年10月14日