109 / 736RPOW

Reusable Proofs of Work

RPOW:芬尼让计算工作凭证继续流转的实验

计算机完成工作,生成一枚数字凭证。把它交给别人时,怎样才能防止发送者留下一份同样有效的副本?2004 年,哈尔·芬尼做出了一个能运行的答案:转交时让旧凭证失效,再换发一枚新的。RPOW 是通往数字货币的重要实验,但仍需要专门的服务器,也需要信任其技术保护措施。

Reusable Proofs of Work,简称 RPOW,是哈尔·芬尼开发的实验系统,可把 Hashcash 计算工作证明转换为能够继续转交的数字代币。服务器是处理用户请求的服务。每枚代币只能在指定服务器兑换一次,不过收取方会得到一枚计算价值相同的新代币。系统旨在通过 IBM 4758 安全卡以及对运行程序的远程验证,确保兑换遵守规则。它不是去中心化网络,也不是比特币。

2004 年 8 月 15 日,哈尔·芬尼邀请密码学邮件列表的参与者试用他的新实验。其基础是亚当·贝克的 Hashcash:计算机不断尝试不同输入,直到结果满足指定条件。寻找结果需要计算时间,验证已有结果却很快。这类凭证称为 Proof of Work,即工作量证明。在防垃圾邮件的场景里,它可以充当用计算支付的邮票。芬尼想知道,凭证能否继续在人与人之间流转,而不是用过一次就失去用途。RPOW 这个名称的意思,正是可重复使用的工作量证明。 [1] [2] [4]

假设安娜有一枚有效的数字代币,要发给彼得。如果只是传送一个文件,她可能保留了副本。因此,彼得需要把代币提交给 RPOW 服务器,申请兑换。服务器确认它还没用过,记为已消耗,再为彼得的软件准备的新代币签名。此后,安娜手中的旧副本就无法再次兑换。彼得可以把新代币交给伊娃,由她重复同样的步骤。被重复利用的是所转移的价值,而不是同一个永远有效的文件。在收取方成功完成兑换前,发送者仍可能抢先使用原代币。 [2] [11]

输入可以是刚算出的 Hashcash,也可以是尚未使用的 RPOW 代币。输出则是一枚带有 RSA 数字签名的新代币,也就是一份能用数学验证的服务器确认。RSA 是计算这种签名的方法:生成签名需要秘密的签名密钥,验证则使用对应的公钥。签名是可验证的数字数据,不是手写签名的图片。签名可以证明代币的来源,却不能单独说明它有没有兑换过;后者要靠已使用输入的记录判断。后续每次转交都不必重新进行昂贵的 Hashcash 搜索,而是用旧凭证的失效换来新的签名。这不是回收电力,也不能免费复制对过去计算工作的凭证。 [2]

这里的价值是计算难度等级,不是以克朗或美元表示的价格。当时的 Hashcash 使用 SHA-1,把数据变成短小的数字指纹,再寻找开头有规定数量零比特的指纹。比特就是一个二进制数字。每多要求一个开头的零,平均尝试次数大约翻倍。因此,一枚 21 级代币代表的预期工作量与两枚 20 级代币相同,也可以拆成这两枚。合并或拆分时,计算价值的总和必须保持不变。不过,这既不是固定汇率,也不保证购买力;速度更快的计算机能以更低成本生成同样等级的代币。 [2] [10]

Double spend 指同一份价值被花费两次。为防止这种情况,RPOW 需要一份已兑换凭证的名单。完整数据库并不放在安全卡内部,而是保存在普通宿主计算机上。卡内保留数据库状态的校验指纹,查询时验证密码学证明。它利用 Merkle Tree 的原理:把数据指纹组成一棵树,从而用一个共同指纹验证部分数据。这样既要发现记录被篡改,也要发现服务器退回到尚未记录最近一次花费的旧数据库。否则,运营者便可能反复用同一个输入换取新代币。 [3]

