链上链下协同计算

3) 基于同态加密的构造方法 。
目前已有较多项目尝试使用安全多方计算协议,如Defi、等 。
激励驱动型链下计算
(1)概念
该模式假设参与计算的各方都是理性的经济人(即参与方以最小的代价最大化自己的利益) 。该模式主要涉及到两类角色:处理计算任务的求解者()、重新计算求解者所处理过的计算任务并检验其是否有误的验证者 。但在一些方案中会引入更多的角色 。
(2)实现情况
激励驱动型链下计算中最知名的解决方案莫过于,其基本原理为:
用户提出计算需求并支付佣金,如果某个链下的求解者认为佣金价格符合预期,则进行计算并公布结果 。此外,求解者也需要提供一笔保证金 。
相对于用户与求解者而言的第三方——验证者(同样位于链下),可重新运行上述计算并检验其是否有误;如若发现求解者给出错误结果,则可以发起挑战,提交到链上仲裁 。同样地,验证者需要提供一笔保证金 。
通过链上的智能合约,求解者与验证者共同进行一个验证游戏,而用户置于链上的代码则被用于验证求解者、验证者双方答案的真伪,正确一方获取佣金,另一方则需支付整个验证过程所产生的gas费用 。
还设计了累积奖金()机制,用以维护验证者生态环境 。系统会随机选择一些交易,要求求解者同时提交正确答案和强制错误(Force error,即错误的答案),二者之一会上链请求验证,当强制错误被验证者验证并挑战时,求解者无需遭受惩罚 。所有事务的佣金将被抽取一小部分,汇聚成奖金池,用以在累积奖金机制中支付给挑战成功的验证者 。
脱链模式
我们现在介绍一组已识别的脱链模式,它们可以单独使用或组合使用,以将计算和数据移出区块链 。每种模式都旨在维护区块链的关键属性,并包括确保它们不会受到不必要程度的损害的技术 。
挑战响应模式
背景:智能合约对具有明确定义的最终状态的状态机进行建模 。状态转换的计算成本很低,但检查给定状态是否为最终状态是昂贵的 。
解决方案:
其他客户端可以通过提供有效的状态转换来证明声明错误 。使用这种模式,计算永远不必在链上执行
示例:国际象棋的最终游戏条件太昂贵而无法在链上检查 。然而,玩家可以很容易地检查链下的情况 。因此,玩家无需在智能合约中检查最终游戏条件,而是简单地声称检查伙伴 。如果声称是错误的,他的对手可以简单地通过提交一个有效的动作来证明他是错误的 。如果声称是真实的并且对手无法提交有效的移动,则获胜者将被支付 。下图概述了国际象棋的完整挑战响应协议,还考虑了平局和超时 。
讨论:这种模式允许在智能合约充当状态机的场景中有效地脱链计算 。由于它允许将复杂的操作完全移出链外,并规避了链上交易的复杂性上限,因此它可以扩展可能用例,并有可能节省成本 。但请注意,该模式增加了链上交易的总量,这需要仔细计算成本 。此外,还需要提高参与实施该模式的智能合约的各方的可用性,因为使用超时对于确保进度至关重要 。
实施:这种模式不需要除了智能合约之外的其他技术 。
链下签名模式
背景:两个网络参与者知道他们将在未来执行一组交易 。他们想降低这些交易的成本,或者想对其他网络参与者隐藏它们 。
解决方案:两个参与者一起指定一个包含函数的智能合约,该函数将作为参数给出的外部状态应用于合约状态 。此功能包括签名检查,以确保两个参与者都同意状态更改 。只有当两个参与者的有效签名都提供了请求的新状态时,才会应用新状态 。该合约被部署到区块链上,并且两个参与者都可以选择存款 。然后,参与者在不涉及区块链的情况下执行纯粹的脱链和点对点交易:一个参与者计算一个新状态,将其包装在交易中,对其进行签名并将其发送给他的对手 。然后接收者检查新状态,在他同意的情况下签署交易并将其发送回发送者 。该交易由双方签署,现在可以由参与者在任何时间点发送到智能合约 。在验证两个签名后,合约会相应地更新其状态 。