什么是gas?
Gas是我们在Filecoin中经常听到的词,Gas译为“汽油费”,Gas最初是在以太坊区块链上实现的,用于衡量消息消耗的计算和存储资源。
从历史上看,在其他区块链中,节点参与者以本机货币指定GasFee,然后根据消息消耗的天然气量向生产节点参与者的区块支付优先费用。
所以,这个名字本身并不是偶然选定的。gas其实类似于汽油,后者作为汽车的能量保证汽车可以正常行驶,以太坊网络上的gas为交易行为进行“加油”,并允许用户执行不同的操作。
在以太坊区块链上的每一个操作,或者准确地说在以太坊虚拟机(EVM)上的每一个操作都有一个相对应的gas成本。例如:将两个数字相加要花费3个gas;获取账户余额会花费400个gas;发送一笔交易花费21000个gas。
智能合约通常包括多个操作,这些操作加起来甚至可以花费数十万gas。
有趣的是,gas价格本身并不能告诉我们在某笔交易中需要支付多少钱。要计算交易费用,我们必须将gas的乘以gas价格。
gas的价格单位为gwei,,gwei的单位比ether要小,1 gwei等于0.000000001 ETH。我们可以把它们之间的关系看成是美分和美元。
例如,假设我们想发送一笔简单的以太坊交易,如果ETH的价格为1800美元。大多数流行的以太坊钱包(如Metamask)会估算必要的gas价格,并允许我们在快速、中等和慢速交易确认速度之间进行选择。让我们假设如果我们想在一分钟内确认我们的交易,钱包估计gas价格将设置为100gwei。
我们现在可以快速计算出,这样一笔交易我们需要支付3.78美元。我们将发送一笔交易的gas成本(2.1万gas)和gas价格(100gwei)相乘,就等于2100000 gwei,也就是0.0021 ETH。在ETH价格为1800美元时,这笔交易的手续费是3.78美元。
我们为什么需要gas
前段时间报道filecoin产生高额gas费的报道相信大家应该有所关注,为了更好的解释gas,我们需要首先理解为什么gas会存在。
任意的一条消息都需被矿工打包上链和销毁,存储矿工自己会设定一个标准的GAS费用的价格。GAS费会由高到低进行标价,标价低的消息有可能不会被打包,GAS费用高的消息将会被优先打包,所以GAS费用是一个市场行为。
当消息出现拥堵的时候,GAS费用会水涨船高,如果不及时处理拥堵的消息就会出现掉算力的情况,如果连续2天算力没有恢复,那就会受到非常严厉的惩罚。
如果没有gas,用户就可以执行一个永远不会停止的程序,其中的原因可能是代码有问题,也可能是有人作恶。为了防止这种情况发生,以太坊引入了与每个操作相关的gas成本,这将防止程序处于永远运行的状态,最终使整个网络陷入停滞状态。
除了gas价格,每笔交易也有一个gas限制,它必须等于或高于成功执行特定交易所需的预期gas数量。
以太坊虚拟机在执行事务中的每个操作之前,会检查是否有足够的剩余空间用于该操作。如果剩余的gas不够,则使用“out of gas”来还原整个交易,并回滚所有状态。即使交易失败,用户仍将为矿工已完成的工作量支付交易费用。这也是为了避免人们发起对网络的恶意攻击。
如果交易消耗的gas比最初预期的少,那么剩余的gas被转换为ETH并退还给发送者。
同样重要的是,以太坊上的所有操作都要有正确的gas成本;否则,它可能成为另一个攻击目标。其中一起攻击发生在2016年,这导致以太坊网络的硬分叉,最终系统重新对某些简单的操作进行了定价。
来源:金色财经