服务器在 IBM 4758 内执行敏感操作。这是一块装在普通计算机里的独立计算卡,负责保护签名密钥和敏感状态,防范对象甚至包括宿主计算机的主人。检测到物理侵入时,它能擦除秘密数据。宿主机负责转发消息和保存数据库,但系统设计并不信任它。这正是芬尼方案的核心:不能因为某个人运营服务器,就允许他随意制造新代币。然而,这些保护依赖硬件、程序及密钥保护都正确无误,并非无条件保证系统绝不会被攻破。 [3] [9]

仅公开源代码还不够,运营者可以展示一套程序,却运行另一套。RPOW 因此使用 remote attestation,即远程证明。安全卡会提供关于当前运行程序的已签名信息。有兴趣的人可以用对应工具编译公开代码,把生成的程序映像指纹与卡报告的指纹比较。比较的并不只是源代码文件的文字。签名的可信性沿证书链追溯到 IBM 的密钥。这能帮助验证服务器究竟运行什么程序,却不能证明程序没有漏洞,也不能保证制造商及其认证流程永不出错。 [3] [9]

RPOW 通过兑换数字代币运作,因此有点像 eCash。但最初文档描述的系统并不是用盲签名保护隐私。芬尼依靠的是一直加密到安全卡的通信,以及可供验证、不保留代币签发与接收关联的程序。宿主计算机不应看到代币的明文内容,却仍能观察用户的网络地址、通信时间及大小。同一枚代币被重复提交时,也可能让某些事件相互关联。保存下来的文档已经介绍了对 Tor 的支持。Tor 网络让连接经过多个中继,向服务器隐藏用户原本的网络地址。相比之下,盲签名被列为以后可能增加的功能,不能把这项计划说成文档所述运行方式已经采用的机制。 [8] [10]

RPOW 不只是纸面方案:它有运行中的服务器,也有可使用的客户端软件。但芬尼一开始就说明,这还是早期测试版本,必要的服务器程序更新可能让之前签发的代币失效。项目把代币用于个人、实验和非商业用途,并不把它们当作价值有保证的货币。安全卡也无法强迫运营者始终开着服务器。原项目已经结束,保留下来的网页和代码属于历史资料。因此,对当年 SHA-1、RSA 及硬件的介绍,不是建议今天照此搭建支付服务。 [1] [4] [5] [7]

芬尼想把尼克·萨博 Bit Gold 构想的一部分付诸实践:创建数字物品可以付出成本,之后再让它流转。RPOW 文档也考虑过多台服务器协作,因此把整个设计说成永远只有一台计算机并不准确。不过,每枚代币仍指定了应在哪台服务器兑换;增加机器本身不会消除这种依赖。Bitcoin 走了另一条路:独立节点,也就是运行验证软件的计算机,检查共同规则和公开历史。矿工竞争添加后续有效区块,即与前一条记录相连的一批交易。RPOW 因而帮助我们理解,只有 Proof of Work 还不够:还必须决定大家怎样识别有效的转移顺序,以及在这个过程中需要信任谁。 [1] [6] [11]

要获得更完整的理解,请将本词条与以下词条结合阅读: Hal Finney, Adam Back, Hashcash, Nick Szabo, Bit Gold, Proof of Work. 反向关联还来自: b-money, Bit Gold, Hal Finney.

DOC · 001Hal Finney — RPOW overview一手来源 DOC · 002Hal Finney — RPOW theory一手来源 DOC · 003Hal Finney — RPOW security model一手来源 DOC · 004Hal Finney — RPOW launch announcement一手来源 DOC · 005Nakamoto Institute — archived RPOW source文档 DOC · 006Bitcoin whitepaper一手来源 DOC · 007Hal Finney — What is RPOW?一手来源 DOC · 008Hal Finney — RPOW privacy without blinding一手来源 DOC · 009Hal Finney — IBM 4758 security一手来源 DOC · 010Hal Finney — RPOW frequently asked questions一手来源 DOC · 011Hal Finney — The RPOW world一手来源
修订日期: 来源优先 · 非投资建议