中本聪的比特币白皮书最早发布于“密码朋克”。“密码朋克”是什么呢?它是一套加密的电子邮件系统。1992年,英特尔的高级科学家蒂姆·梅(Tim May)发起了密码朋克邮件列表组织。1993年,埃里克·休斯(Eric Hughes)写了一本书,叫《密码朋克宣言》,正式提出“密码朋克”(cypherpunk)的概念。“密码朋克”用户大约1400人,讨论的话题包括数学、加密技术、计算机技术、政治和哲学,也包括私人问题。早期的成员有非常多IT精英,比如我们耳熟能详的“维基解密”的创始人阿桑奇(JulianAssange)、BT下载的作者布莱姆•科恩(Bram Cohen)、万维网发明者蒂姆伯纳斯-李(Tim Berners Lee)爵士、提出了智能合约概念的尼克萨博(Nick Szabo)、Facebook的创始人之一肖恩·帕克(Sean Parker),当然,还包括比特币的发明人中本聪。
据统计,比特币诞生之前,失败的数字货币或支付系统多达数十个,其中不少“密码朋克”的活跃用户就有参与其中。这些失败的实验,也给了中本聪很多灵感和技术上的铺垫。
其中,大卫·乔姆(David Chaum)是20世纪八九十年代密码朋克的“主教”级的人物。他于1990年发明了密码学匿名现金系统Ecash。在Ecash系统中,付款方匿名的,收款方非匿名。Ecash当时风头很劲,包括微软、Visa等大公司都宣称要对其进行支持;大卫·乔姆和荷兰政府签订了合同,并从德意志银行、澳大利亚高级银行、瑞士信贷和日本住友银行获得了执照。可惜,因为当时的市场无需求等问题,Ecash在1998年宣布公司破产了。
英国的密码学家亚当.贝克(Adam Back)1997年发明了哈希现金(Hashcash),其中用到了工作量证明系统(Proof Of Work)。这个机制的原型用于解决垃圾邮件问题,也就是说为了避免被其他人发送包含同样消息的邮件(double-spending)。而对于电子货币,内容的复制几乎是没有代价的,如何保证电子货币没有被交易多次? 这和反垃圾邮件是同样的问题。这就要求计算机在获得发送信息权限之前做一定的计算工作。这种工作量证明机制后来成为比特币的核心要素之一。
下面要说的2个人是,哈伯和斯托尼塔(Haber and Stornetta)在1997年提出了一个用时间戳的方法保证数字文件安全的协议。简单来说就是,用时间戳的方式表达文件创建的先后顺序,协议要求在文件创建后时间戳不能改动,这就使文件被篡改的可能性降到零。这个协议也成为比特币区块链协议的原型之一。
另外一个密码学专家,叫戴伟(WDai)据说可能是一个中国人,他在1998年发明了B-money。B-money强调点对点的交易和不可更改的交易记录,网络中的每一个交易者都保持对交易的追踪。但是在B-money体系中,戴伟并没有解决账本的同步问题。
下面说的这个人,是一位大名顶顶的开发者。叫哈尔·芬尼(Hal Finney)是PGP(PrettyGood Privacy)公司的一位顶级开发人员,也是密码朋克运动早期和重要的成员之一。2004年,芬尼推出了电子货币“加密现金”,在其中采用了可重复使用的工作量证明机制(RPOW)。很多人认为这是中本聪发明比特币的创意来源。
另外介绍下,哈尔·芬尼是第一笔比特币转账的接受者,也是除了中本聪以外的第一个比特币矿工,在比特币发展的早期与中本聪有大量互动与交流,主要是哈尔·芬尼向中本聪报告故障然后把他们搞定。由于身患“渐冻人症”,哈尔·芬尼已于2014年去世,并接受人体冷冻。
中本聪认虚拟货币先驱尝试的失败主要是因为他们大都是中心化的组织结构,跟政府发行的货币体系没有什么两样,一旦为虚拟货币背书的公司倒闭,或保管总账的中央服务器被黑客攻破,这个虚拟货币就会面临崩溃的风险。中本聪对大卫·乔姆的Ecash进行了优化,综合了时间戳、工作量证明机制、非对称加密技术以及UTXO等技术,最终发明了比特币。
比特币刚开始诞生的时候,人们用大写的B开头的Bitcoin指比特币这个网络系统或者网络协议,用小写的b开头的bitcoin指在这个网络上运行的数字货币。由这个大写和小写的不同,我们可以看到,在早期的密码学圈子对于比特币的底层技术还是非常重视的,这种重视程度是远远大于比特币这种代币本身。
后来,随着比特币在全球的发展,比特币在不同的国家受到不同的政策对待。一谈起比特币人们就色变。于是人们就想用另外的词语来代替比特币底层技术。把我们刚才讲到的时间戳、工作量证明机制等等技术综合起来,从中提出了“区块”,英文叫做BLOCK,和“链”的英文为CHAIN,2个单词合并起来,叫“区块链”Blockchain,来指代这所有的底层技术的集合。说到这里,你应该理解了,区块链不是一个单一的技术,而是一系列技术的集合。
比特币诞生之后,出现了大量对比特币的挑战者和改进者。既包括对比特币这种用于支付的虚拟货币的挑战,也包括对比特币底层的区块链技术改进的挑战。
一位叫Charlie Lee的亚裔美国人,认为比特币的SHA256算法不太好,SHA256算法是一种安全哈希算法,对算法感兴趣的朋友可以主动搜索一下。所以,查理提出,现在比特币专业矿机挖矿导致算力太集中,提高了记账的门槛;而且他也认为比特币的确认太慢,十分钟才能确认一次,不能满足现有的支付需求。于是他在2011年10月7日发明了莱特币(Litecoin),意思是一种轻量级的数字货币,同时他也意图通过算法的改变来防止专业矿机的产生。出乎查理·李Charlie Lee意料之外的是,聪明的中国人很快就发明了专门针对莱特币算法的矿机。现在,莱特币的挖矿跟比特币一样,也是专业化、规模化了。后来,又有很多开发者模仿比特币,诞生于世,于是大家就会给这些新产生的货币一个新的名字,叫做“山寨币”或者“竞争币”。
我们再来谈谈比特币的区块链。比特币的区块链作为一种要应用到其他领域的技术设施来说,有很多很多的问题的。首先,比特币的脚本语言对于大多数开发人员来说很难理解并上手。其次,基于上一点,比特币区块链的生态系统基础比较差。它既没有完善的开发工具,也没有丰富的文档和教程。以此来类比安卓iOS开发生态,全球有大量的开发者、运营商、芯片厂商等活跃在整个生态中,并且有科技巨头谷歌联合诸多科技领先企业一起来进行推动,形成了系统的开发工具,有丰富的开发文档和教程遍布全球,而比特币都还暂时做不到这些。第三点,最后,比特币的脚本语言并非图灵完备。图灵完备是指一切可计算的问题都能计算,它是一个虚拟机或者编程语言,通常通过看该语言能否模拟出图灵机,来简单判定是否图灵完备。学计算机的同学知道,一个图灵完备的编程语言可以用于解决图灵机运行的任何计算问题。由于没有图灵完备,所以比特币脚本限制了它的用途。因此,比特币脚本的开发者社区难以形成。
比特币协议的扩展性不足,也是应用过程中令人头疼的一点。例如比特币网络里只有一种符号——比特币,用户无法自定义另外的符号,这些符号可以是代表公司的股票,或者是债务债券等,这就损失了比特币在其他领域的应用可能性。另外,比特币协议里使用了一套基于堆栈的脚本语言,这语言虽然具有一定灵活性,比如使得像多重签名这样的功能得以实现,然而却不足以构建更高级的应用,例如去中心化交易所等。
于是,2013年年末,一位叫Vitalik Buterin的俄罗斯少年发表了以太坊出版白皮书《以太坊:下一代智能合约和去中心化应用平台》,它解决比特币区块链扩展性不足,只能记录交易不能记录其他东西的问题。并且,它通过其丰富的编程语言和完善的开发工具,解决了对开发者不友好的问题。对于用户端,它可以让任何人都能轻松的在以太坊之上建立新的协议和智能合约。
再后来,就有更多的区块链项目开始出现了。区块链在其他领域的应用也得到了尝试。所以说,因为有局限,所以有突破,才有了今天的发展,这用来形容区块链的诞生及发展再合适不过了。