织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 区块链

V神设计理念公布 细数以太坊潜在的优缺点(10)

时间:2021-07-13 10:43来源:未知 作者:admin 点击:
当一个合约发送消息给另一个合约,可以对这个消息引起的子执行设置一个 gas 限制。如果子执行耗尽了 gas,则子执行恢复原样,但 gas 仍然消耗。(校对

  •   当一个合约发送消息给另一个合约,可以对这个消息引起的子执行设置一个 gas 限制。如果子执行耗尽了 gas,则子执行恢复原样,但 gas 仍然消耗。(校对注:截至本文校对之时(2021 年 7 月 9 日),这一点还未改变,但它在未来有可能会改变。见《值得考虑删除的 EVM 功能》)

  •   上述提到的几点都是必须满足的,例如:

    •   如果交易不需要指定 gas 限制,那么恶意用户就会发送一个有数十亿步循环的交易。没有人能够处理这样的交易,因为处理这样的交易花的时间可能很长很长;但是谁也无法预先告知网络上的矿工,这就会导致拒绝服务的漏洞产生。

    •   一种替代严格 gas 计数的方法是时间限制,但它不可能有用,因为它们太主观了(某些计算机比别人的更快,即使大家的计算机都一样也仍然有可能出现差池)。

    •   startgas * gasprice 的整个值,在开始时就应该设置好,这样不至于在交易执行中造成该账户 “破产”、无力继续支付 gas 费用。一边执行一边检查余额也不行,因为账户可以把余额放到别的地方。

    •   如果在 gas 不够的情况下,交易执行不会完全复原(回滚),合约就必须采用强有力的安全措施来防止合约发生变化。

    •   如果子限制不存在,则恶意账户可以对其他合约实施拒绝服务攻击。攻击者可以先与受害合约达成一致意见,然后在计算过程开始时插入一个无限循环,那么发送消息给受害合约或者受害合约的任何补救尝试,都会使整个交易死锁。(校对注:此句亦难解。)

    •   要求交易发送者而不是合约来支付 gas,这样大大增加了开发人员的可操作性。以太坊早期的版本是由合约来支付gas的,这导致了一个相当严重的问题:每个合约必须实现 “门卫” 代码,确保每个传入的消息为合约提供了足够的以太币供其消耗。

      gas 消耗计算有以下特点:

    •   对于任何交易,都将收取 21000 gas 的基本费用。这些费用可用于支付运行椭圆曲线算法所需的费用(该算法旨在从签名中恢复发送者的地址)以及存储交易所花费的硬盘和带宽空间。

    •   交易可以包括无限量的 “数据” 。虚拟机中的某些操作码,可以让收到这样交易的合约访问这些数据。数据的 “固定消耗量” 规则是:每个零字节 4 gas,非零字节 68 gas。这个公式的产生是因为用户向合约发送的交易中,大部分的交易数据由一系列的 32 字节的参数组成,其中多数参数具有许多前导零字节。该结构看起来似乎效率不高,但由于压缩算法的存在,实际上还是很有效率的。我们希望此结构能够代替其他更复杂的机制:这些机制根据预期字节数严格包装参数,从而导致编译阶段复杂性大增。这是三明治复杂模型的一个例外,但由于成本效益比,这也是合理的模型。 (责任编辑:admin)

    织梦二维码生成器
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线----------------------------
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    评价:
    表情:
    用户名: 验证码:点击我更换图片
    栏目列表
    推荐内容