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

我的网站

当前位置: 主页 > 竞争币 > 以太坊

以太坊 EVM 的这些功能值得考虑删除(3)

时间:2021-03-11 08:45来源:未知 作者:admin 点击:
有何问题? 其实绝大多数不可信任调用的用例都可以通过其他方式绕过去。对于转账,Solidity 文档已经建议大家用 withdrawal 模式代替 transfer 。M-of-N 外部价

有何问题?

  • 其实绝大多数不可信任调用的用例都可以通过其他方式绕过去。对于转账,Solidity 文档已经建议大家用 withdrawal 模式代替 transfer。M-of-N 外部价格信息的输入机制可以很容易地通过为每一个外部输入单独创建一笔交易实现。

  • 这会让 gas 重定价变得很难做,当操作码的 gas 消耗量发生变化,固定 gas 数量的调用可能会不够用。

如何移除?

  • CALL 可以自动将父环境的所有可用 gas 额度都交给子环境。GAS 操作码只需简单地返回交易的初始 gas 数量。

移除有何副作用?

  • 我们知道的 「不可信任调用的合法用例」 主要是第三方赞助调用(译者注:即元交易)。第三方发布一笔事务,事务中包含你希望的调用,当调用发生后,可以自动地向你扣费(你会公布授权他们这样做的签名)。这对用户没有任何 ETH 的智能合约钱包、混币者的隐私保护以及其他一些用例都很有用。我们需要一个有限 gas 数量的调用以确保最终的支付语句真正被调用,而不会因为 gas 不足而被回退。

如何消除顾虑?

  • 矿工可以直接充当中介,如果交易最终没有付钱给他们,他们就可以直接丢弃事务。参见 Phil Daian 的工作,他创建了一个由第三方机器人构成的生态,矿工可以自动产生 「安全」 的批量交易。

  • 在协议内增加一个明确的 「第三方付款人」 的交易类型。参见 EIP 2711 的例子。

还请注意,如果我们想要走得更远,我们还需要调整 63/64 规则使得如果子调用失败,父调用也彻底失败(所以连 1/64 都不剩)。这可能会破坏更多的用例(「如果子调用失败就仅执行一个简单的操作」),但它将确保当 gas 消耗量发生变化时只会引起一种类型的行为变化(原本成功的交易现在会失败)。

SELFDESTRUCT

请看这篇文章。

Gas 退款

这是什么?

调用 SELFDESTRUCT 销毁一个合约,或者将一个存储槽设置为零,会退回 15000-25000 gas。退款会在事务执行的最后触发,并抵扣发送者需要支付的费用。

为何引入?
激励应用开发者践行 「良好的状态卫生」,清除不再需要的存储插槽和合约。

有何问题?

  • 在实践中,几乎没有人真正践行良好的状态卫生。这是因为激励不够高,不值得为此增加代码的复杂度甚至带来安全风险。

  • 退费机制使得 GasToken 兴起。GasToken 有利于将低费率时期的 gas 调配到高费率时期使用,但是它不利于网络,特别是加重了状态规模的膨胀,并使低效的 gas 使用方法阻塞了区块链。 (责任编辑:admin)

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