【论文笔记03】Off-chain Execution and Verification of Computationally Intensive Smart Contracts

计算密集型智能合约的链下执行和验证计算密集型智能合约的链下执行和验证

E. Sariboz, K. Kolachala, G. Panwar, R. Vishwanathan and S. Misra, "Off-chain Execution and Verification of Computationally Intensive Smart Contracts," 2021 IEEE International Conference on Blockchain and Cryptocurrency (ICBC), 2021, pp. 1-3, doi:10.1109/ICBC51069.2021.9461142.

原文作者:E. Sariboz, K. Kolachala, G. Panwar, R. Vishwanathan and S. Misra*
原文标题:Off-chain Execution and Verification of Computationally Intensive Smart Contracts*
原文链接:https://ieeexplore.ieee.org/document/9461142
原文来源: ICBC 2021
笔记作者:quangaoyuan
笔记小编:quangaoyuan

0x00 关键词

智能合约验证、可验证计算;

0x01 摘要

我们提出了一种新的框架,用于计算密集型智能合约的链下执行和验证。我们的框架是第一个避免跨多个承包商重复计算工作的解决方案,不需要可信的执行环境,支持没有确定性结果的计算,并支持用高级语言编写的通用计算。我们的实验表明,一些密集型应用程序可能需要多达 1.41 亿个 gas,大约是目前以太坊计算的区块 gas 限制的 71 倍,并且可以通过利用所提出的框架来避免。

0x02  INTRODUCTION

智能合约是驻留在以太坊区块链上的计算机程序,在满足预定条件时自动执行。根据复杂性,每笔修改智能合约状态的交易都会消耗一定量的气体(以太坊区块链中的成本单位)。因此,将智能合约用于图像识别和零知识证明等计算密集型应用程序变得不可行。在本文中,我们将此类合约称为计算密集型智能合约(CIC)。

最近的研究探索了替代解决方案,以消除成本并使 CIC 执行具有可扩展性。为此提出的解决方案要么在一小部分节点上复制 CIC 的执行,要么需要一个可信执行环境 (TEE),从而产生更大的信任。上述方法的替代方案是将 CIC 计算外包给第三方,第三方进行计算并为其生成正确性证明,可以在多项式时间内进行验证。使用这种方法,客户端可以以比重新执行更有效的方式验证返回的计算的正确性。我们的工作属于可验证的计算类别,我们提出了一个解决方案这是可扩展的,避免重复计算,并且不需要防篡改硬件或受信任的执行环境。

0x03  相关工作

可信硬件:在 [1]-[3] 中,TEE 已被用于缓解智能合约的可扩展性和机密性障碍。然而,最近的研究已经确定了对 SGX 的几种攻击——我们避免了影响,因为我们不需要 SGX [4]-[10]。复制计算:[11] 提出将 CIC 执行外包给一组委托人;但是,该模型存在大量重复计算的开销,并且缺乏对随机计算的支持,我们在工作中解决了这些问题。可验证计算:交互式证明 (IP) [12] 和概率可检查证明 (PCP) [13] 奠定了 [14]-[21] 中研究的可证明可验证计算的基础。尽管有希望的渐近性,但这些证明系统非常不切实际,并且可能需要非常长的时间来验证具有小输入大小的实例 [22]。另一项工作将上述理论基础应用于[23]-[25]中研究的云计算设置的实践;然而,它们远不能用于通用计算。 [27] 提出采用 zk-SNARKs [26] 来验证智能合约;但是,他们的解决方案要求应用程序代码以他们设计的特定领域语言编写。这与我们的工作不同,因为我们的工作支持用高级语言编写的计算。

0x04  结构框架

我们框架的组成部分如下:希望外包计算密集型工作的客户(Alice),为客户进行计算以换取一些金钱奖励的工人(Bob),矿工(Charlie)来验证交易和经纪人合约,一种智能合约,充当客户和工人之间的中介。

客户的操作:Alice 将要执行的智能合约的详细信息写入她可公开访问的服务器 图 1 中的第 1 步。详细信息包含执行所需的输入、给予工人的费用、工人需要存入以进行注册的抵押品对于这项工作,以及她愿意为计算结果分配的最长时间传送给她。她通过在第 2 步中与经纪人合同交互,将这个工作创建请求发布到区块链。这个请求包含她的服务器的 URL,其中包含所有上述详细信息。

 Worker 的操作:如果 Bob 有兴趣执行计算,他会去指定的服务器 URL 检查他是否有足够的资源在步骤 3 中请求的时间间隔内完成计算,并通过将所需的抵押品存入 Broker 来注册作业第 4 步中的合同。他在第 5 步中从 Alice 的服务器检索计算所需的输入。他在第 6 步中在本地执行计算,生成正确性证明,并在第 7 步中将它们上传到他的服务器。然后他将 URL 提交给通过在第 8 步中调用 getPaid() 函数来进行验证的经纪人合同,以获得内部启动证明验证机制的工作的补偿。

矿工操作:Charlie 获取 Bob 发布的交易,执行 Broker Contract,并在步骤 9 中从 Bob 的服务器检索结果和证明。Broker 合约检查证明是否在指定时限内发布,验证证明和结果,并将它们发布到 Alice 的服务器。如果在步骤 10 中验证成功,Broker Contract 会输出一笔交易,向 Bob 支付费用并退还他的抵押品。但是,如果验证失败,Alice 会退还她的费用并获得 Bob 的抵押品。

 

0x05  结果与评价

所提出的框架的性能已经在 [22] 中的四个计算密集型应用程序上进行了评估。

矩阵乘法将两个 n×n 矩阵 M1 和 M2 作为输入,并计算 M1 · M2。图像匹配采用 kw × kh (kw = kh = 3) 大小的图像内核并计算图像中图像和内核之间发生最小差异的点。多变量多项式评估采用 m 次多项式,包含 (m + 1)k 个系数,并在作为输入的 k (k = 5) 个变量上对其进行评估。 Floyd-Warshall 算法采用 n × n 矩阵表示 n 顶点图的邻接矩阵。它计算所有顶点之间的最短路径。

根据我们的计算,考虑到目前的区块天然气限制,在智能合同中实施这些应用所需的天然气是不可行的≈1200万[28],例如,用于图像匹配的1.42亿气体单位。 

评估:上述应用程序是用C编写的,首先转换成一个算术电路。接下来,皮诺奇编译器用于生成二次算术程序(QAP)、评估和验证密钥[22]。在我们的实验中,密钥生成阶段由客户机完成,并与QAP一起提供给工作人员。在收到这些参数后,工作人员执行代码并将证据发布到他控制的服务器。

我们的实验结果(详见表一)表明,我们的框架为所有应用程序的不同大小的输入参数提供了快速验证。该框架在所有情况下都保持288字节的恒定验证大小。正如预期的那样,我们注意到,随着应用程序参数大小的增加,验证生成时间增加。除了图像匹配之外,所有的增长都是线性的,这是由于乘法门和等价算术表中的等式比较的数量增加而导致的超线性。

0x06 结论

我们通过使用激励机制将CICs卸载到计算能力强大的实体,提出了一种新的CICs执行和验证框架。与其他提出的解决方案不同,我们的工作防止了重复计算,消除了对TEE的需要,并支持随机结果的计算。

猜你喜欢

转载自blog.csdn.net/weixin_40889839/article/details/123323652