b-money


译文。

我对 Tim May 的 crypto-anarchy 十分着迷。与传统 “anarchy” 相关社区不同,在一个 crypto-anarchy 中,government 不是被暂时销毁,而是被永久禁止,并且是永久不必要。这是一个暴力威胁无能的社区,因为暴力是不可能之事,暴力不可能,是因为社区参与者无法被与其真实姓名或实际地点联系起来。

到目前为止,甚至在理论上,还不清楚这样一个社区如何运作。一个社区是由其参与者的合作来定义,而高效合作需要一种交换媒介(货币)以及一种强制执行合约的方式。传统上,这些服务由政府或政府资助的机构提供,且只面向法人实体( legal entities )。在本文,我描述一种协议,通过此协议,这些服务可提供给不可追踪的实体,也可由不可追踪的实体提供。

确切而言,我将描述两种协议,第一种是不现实的( impractical ),因为它大量使用了一种同步(synchronous)、不受约束( unjammable )的匿名广播通道。然而,它将促动第二种,更实用的协议。在这两种情况下,我将假定存在一个不可追踪的网络,其中,发送方和接收方仅通过数字假名(即公钥)进行辨认,每个消息都由其发送方签名,并加密发给其接收方。

在第一种协议,每个参与者维护一个( 独立 )数据库,这个数据库包含-每个假名拥有多少货币。这些账户共同定义了货币的所有权,这些账户如何更新是此协议的主题。

1.货币的创造。任何人都可通过广播一个之前未被解决的计算问题的解决方案,来创建货币。唯一条件是,必须容易确定解决该问题所花计算工作量(实际或智力工作量),该解决方案在其他方面必须不具价值,不管是实际还是智力价值。所创建货币单位量,等于计算工作成本(以一个标准商品篮子计[in terms of a standard basket of commodities])。例如,如果一个问题在电脑上至少要花 100 个小时来解决,需要在公开市场上花 3 个标准篮子的货币来购买计算机上 100 小时的计算时间,那么,该问题解决方案得到传播时,每个人都把 3 个单位记入传播者账户的贷方( everyone credits the broadcaster's account by 3 units )。

2.货币的转移。如果 Alice(假名 K_A 的拥有者)希望向 Bob (假名 K_B 的拥有者)转账 X 单位的货币,她广播由 K_A 签名的消息 “I give X units of money to K_B” 。在此消息广播时,每个人都把 X 单位记入 K_A 帐户的借方,把 X 单位记入 K_B 帐户的贷方,除非这样会产生 K_A 帐户负余额(在这种情况下,该消息被忽略)。

3.合约的效力。一份有效合约,必须包括对每一违约参与方的最高赔偿。它还应包括,在争议发生时,执行仲裁的一方。合约各方,包括仲裁者,必须在合约生效前,广播其合约签名。在合约和各方签名得到广播之后,每一参与方将其最高赔偿额记入各方账户的借方,将最大赔偿额总和记入一个特定账户( 由该合约的一个安全哈希进行辨认)的贷方。如果对每方而言,借记成功,没有产生一个负余额,则该合约生效,否则该合约将被忽略,这些账户被回滚。样本合约可能看起来像这样:

K_A 同意在 0:0:0 1/1/2000 之前将问题 P 的解决方案发送给 K_B 。K_B 同意在 0:0:0 1/1/2000 之前支付 K_A 100 Mu(货币单位)。K_C 同意在发生争议时进行仲裁。K_A 同意如果违约,支付最多 1000 Mu。K_B 同意如果违约,支付最多 200 Mu。K_C 同意如果违约,支付最多 500 Mu。

4.合约的结束。如果一个合约无争议地结束,则各方广播一条已签署消息“The contract with SHA-1 hash H concludes without reparations.”,否则,则可能是“The contract with SHA-1 hash H concludes with the following reparations: ...”。所有签名得到广播后,每个参与方将各方最大赔款额记入各方账户,移除合约账户,然后,如有赔款,则根据赔款计划,将相应金额,记入各方账户的借方或贷方。

5.合约的执行。如果一个合约的各方,甚至在仲裁者的帮助下,也无法就适当结论达成共识,那么,每一方广播一份本方建议的赔偿/罚款计划以及对其有利的任何论据或证据。每位参加者就实际赔偿及/或罚款作出一个决定,并相应修改其账户。

在第二种协议中,包含“谁拥有多少货币”的账户,由一小部分参与者(从现在开始,称其为服务器)而不是每个人来保管。这些服务器通过一个类 Usenet 的广播通道被链接起来。在这个通道上进行广播的交易消息的格式,与第一种协议相同,但是每笔交易的受影响参与者,应该对此进行验证——该消息已被一组随机选中的服务器接收,并成功处理。

由于必须在一定程度上信任这些服务器,因此需要某种机制来让它们保持诚实( honest)。每个服务器都被要求在一个特定账户中存入一定量的货币,用作对不当行为证明的潜在罚款或奖励( potential fines or rewards for proof of misconduct )。此外,每个服务器必须周期性地发布其当前货币创建和货币所有权数据库,并对此数据库负有责任( commit to )。每位参与者应对此进行核实——其自身账户余额是正确的,账户余额的总和不多于所创造货币总额。这就阻止服务器(甚至是完全合谋的服务器)永久、毫无成本地扩大该货币供应。新服务器还可使用已发布数据库,与现有服务器进行同步。

本文提出的协议通过为匿名实体提供交换媒介和执行合约的方法,允许无法追踪的匿名实体更有效地相互合作。该协议可能会更高效、更安全,但我希望这是,朝着使 crypto-anarchy成为一种现实和理论可能性,迈出的一步。

-------

附录 A:b-money 创造替代方案 (alternative b-money creation)

在 b-money 协议中,问题较多的部分之一是货币创造。协议的这一部分,要求所有账户保管者对特定计算成本作出决定,并达成共识( requires that all of the account keepers decide and agree on the cost of particular computations )。不幸的是,由于计算技术往往发展迅速,而且不总是公开的,这些信息可能不可获得、不准确或过时的,所有这些都会给协议带来严重问题。

因此,我提出了一个替代性的货币创造子协议,在其中,账户保管者(第一种协议中的每个人,或第二种协议中的服务器)对每个时期要创造的 b-money 量作出决定并达成共识,创造这些货币的成本由一个拍卖(an auction )决定。每一个货币创造周期分为四个阶段,如下:

1.规划。账户保管者计算,彼此协商,以确定下一周期,货币供应的最佳增长幅度。无论账户保管者能否达成共识,他们每个都广播自己的货币创造定额,以及为支持这些数字所做的任何宏观经济计算。

2.出价( Bidding )。想要创造 b-money 的任何人,都会以 <x, y> 的形式广播一个出价,其中,x 是他想要创造的 b-money 量,y 是来自一个预先决定问题类( predetermined problem class )的一个未解决问题。这类别中的每个问题,都应有一个名义成本( in MIPS-years say ),这个名义成本得到公开共识。

3.计算。看到出价后,那些在出价期出价过的参与者,现在可能解决他们出价中的问题( the problems in their bids ),并广播解决方案。

4.货币创造。每个账户保管者按所创造 b-money 的每单位名义成本,接受最高出价(在那些实际广播解决方案的出价者中,接受最高出价者),并相应地,把出价者账户记入贷方。

原文:http://www.weidai.com/bmoney.txt , 1998
作者:W. Dai
编译 & 校对:Chiu & 东林