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

我的网站

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

以太坊 Gas 面面观(2)

时间:2021-02-24 14:27来源:未知 作者:admin 点击:
这里有一篇不错的四则运算以外的计算方案 https://medium.com/coinmonks/math-in-solidity-part-5-exponent-and-logarithm-9aef8515136e。 B、规避循环,除非你清楚你的计算复杂

这里有一篇不错的四则运算以外的计算方案 https://medium.com/coinmonks/math-in-solidity-part-5-exponent-and-logarithm-9aef8515136e。

B、规避循环,除非你清楚你的计算复杂度

当循环条件是开放的时候,比如 for 循环第二个条件为空,或者 while 语句判断条件为真的时候,很容易无法估计循环体内计算对 gas 是怎样的消耗,会让 gas 消耗不可接受,或者 metamask (以及其他工具)无法正确估计 gasLimit 导致 ETH 合约调用失败。

除此之外,如果特别熟悉 solidity 合约书写的科学家能够在数学上花点功夫的话,建议参考《Hacker’s Delight》,相信不仅对理解数学库,而且对于简化代码 gas 消耗方面大有益处。比如在计算机发展过程中,我们看到了雷神 3 算法对牛顿法的应用 https://en.wikipedia.org/wiki/Fast_inverse_square_root。

尽管这个算法依然仅是对 IEEE-754 标准浮点数有效,但是在 solidity 中,一直有专业的算法优化者将暴力计算缩减为损耗非常小的算法,比如: https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/libraries/Math.sol。

3. 在 EVM 层面如何保证更低的 Gas

根据 https://medium.com/coinmonks/on-efficient-ethereum-addresses-3fef0596e263 给出的线索,以太坊黄皮书给出了详细的费用明细。

xDeFiLabs:以太坊 Gas 面面观

这篇文章中提到了 Gtxdatazero 和 Gtxdatanonzero 的费用差别,这个核心差别的逻辑就是:ETH 地址里面的 00 越多(注意,是成对出现的 0),不管这个地址是合约的,还是普通人转入转出地址,都或多或少的节省 0.4-5% 的 gas 费用。

除此以外,参考各种操作对应于 EVM 上的操作码,你也可以尽可能的规避高 gas 操作,使用低 gas 操作,构建 solidity 代码。

对普通人来说,拥有一个 0x00 开头的地址是很容易的,一个最实用的工具是(https://github.com/johguse/profanity),可以为你生成 0x00 开头的地址。你甚至还可以加--contract 参数,从而你得到的私钥下创建的第一个智能合约就拥有了这类地址。

4. GasToken 家族:另一种实操

这是一种针对销毁行为构建可 refund gas 的实际操作案例。GST 和 GST2 是一些科研人员根据 Gsclear 和 Gssuicide 退还 gas 费用的特性建立的,其中 GST 是基于释放存储的(Gsclear 的 refund)而 GST2 是基于释放合约的(Gssuicide),普遍而言,人们会认为 GST2 第二代会更合理,但在技术发展的过程中,其实未必 GST2 会比 GST 一直更有优势:如果 ETH 1.x 技术路线里出现了对于状态存储的优化,GST 也可能迎来复兴。

1inch 的 CHI gastoken 在 GST2 之上,增加了 token 地址中包含的 00 数量,但因为 1inch 更加积极的商业化运营,也让这种操作正逐渐变的广为人知。单纯作为一种补贴手段,市场上也出现了 uGAS,UNDG 等例子。 (责任编辑:admin)

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