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

我的网站

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

以太坊 Gas 面面观

时间:2021-02-24 14:27来源:未知 作者:admin 点击:
xDeFiLabs 如何优化 gas? 得益于 DeFi 的普及和 Crypto 行业的牛市,大量 DeFi Token 投资者在 2020-2021 年普遍斩获颇丰,人均净值迅速增加。但如果你问他们“最近在以太坊上使用 DeFi 和 NFT 等

xDeFiLabs:以太坊 Gas 面面观

xDeFiLabs 如何优化 gas?

得益于 DeFi 的普及和 Crypto 行业的牛市,大量 DeFi Token 投资者在 2020-2021 年普遍斩获颇丰,人均净值迅速增加。但如果你问他们“最近在以太坊上使用 DeFi 和 NFT 等产品”的体验如何时,回答可就不那么乐观了。因为使用成本水涨船高,打消了长尾用户频繁使用 Ethereum 主网的积极性。

1. 以太坊区块链 Gas 的消耗逻辑:GasPrice 和 GasLimit

在 ETH 区块链系统上,不论进行何种操作,gasPrice 和 gaslimit 都是你在操作时必须付出的、不可不了解的代价。

gasPrice 的单位经常是 gwei,因为 1wei = 10^-18 eth,是 eth 原生的最小单位。1gwei = 10^9wei = 10^-9eth,是每次在 eth 进行操作时所有希望进行操作的人对一个块中打包交易资源竞争得到的值:也就是价高者打包,否则无法打包。

xDeFiLabs:以太坊 Gas 面面观

ETH 的区块在 2017 年底 1C0 狂热和 2020 年初 312 大崩溃时经历了了两次暂时的“满块”,就是用户使用时需要为了区块空间进行竞争,用户过多,导致报价过低的用户无法打包交易,一定时间后交易失败,但是因为 2019 年 ERC-20USDT 的广泛使用和 2020 年 Uniswap 的广泛使用,导致了常态性的满块(总的 gas 消耗 gasLimit 超过了一个块所能承受的 12500000)。

xDeFiLabs:以太坊 Gas 面面观

GasLimit 不仅仅是针对 ETH 的一个块说的,也可以针对一笔交易。比如,metamask 插件一般会在用户使用时,告诉用户 gasLimit,这是一个预估,不是精确值。如果实际使用超过了这个值,调用本身会失败。如果没超过这个值,只会消耗 gas*gasPrice 这个值,最后在一个块里打包的交易总的 gas 也不会超过 12500000 (至少 2020 年 6 月 gasLimit 上限提升,运行到 2021 年 2 月成稿之日看是这样)。

2. 在 Solidity 编程计算层面如何保证更低的 Gas

Solidity 的书写风格有些像 javascript,具体执行层面依赖于编译成 EVM 可运行的操作码。我们先不论他被编译成什么样的操作码能够节省 gas,至少在 Solidity 这一层面做计算,你可以找机会节省尽可能多的 gas。

A、整数计算思维
Solidity 并没有 IEEE-754 所定义的浮点数:这类浮点数计算本来是指导了 CPU 的寄存器设计,若为了共识的“通用性、确定性、一致性”考虑,最常见的数据类型是 uint256,以及用整数先模拟小数,再模拟浮点数的行为,但整体来看,需要编程者有整数思维。

假设你有方便的数学库,你会发现 a.p(2) 其实是不如 a>>1 来的快,因为数学库的乘除法依然是调用此类消耗较小的操作完成的。好在 ETH 开发的先驱者(比如 openzeppellin,gnosis,balancer 等)在实现项目的过程中产出了一些数学库方便别人使用,这些操作包括四则运算、乘方开方,以及指数对数操作。 (责任编辑:admin)

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