PieceWork:工作量证明的通用外包控制
摘要
大多数主流加密货币使用工作量证明(PoW)来保障其安全运行,然而PoW存在两个关键的不良特性。首先,所做的计算通常被浪费,除了为加密货币带来安全性外并无其他用途。其次,PoW天然是可外包的,导致算力不平等地集中在少数被称为矿池的实体手中,这些矿池掌控了系统大部分的计算能力。
我们提出一种称为 Piece-Work 的通用方法来构建工作量证明,以解决上述两个问题。本质上,PieceWork允许将一定可配置比例的工作量证明计算外包给工作者。这种受控的外包使得计算工作可以被复用于其他目标,例如防止垃圾邮件和缓解拒绝服务攻击,从而减少工作量证明的浪费。同时,PieceWork可被调整以防止过度外包。这样做会使矿池运营成本远高于当前水平,从而抑制算力向挖矿池的集中。
1 引言
诸如比特币的分布式加密货币[16]依赖于“计算=即金钱”的等价关系。为了生成一批货币,分布式加密货币系统中的客户端执行一种称为挖矿的操作。挖矿需要解决一个涉及重复加密哈希的计算密集型问题。此类问题及其解决方案被称为工作量证明[9]。
按照目前的设计,几乎所有工作量证明(PoW)都存在两种缺陷中的一种(或像比特币一样同时存在两种)。首先,由于工作量证明的计算密集型特性,比特币和以太坊等流行加密货币的矿工需要大量的计算硬件,并消耗电力等自然资源。由于挖矿除了维护区块链安全之外并无其他用途,因此这些资源实际上被浪费了。其次,专用挖矿设备的成本优势以及降低挖矿奖励波动性的需求,促使挖矿活动集中在大型mining pools中。这种权力集中在少数实体手中,削弱了大多数去中心化加密货币(始于比特币)所秉持的平等主义创始原则。
针对高成本且难以重新利用的工作量证明(PoW)这一问题,已有若干提议的解决方案。质数币(Primecoin)[12]是一种替代币,其挖矿过程涉及发现长串质数序列。质数币(Primecoin)的工作量证明在实现区块链安全之外还达成了次要目标,但其副产品的经济价值仍不明确。在永久币( Permacoin)[14],中,挖矿过程被替换为可检索性证明[11],,用以证明矿工正在存储大量数据[14]。然而,永久币(Permacoin)仅能回收少量被浪费的资源,并未实现计算资源的循环利用。事实上,尽管已有这些尝试,比特币常见问题解答1仍坚持声称:“为了保障比特币网络的安全,相关计算必须具备某些非常特定的特性。这些特性使得无法将计算用于其他目的”。请注意,此说法不同于[21],中的边际成本论点,后者认为对于同等安全性,任何比工作量证明更高效的方案都是不可能的。该主张已被[6],反驳,而PieceWork及其他地方的进一步实验则有助于验证或反驳这些对立假设。
为了解决挖矿集中化问题,一些研究探索了防止工作量证明(PoW)外包的方案。例如不可外包刮刮卡难题 [15], 2 、两阶段工作量证明(2P‐PoW) [8],以及签名挖矿 [23]。这些方案的核心思想是将挖矿建立在控制挖矿收益的私钥使用基础上。因此,在矿池等场景下的外包行为会使外包方面临被盗风险。
关于工作量证明外包的其他研究领域涉及针对工作量证明外包攻击的解决方案。在这种攻击中,发现完整工作量证明解的恶意工作者可能选择不将其提交给外包方,这一问题称为扣留。在许多情况下,工作者可以采取这种方式,在几乎无需自身付出成本的情况下损害外包方的整体利润,因为他们仍会因部分解而获得报酬。(另一种此类攻击的形式发生在区块链层面,被称为区块扣留攻击 [4,7]。)
我们的贡献:PieceWork
我们提出PieceWork,这是一种重构标准基于哈希的工作量证明(PoW)的通用方案,旨在解决上述现有工作量证明(PoW)的两个缺点。如我们将解释的,PieceWork 涵盖了多种现有的 PoW 构造思想,特别是来自 [8,9] 的思想。PieceWork 将一个工作量证明(PoW)分解为两个连续的、符合指数分布的计算问题,称为难题。在 PieceWork 中,一个工作量证明(PoW)包含一个 kin 位难度高的内层难题和一个 kout 位难度高的外层难题。我们将这种改进称为两阶段哈希[8]。
内层难题是可外包的,作为称为小难题(puzzlets)的小型工作单元。矿工可以安全地将小难题求解任务委托给其他可能不受信任的工作者。PieceWork中的小难题还具有可重用性,意味着它们可用于区块链安全以外的有用目标,包括垃圾信息遏制[1,5],拒绝服务缓解[10],MicroMint币生成[9,20], Tor中继支付[3],以及更多应用。这些小难题的价值来源于潜在的应用场景,从而创建出一种类似 HashCash的方案,验证者在其中可同时铸造比特币。
我们的小难题(puzzlets)基于[9]中的计算回收思想(“布丁面包协议”)。然而这项工作早于比特币,因此未涉及分布式加密货币以及扣留等问题,而扣留是当前工作量证明加密货币中阻碍计算复用的一个重要障碍。[19],一个显著的障碍,阻碍了当今PoW货币中工作成果的重复利用。
相比之下,外层难题可以是不可外包的,即只能由获得特定PieceWork PoW挖矿奖励的矿工安全地解决。例如,通过利用2P‐PoW机制, PieceWork可导致外层难题的外包会面临挖矿奖励被盗的风险。工作量证明的验证者必须同时验证内层和外层难题的解。
PieceWork 允许调整 kin 和 kout,从而控制加密货币中可允许的外包程度。通过逐步调整 kin 和 kout,PieceWork 还支持从可外包的工作平滑过渡到不可外包的工作的渐进式迁移。通过随时间缓慢引入变化,PieceWork 可使挖矿社区逐步调整其设备和组织结构。
总之,我们在引入PieceWork方面的贡献如下 :
– 统一的工作量证明外包框架:PieceWork 提供了一种统一的 PoW 构造,整合了多种先前提出的关于安全(抗扣留)外包、可重用 PoW 计算、可调节外包以及防止矿池中外包行为的想法。PieceWork 将这些早于比特币出现的技术思想适配到现代加密货币中,并对其进行了精确规范,因为一些已有提议存在未明确的细节。
– 工作量证明复用:通过在 PieceWork 中提供计算复用的具体示例,我们展示了 PoW 既能保障区块链安全,又能服务于实际且具有经济价值的次要目标——从而反驳了比特币维基对此相反的观点。
– 新颖的技术扩展:PieceWork 包含对先前想法的多项新颖技术扩展,包括双重收获( double‐harvesting)。
2 PieceWork:两阶段哈希、难题与碎片谜题
我们现在介绍现有工作量证明(PoW)在PieceWork中的修改细节。
2.1 背景:基于哈希的工作量证明
大多数分布式加密货币中的工作量证明(PoW)都遵循与比特币相同的通用结构,我们以比特币为例进行具体说明。此处我们对工作量证明的描述以及对PieceWork的描述均可推广到其他加密货币(例如,以太坊)。
比特币的工作量证明涉及找到以下问题的有效解 n:
SHA-2562 {v ‖ Bl ‖ MR(TR1,…, TRn) ‖ T ‖ n} ≤ target,
其中 v 是一个(软件)版本号, Bl 表示最新生成的区块,TR 1 ,… TR n 是一组尚未确认的有效交易, MR(x) 表示交易 x 上默克尔树的根, T 是当前 Unix时间戳,n是 N空间中的一个随机数,而 target是一个256位值,用于决定挖矿操作的难度。它会根据最近2016个区块的生成时间进行更新。
我们可以通过定义来抽象掉挖矿问题的细节
X= v ‖ Bl ‖ MR(TR1,…, TRn) ‖ T.
设为特定于一个区块的输入集合。我们用 H(·)表示哈希操作SHA‐2562,为简洁起见,令 Z= target。
比特币挖矿操作涉及,对于区块值 X,寻找一个输入(“随机数”) n ∈ N,使得 H(X, n) ≤ Z。我们将此哈希逆运算问题称为“比特币难题”,旨在实现[14]中所述比特币系统的若干关键特性:可预测的工作量、快速验证和抗预计算。
2.2 基础分件工作方案
PieceWork 依赖于一种我们称之为两阶段哈希的分层哈希形式。在 PieceWork 中,我们将哈希函数 H 划分为一对顺序组合函数 Fin 和 Fout ,我们将之称为“内部”和“外部”难题。全局难题的形式如下:
H(X, n)= Fout(X, Fin(X, n; s)).
当内层和外层难题的计算结果均低于各自的目标值时,即被视为有效。此处, s 是用于难题块回收的额外输入,将在第3节中详细讨论。3。
我们将内部函数称为碎片谜题。一个碎片谜题的有效解是一对(n, s),满足 I= Fin(X, n; s) ≤ Z一in。个碎片谜题的解(n, s),如果满足附加条件 Fout(X, I) ≤ Zout,则也是全局难题的解。
Fin和 Fout都必须满足额外的理想条件:易于计算,且在各个实例间的输出独立同分布。前一个条件使得全局方案中所需的快速验证成为可能,后一个条件则允许通过调整目标值来可预测地调节指数型区块生成曲线。通常情况下,我们关注哈希函数,或对常数时间函数的结果进行哈希的函数,以实现后者。这包括比特币中当前使用的双SHA256方案。
在PieceWork中,外包方将一个碎片谜题提供给工作者,并指定 s的值(选择方式在第3节中说明)。因此,碎片谜题 P的形式为:
P=(X, Zin, s).
工作者的任务是找到一个 n,使得(n, s)能够解决一个碎片谜题。工作者的预期计算量为R/Zin次 Fin的执行(其中 R是哈希函数值域的大小)。然而,外包方可以快速验证解(n, s)对于 P的正确性。每个对 P的解代表了一个或多个潜在的有效原像,供外包方尝试。平均而言,
outso外包商必须尝试 R/Zout个输入以 Fout找到全局难题的解决方案 .
可调性
将内层和外层难题调整到任意期望的难度是直接且简单的。通过设置 Zin和 Zout,可分别对内层和外层难题强制执行期望的哈希迭代次数 2kin和 2kout。这种可调性是 2P‐PoW [8],的一项特性,因此 PieceWork 可以支持从高度可外包的挖矿向抗外包挖矿的迁移。
外层难题的不可外包性
通过适当选择Fout,可以使外层难题变为不可外包的,如第3.2节所述。
2.3 完整PieceWork方案:增加扣留抵抗能力
当前形式的比特币难题实际上已经是可外包的。矿池可以将区块求解难题外包给矿工(在我们的方案中称为工作者),并奖励这些矿工完成部分工作量证明,或满足低于全局难度目标的较弱目标的区块问题解决方案。
当工作者能够判断她的工作是否构成完整的工作量证明解时,就会出现区块扣留问题。在上述指定的PieceWork基本版本中,工作者可以判断碎片谜题 I 是否代表全局难题的解,从而选择将其扣留而不提交给外包方。解决此问题的一种方法是向工作者隐藏其对外包谜题的解答是否构成完整的工作量证明解。在 PieceWork中,通过对基本PieceWork方案进行轻微增强即可实现这种隐藏,具体如下:
P W(X, n)= Fout(X, Fin(X, n; s, rin), rout), (1)
其中 rout 是由外包方生成的密钥值, rin= H(rout) 为某个合适的哈希函数 H。因此,一个碎片谜题的形式为:
P=(X, Zin, s, rin). (2)
注意 rin 和 rout 之间的依赖关系至关重要:如果 rin 可由外包方独立于 rout 选择,则外包方可以针对单个碎片谜题解 I 求解出一个有效的 rout,并期望通过 1/Zout 的工作量轻松找到全局难题的解。最后,该方案依赖于外包方仅对已解决的小难题(puzzlets)向工作者进行补偿,从而排除“碎片谜题池”(可能扣留完整的碎片谜题解)。工作者的方差及其他具体参数将在后续工作中讨论。
扣留问题在 2015[19] 的比特币开发者邮件列表中被列为紧急事项。该邮件列表中关于区块扣留的帖子提到了一种“两阶段目标机制”,这种机制可能与我们的方案相似;我们仅能找到一个公开提及此类方案细节的参考资料 [22]。该解决方案存在潜在的舍入偏差,缺乏完整的规范说明,并且晚于Back为解决原始HashCash实现中的类似扣留问题而开发的方案 [2]。
3 应用 PieceWork
现在我们解释PieceWork中的小难题(puzzlets)如何用于回收计算。然后展示 PieceWork如何用于防止外包。
3.1 可外包的碎片谜题应用
在PieceWork中,一个碎片谜题解对一个外包方具有易于量化的期望值。假设 V是由成功挖出的区块生成的价值。那么,一个碎片谜题解的期望值是 V/Z。它们的价值是概率性的,很像 [13],中的微支付,但外包方可以通过加入传统矿池使其变为非概率性。
通过合理设置 s,可外包的碎片谜题可用于在其他领域执行有用的计算。优先选择具有短超时的交互式应用,以便碎片谜题有较大概率适用于当前最新的比特币区块。在本节中,我们描述了一些示例应用以及实现这些目标的有效 s 选择。
垃圾信息遏制
杜沃克和诺尔 [5]提出了一种方案,其中电子邮件的发送者需附上一个碎片谜题的解。接收者仅接受带有有效碎片谜题解的电子邮件。在此方案中,碎片谜题是针对接收者特定的,因此潜在的垃圾邮件发送者需要承担为大量接收者解决难题的高昂成本。杜沃克和诺尔的谜题构造较为复杂,但可以轻松替换为基于哈希的工作量证明,如 [1] 中所示。
由于电子邮件接收者无法在发送者传输电子邮件之前轻松地将新生成的、特定于区块的值 s 传送给发送者 before the sender transmits e-mail,我们建议使用 s= H(摘要‖头部),其中 H 为某种抗碰撞性哈希函数。
拒绝服务攻击防范
“客户端谜题”是指客户端必须解决的哈希函数逆向谜题,以从服务器获取资源,例如 TCP 或 TLS 连接 [10,18]或 DNS查询信息。该方案有助于防范拒绝服务攻击,因为攻击者需要解决大量难题。
我们可以设置 s= H(客户端IP‖fresh),其中新鲜度参数是一个共享的随机变量,以防止过期的谜题重用。
微型货币
里维斯特和沙米尔 [20]提出了一种名为微型货币的数字货币系统,其中货币通过哈希碰撞生成。微型货币模仿了实体造币厂的经济模式,即在铸币设计、设备采购等方面存在较高的固定成本,但生产货币的边际成本却很小。类似地,微型货币需要进行大量哈希运算才能找到第一个有价值的碰撞,而在此之后,后续的碰撞会迅速累积。
雅各布森和朱尔斯 [9]展示了如何使计算哈希像的问题变得适度困难,从而使其成为一个碎片谜题。他们的方案可以很容易地在 PieceWork 中实例化。在这种情况下, s是秘密铸造密钥和唯一的小谜题索引的哈希值。(详见 [9]; PieceWork 需要对原始方案进行一些轻微修改。)
在PieceWork中,MicroMint的外包可以结合用于抗拒绝服务攻击的外包,即一个工作者可以同时帮助生成MicroMint货币并协助进行拒绝服务攻击防护。我们将这一理念称为双重收获。
Tor中继支付
别留科夫和普斯托加罗夫[3]提出将挖矿外包作为客户端向Tor 中继支付费用的手段。他们的方案在当前如比特币等系统中存在扣留问题,因此可从PieceWork中受益。在一种变体中,中继运行自己的矿池;在第二种变体中,中继本身作为矿池中的工作者,并进一步外包工作。后一种应用场景促使了三阶段版本的PieceWork的产生。
3.2 不可外包的碎片谜题应用
一种现有的抗外包方案,由2P‐PoW和Sign to Mine分别在[8,23]中非正式地提出,可轻松集成到PieceWork的内层难题中。这些方案涉及基于数字签名而非哈希函数的难题。该提议要求难题的私钥与花费挖矿奖励的私钥相同。在我们的方案中,这将防止外包方集中工作者资源。在PieceWork中,外层函数可以定义为,例如:
Fout= H(SIGprivkey(X, Fin(X, n; s, rin), rout)), (3)
内部函数表示标准的比特币区块解决方案,可选择在较低的可重用难度下进行。但有几点需要注意。首先,我们强调这种不可外包性是启发式的,并没有像[15]中“弱”外包性那样提供形式化的保证。原则上,数字签名可以安全地外包——即“辅助者”可以在不获取私钥的情况下,显著减少签名者在计算签名时所需的计算量。然而在实践中,对于RSA和基于离散对数的签名方案(例如 ECDSA [17])等常规签名方案,目前尚无已知的有效计算外包方案。因此,基于签名的难题可以启发式地认为能够防止外包。
其次,有人认为(包括在[8]的评论中)这种方案可能支持一种外包模式,即工作者将资金存入托管,如果他们窃取挖矿奖励,则会失去这些资金。我们在此省略了对此论点的讨论,但需要注意的是,托管方案实施起来较为复杂,并且会抑制许多工作者的积极性,因为托管金额需要与区块奖励金额相匹配。
4 结论
我们已经证明,比特币和类似加密货币中的计算不必被浪费,并概述了如何将这部分计算的可配置百分比重新用于防御电子邮件垃圾邮件、拒绝服务攻击以及其他微支付类应用。我们在PieceWork中建立了一个定义难题的框架,并在一个统一的模型下整合了2‐Phase‐PoW、签名挖矿以及可调节的可外包两阶段难题,以应对区块扣留问题。我们希望这将有助于未来在外包式加密货币计算领域的研究工作更有效且更严谨地定义其方案。

被折叠的 条评论
为什么被折叠?



