在开发DApp应用或者使用以太坊转账的时候,经常会接触到gas, gas price, gas limit几个词汇。很多人被他们绕晕了。本文希望能对这个问题提供一些解读,解决大家普遍的疑惑。
GAS机制的意义
欧神说过,凡事都要看到T-1层的运行规则。我们对于gas,要先理解背后的设计哲学。追踪溯源,我们不得不先从比特币说起。
比特币是一个大的账本,矿工打包区块,给予BTC激励。但受限于网络的速度,区块的大小是受限的,为1M。在这么大的区块链里,能容纳的交易显然是有限的。那么如果交易很多,怎么办?这有限资源配置的经济学问题。兼顾公平,还是效率?
比特币给出的解决方案是这样的,每笔需要收取一定的手续费,谁给的多,谁就更加有机会被打包。完全是利益驱动矿工,非常符合人性。因为区块链的去中心特质,决定了需要用直接的经济效益驱动参与者。
区块链发展到以太坊这里时,我们同样面临类似的问题,如何设定区块的大小,如何收取手续费?能直接照搬比特币的机制吗?
难!以太坊本质是一个超级计算机,交易不仅仅是一个简答的记账,背后有很多合约执行操作。你想想,部署一个复杂的合约要比执行一个简单的以太坊转账要复杂很多,所占用的资源要多很多。这两笔交易,显然是不对等的。那该怎么收费呢?这个地方我们就需要兼顾公平与效率。不能太随意,最好有量化的计算机制。
这个时候,GAS机制的自然引入进来,通过gas去量化交易的复杂度,保证公平性。通过设定gasPrice(基本单位为wei,以太坊的最小单位)来保证效率,保证资源调配的高效。这样, gas x gasPrice就是最终的手续费。这样整个逻辑就很自然。平时不堵,大家意思意思,一旦堵了,就得提高gasPrice,保证交易能给很快被打包。当然,要是不着急,慢慢等也可以。
新的问题来了,gas是如何量化的呢?
说破了其实很简单。合约编译成字节码在EVM中执行,字节码程序跟我们计算机的汇编程序差不多。就是把上面的代码翻译成底层的各种操作,比如加减乘除,数据存储,条件语句这些。这样我们可以把所有的操作符都统计出来,每种运算设定一个gas费用。整个执行

最低0.47元/天 解锁文章
523

被折叠的 条评论
为什么被折叠?



