ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ACE:Asynchronous and Concurrent Execution of Complex Smart Contracts

2021-02-02 18:04:00  阅读:343  来源: 互联网

标签:ACE 以太 Contracts gas Concurrent 服务提供商 矿工 执行 合约


  • 论文题目 ACE:Asynchronous and Concurrent Execution of Complex Smart Contracts
  • 发表 Computer and Communications Security (CCS ’20), November 9–13, 2020
  • 作者 Karl Wüst (Department of Computer Science ETH Zurich)
    苏黎世联邦理工学院资讯工程学系在读博士生

简单看了Abstract、Introduction以及Conclusion

先补充点概念知识

1.以太坊智能合约

以太坊提出了智能合约这一概念,使得我们的合约变得程序化代码化成为可能。智能合约是可编程、去中心化且透明的应用程序。以太坊智能合约是指,部署在以太坊上的智能合约,是一段程序,运行在以太坊的虚拟机EVM中,程序可以按照事先约定的某种规则自动执行操作,执行合约条款。

2.以太坊智能合约中提出了gas作为支付费用

gas具体是什么可以参照这篇https://www.cnblogs.com/zdz8207/p/qkl-eth-gas.html

然后来说一下为什么提出这个gas(为什么激活合约需要支付gas)?

答:因为合约上链前是需要被检验的,你想让你的交易马上被打包完成,而矿工在下一个新区块到达前必须亲自执行合约里的交易,这会花费他们的时间和精力,所以你需要付给人家小费,这个小费就是gas支付。

一个交易的交易费由两个因素组成:
gasUsed:该交易消耗的总gas数量
gasPrice:该交易中单位gas的价格(用以太币计算)
交易费 = gasUsed * gasPrice

如果取消这个gas支付机制的话,就会让有些人一直激活合约,陷入死循环。所以为防止过度的计算延迟而采取措施:引入gas-limit这个概念,可以理解为这笔交易允许的最大的消耗Gas的数量,gas-limit也是必要的,限制你每个合约执行的复杂程度。

3.引入gas Limit的问题

以太坊这样的平台机制限制了智能合约的复杂性。因为以太坊基于顺序及全局复制的执行模型,引入gas limit,使得每笔交易的执行有一定的上限,所以合约的计算复杂度就受到限制。
Example:使用选择排序对256个整数排序的简单任务需要17M gas,而当前每个块的限制是8M。
因此,尽管以太坊基于一种原则上允许执行任意智能合约的图灵完整语言,但“任意”部分在实践中受到严重限制

4.并发控制

https://blog.csdn.net/qq_28328381/article/details/82787709
在数据库中,并发控制是指在多个用户/进程/线程同时对数据库进行操作时,保证事务的一致性和隔离性,同时最大程度地并发。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。在某些情况下,这些措施保证了当用户和其他用户一起操作时,所得的结果和她单独操作时的结果是一样的。

解决方案

1.目标

增加每个区块的执行上限,使得每个区块都能执行更复杂的合约,同时保持透明度以及活性(合约执行由一个大型无许可系统控制,而不是单个或几个人控制) 允许安全执行计算更复杂的智能合约
(例如,在像以太坊这样的无许可区块链系统中,计算时间是秒而不是毫秒)。我们认为这将支持各种新类型的合约,例如执行EVM原生不支持的加密操作的合约。

2.方案模型

(参考并发控制协议)
使得合约放在链下异步执行,与共识过程解耦。基于链下模型执行合约(在模型中,合约发起者指定一组服务提供商独立于共识层执行合约代码)
在这里插入图片描述
客户端通过广播交易来部署和调用合约。矿工将交易打包成块。类似仲裁,服务提供商执行合约,并将结果提交给矿工,矿工将把它们添加到新的区块。

三类实体:
矿工:不同于以太坊矿工,只对交易进行有效性检查,对执行结果进行状态依赖检查,然后再将它们添加到新的块中
客户端:以太坊节点
服务提供商服务提供商负责执行合约调用。执行完成后,服务提供商通过网络传输执行结果。服务提供商在执行智能合约(例如在网站上或区块链上发布)之前,必须让潜在客户可以使用他们的公钥。

在该方案中,合约发行者指定一组(n个)链下服务提供商(通过在交易中指定这些服务提供商的公钥来指定),称为执行集,合约由执行集来执行而不需要矿工执行;
允许合约跨服务提供商边界相互调用,即当前服务集内的合约可以调用另一服务集内的合约;
但不要求所有服务提供商必须相互信任。当一个合约调用被执行时,如果指定的n个服务提供者中至少有q个报告了相同的执行结果,那么状态变化将被矿工们接受。涉及多个合约的合约调用需要由所有涉及合约的执行集执行,但不需要合约参与者信任其他合约的执行集。

3.优势

(1)这种执行模型保证了透明度和完整性;
(2)同时受益于链外执行的更高效率和更大的灵活性;
(3)ACE支持一种信任模型,只要指定的服务提供商中有少于q(q/n的一致结果,该结果就被认可)的拜占庭错误,就可以保证安全。

4.实现

在以太坊上进行了方案的具体实现,证明该方案使得复杂合约的执行成为可能




看了个大概,理清了作者解决问题的思路,具体细节就先不究了,不得不说,顶会还是顶会,很多思想方法简直太巧妙

标签:ACE,以太,Contracts,gas,Concurrent,服务提供商,矿工,执行,合约
来源: https://blog.csdn.net/qq_40509206/article/details/113565581

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有