比特币白皮书的排名第一的参考资源就是华人密码学家戴维的 B-money 。B-money 是加密货币的早期版本,也可以说是一个不太健全的比特币。所以学习一下 B-money 能够让我们更好的理解比特币,理解密码朋克们几十年来一直想做的事情是什么,B-money 做到什么程度了,离比特币还差哪几步。

B-money 是一个梦想

B-money 是 1998 年戴维在密码朋克邮件列表中发表的一个 proposal 。所谓 proposal 就是只有文字描述,没有代码实现。B-money 自身也是继承了很多东西,所以说加密货币就是很多代人一起在朝着一个梦想前进。

这个梦想其实也是非常清晰的:数字世界要独立出来,成为一个真正的自由世界。这一点在 B-money 论文的第一段就可以看出来,戴维说

暴力将会被避免,因为你根本找不到参与者的真实姓名和肉身位置。

B-money 的设计目标是一种无法被强势组织 regulate 的钱,是一个匿名,分布式电子现金系统。

POW 造币和分布式记账

通读 B-money 论文 http://www.weidai.com/bmoney.txt ,可以看到 B-money 的核心功能有两个:POW 造币和分布式记账。

先说 POW 造币。B-money 的论文中很大篇幅都是聊如何生产加密货币的。首先,全网认可一个难度足够的数学题。注意,论文里强调,这道题的答案必须是没有任何实际价值的。换句话说,算题的工作量必须纯粹是一种能源消耗,纯粹是为了把钱烧掉。第二步,想要获得加密货币的人投入硬件资源去算这道题的答案,最后得到的结果就是一串数字,也就是 POW 工作量证明。第三步,算出答案来的人就可以广播 POW 到全网,每个网络节点验证 POW 之后,都在自己的账本上给这个人的账户上充值跟被烧掉的钱价值相当的加密币。这就是生产加密货币的全过程了,我这里做了适当的简化。

再说交易过程。B-money 采用的是分布式记账的方式来追踪加密货币的交易。发送方和接收方都没有真实姓名,都只是公钥。发送方用私钥签名,然后广播交易到全网。每个网络节点都会保留一个包含所有人的交易记录的大账本。注意,这里有一个跟比特币的差别:B-money 中,交易是通过 Contract 来实现的,每一个 Contract 都需要有仲裁人参与。

这就是 B-money 最核心的技术思路了。

B-money 与比特币的差距

B-money 继承了前人用 POW 造币的思想,并且把记账工作分配到了一个点对点的网络上,以今天比特币的标准反观,一切都走在了正确的道路上。但是 B-money 距离一个可以实用的 p2p 现金系统还相差非常的远。这种差距可以用一句话概括:没有共识系统,还必须基于信任。

由于 B-money 没有找到解决双花问题的方法,所以交易过程还是要基于第三方见证人的。也就是说还是要基于信任。POW 只能保证,一串数字的确对应了现实世界的对应的能量消耗,但是如果没有一个中央记账人,就不能防止这串数字被同一个人多次使用,也就是不能解决双花问题。比特币的最核心贡献就是通过激励解决拜占庭将军问题,从而达成了全网对同一份账本的共识,解决了双花问题。

从具体细节上来讲,B-money 还有很多地方跟比特币有巨大的差异。首先 B-money 中也没有链的概念,每个节点都是只是尽量去收集网络上的交易,并保存到自己的机器上。比特币通过链,让后来区块的安全去累加加固以前区块的安全,是非常厉害的安全思路。第二,对于如何控制发行总量也没有明确的规定。B-money 的思路非常的单纯,就是用钱换加密币,所以不设置总量上限似乎也是合理的,但是比特币的总量恒定,其实是非常强的一种激励机制,保证了网络能够迅速落地,B-money 的激励机制是缺失的。第三,B-money 没有实现分布式网络上的时间戳服务器,也就是说不能对交易进行排序,这也是跟比特币的巨大差距。当然,上述三个问题,从 B-money 基于信任的模式看来,也可能都不是问题了。

总之,B-money 跟比特币差距还是很大的。戴维本人也说,我怀疑中本聪根本没有事先看过我的论文,他是完成比特币之后才发现的 B-money ,然后致敬我一下而已,我对比特币的贡献是非常有限的。

总结

关于 B-money 的简介就到这里了。重点有这么几个:首先 B-money 是密码朋克们对研发数字世界中的独立自主的货币的又一次探索。第二,B-money 采用了 POW 的形式把肉身世界的钱,存入到了数字世界,并采用分布式记账的方式来记录交易。第三,B-money 最终没有能实现可行的 P2P 现金落地方案,因为没有实现共识层。最终补充一个有意思的点:通过 B-money 使用 POW 的方式来看,POW 就其自身而言,并不是一个共识机制,而只是一个把系统外的钱转换成数字系统内的钱的一种方式。我们所说的 POW 共识机制中,POW 只是一部分。

参考: