链上链下协同计算( 三 )


将来,这种模式可以扩展到支持对存储在链下的数据的去信任计算:首先,可以将智能合约引用的内容寻址数据发送到合约 。然后,可以在链上验证完整性 。如果成功,智能合约可以修改数据,更新对新数据的引用并将其写入事件 。然后,不受信任的外部工作人员可以将该数据写回从中检索输入的内容可寻址存储系统 。虽然理论上很有趣,但我们还没有观察到这种扩展 。因此,它不是模式的一部分 。
实施:如前所述,内容可寻址存储系统需要与智能合约一起工作 。星际文件系统 (IPFS) 和 Swarm 是两种这样的技术,它们通过哈希处理数据并试图确保可用性和持久性 。
委托计算模式
背景:(a)参与区块链网络的节点想要证明其私有数据的属性而不发布它 。(b) 节点想要执行过于复杂而无法在链上执行的计算 。
解决方案:将计算外包给不受信任的第三方,除结果外,还要生成正确执行的证明 。与其执行计算本身,不如验证链上正确执行的证明
示例:有一个 ID 卡信息哈希的链上列表,指的是被允许调用智能合约函数的人 。现在,列出的任何人都可以证明他有一张身份证,该身份证授权他通过在本地散列他的卡信息并提供包括正确性证明在内的结果来调用合约功能 。证明不需要透露卡上的任何信息 。
讨论:这种模式允许将计算的无信任外包给不受信任的各方 。第三方,也称为证明者,不必透露任何私人输入或证明创建的中间结果 。唯一泄露的信息是证明者知道正确计算输出所需的所有信息 。为此,可以使用非交互式零知识证明,更具体地说是零知识简洁非交互式知识论证() 。
与区块链上的常规计算不同,这种模式允许脱链计算隐藏执行期间使用的信息 。因此,不必公开信息而是计算结果极大地增强了隐私 。此外,可以以验证成本独立于链下计算的复杂性的方式设计证明 。因此,在达到复杂度阈值后,计算的链上验证比其链上执行更便宜 。这个结果可以用来增加区块链的吞吐量 。即使超过链上计算复杂度限制的操作仍然可以使用这种模式在链外执行 。
最先进的非交互式零知识证明需要在生成证明之前执行可信设置阶段 。根据用例的不同,这可能会在整个系统中引入不受欢迎的信任 。此外,计算的证明生成会导致其不可验证执行的开销 。然而,既没有用于方便地规范链下计算的高级语言,也没有用于简单的链上证明验证的工具 。因此,虽然功能强大并且已经在实践中使用,但这种模式目前仅应用于相当特定的场景,例如 zCash,这是一个基于比特币的区块链,它实现了隐私保护交易 。
实施:为了验证智能合约的链下计算,底层区块链需要支持检查证明所需的操作 。这些可以是特定于用例的,也可以是可用于验证任何证明的通用构建块 。虽然 zCash 直接将其特定计算的验证逻辑添加到其协议中,但以太坊计划添加操作以支持使用以太坊改进提案 196 和 197 验证任意。
低合约足迹模式
背景:更改智能合约的状态需要进行链上交易 。为了激励网络处理交易,必须支付费用 。该费用取决于所调用的智能合约功能的复杂性及其对存储的使用 。
解决方案:为了优化费用,合约的设计应尽量减少链上交易的数量和规模 。可以使用以下两种技术来减少占用空间 。
示例:
讨论:这种模式最初可能看起来不像是一种脱链方法,因为它没有明确地将某些东西从链中取出 。但是,它首先会阻止信息在链上存储或处理 。因此,这可能是最不明显,但最常用和最直观的脱链模式 。