b-money 是 Wei Dai 在 1998 年提出的数字货币方案。它描述了两种共同记录余额、处理数字化名参与者之间合约的方法。它并不是已经运行的货币,也不是早期版本的 Bitcoin 软件。后来,Bitcoin whitepaper 把它列为第一条参考文献。
设想安娜在网上请彼得画一幅插图。两人只知道对方的网名。他们想付款,也想约定有人失信时怎么办,却不愿先向银行或其他权威机构公开身份。这正是 Cypherpunks 社群关心的问题:用密码学保护隐私,能让人们做什么?Wei Dai 在 1998 年以 b-money 作出回答。这里的数字化名不只是随意起的用户名,而是公钥:一项无须保密、可供他人核对消息签名的数据。真实身份能否保密,还依赖方案所假定的匿名通信网络。 [1] [2]
在我们的例子里,安娜有 10 个单位,要给彼得 3 个。她会公开一条转账消息,并为它作数字签名。这不是手写签名的图片,而是软件根据消息和私钥计算出的数据;私钥是安娜必须保密的数据。其他人可以用公钥验证,这条指令是否由对应私钥的持有人签署。记账者核对签名及余额是否足够,然后从安娜账户扣除 3,给彼得加上 3;安娜还剩 7。这里并没有发送一个装着硬币的文件,而是在更改余额记录。接着,关键问题就出现了:如果安娜发送相互冲突的指令,所有副本怎样保持一致?单靠签名不能解决这种一致性。 [1] [5]
第一套协议,也就是所提出的规则,让每个参与者维护自己的余额数据库。为了使所有人作出相同更新,它假设存在匿名、同步且无法被阻断的广播渠道。换句话说,消息必须在所需的时间配合下到达所有人,传播不能被截断,而且不能暴露发送者。这远比普通互联网连接的条件严格,后者会延迟,也会丢失消息。因此,Dai 自己就说第一种方案不切实际。它是引出第二种方案的起点,并不是可以直接运行的成品网络。 [1] [2]
余额总得有个起点。Dai 提议,任何人都可以公布一道新的高计算量问题的解答,并获得货币单位。其他人必须容易判断所付出的计算工作,而且解答不应再有其他实用或知识价值。发行量按照计算成本确定,成本用标准商品篮子表示,也就是用一组约定商品比较不同成本。这类似 Proof of Work,即对计算工作付出的证明,但还不是 Bitcoin 的区块挖矿。区块是追加到共享支付历史中的一批交易。它还要求大家接受共同的成本估计,尽管每个人的电脑性能和花费并不一样。 [1] [2] [5]
第二套协议不再要求每个人保存完整账本,而是由一部分参与者承担,他们被称为服务器。安娜和彼得会向随机选出的一部分服务器核实付款是否已处理。由于这需要一定程度地信任管理者,每台服务器都要提供一笔货币保证金,在违规被证明后可用于处罚。服务器还应定期公开余额和货币创建记录。用户核对自己的余额,也检查总余额是否超过已经创建的货币。这些是针对记账管理者的具体约束,不能直接等同于今天 Bitcoin 节点与矿工的安排。 [1]
货币只是 b-money 的一部分。在安娜和彼得的委托中,合约会规定条件及违约时的最高赔偿。双方和可能参与裁决纠纷的仲裁者签署合约,并将规定金额存入专用账户。合约按共同认可的方式结束后,再根据结果分配资金。方案还设想,如果仲裁也无法解决争议,各方公开证据和理由,每位记账者自行判定赔偿或罚款。这也显示出方案的边界:签名能证明同意合约,却不能自己判断插图是否真的交付,更不能保证所有记账者作出相同判断。 [1] [2]
Dai 知道,共同确定真实计算成本很困难。技术不断进步,有些参与者可能拥有别人不知道的优势。因此,附录 A 提出了一种适用于两套协议的替代办法。记账者先规划新增多少单位。竞标者再提出愿意解决什么计算问题,以换取所要求的货币数量,随后完成计算并公布解答,最后按被接受的出价创建货币。这四个阶段——规划、竞标、计算、创建——用来替代单纯估计成本。它既不是 Bitcoin 预先规定的 2100 万上限,也不是 Halving,即每个区块新产生比特币数量的定期减半。 [1] [3]
Adam Back 在 1998 年 12 月讨论了这份方案。他指出的事项包括计算成本不同,以及长期使用固定化名时,付款之间仍然能够建立联系。所以,隐藏真实姓名不等于付款无法被关联。原文确实设计了服务器检查机制,说它完全没有考虑不诚实行为并不准确。不过,它没有给出一套完整、经过实际验证的方法,保证不同故障与争议下的所有数据库都保持一致。提案和运行系统之间的距离,恰恰也体现在这些情形中。因此,阅读留存的讨论,有助于理解方案本身。 [1] [3] [7]
2008 年 8 月 22 日,Satoshi Nakamoto 写信给 Wei Dai,说 Adam Back 向他介绍了 b-money,并询问发表年份以便引用。Dai 回答,自己在 1998 年公布了这份方案。后来,Bitcoin whitepaper 将 b-money 放在参考文献第一项。2009 年 1 月 10 日的另一封邮件中,Satoshi 宣布 Bitcoin v0.1 已发布,并表达了自己的看法:它实现了 b-money 几乎所有的目标。这些记录证明了联系和对先前想法的认可,但不能据此说 Wei Dai 编写了 Bitcoin、两套方案运作相同,或确定有多少具体技术方案被直接继承。 [4] [5] [6]
b-money 是思想史上的重要一站,不是按照这个提案今天就能装进钱包的货币。它没有被实现为文中描述的实际支付系统。它既没有 Bitcoin 的区块链,也没有选择累计工作量最大的有效链这一规则。但它提出了清楚的问题:怎样把数字签名、货币创建和共同记账结合起来,而不是让一家银行管理一切?Bitcoin 后来把自己的答案组合成了运行的网络。阅读 b-money,能够分清数字货币的想法与更难的任务:在未必相互信任的人之间,维持共同而可核查的状态。 [1] [4] [5]
要获得更完整的理解,请将本词条与以下词条结合阅读: Wei Dai, 密码朋克, Reusable Proofs of Work, Proof of Work, Hashcash, Bit Gold. 反向关联还来自: 密码朋克, Bit Gold, Wei Dai, The Genesis Book.