币圈活动项目早知道今日讯:以太坊在区块链上实现了一个运行环境,被称为以太坊虚拟机 EVM。
每个参与到网络的节点都会运行都会运行 EVM 作为区块验证协议的一部分。他们会验证区块中涵盖的每个交易并在 EVM 中运行交易所触发的代码。每个网络中的全节点都会进行相同的计算并储存相同的值。合约执行会在所有节点中被多次重复,这个事实得使得合约执行的消耗变得昂贵,所以这也促使大家将能在链下进行的运算都不放到区块链上进行。
对于每个被执行的命令都会有一个特定的消耗,用单位 Gas 计数。每个合约可以利用的命令都会有一个相应的 Gas 值。
什么是 Gas Price
Gas Price 就是你愿意为一个单位的 Gas 出多少 ETH。 所以 Gas Price 越高,就表示交易中每运算一步,会支付更多的 ETH。
Gas Price 越高,你提交的交易会越快被矿工接纳。 但通常人们都不愿多支付手续费,
那么究竟应该将 Gas Price 设置为多少,才可以在正常时间(eg 10 mins)内,确保交易被确认到区域链上呢? 您可以查看以下链接:https://ethgasstation.info
什么是"区块 Gas Limit"
区块 Gas Limit 是单个区块允许的最多 Gas 总量,以此可以用来决定单个区块中能打包多少笔交易。例如,我们有 5 笔交易的 Gas Limit 分别是 10、20、30、40 和 50。如果区块 Gas Limit 是 100,那么前 4 笔交易就能被成功打包进入这个区块。矿工有权决定将哪些交易打包入区块。所以,另一个矿工可以选择打包最后两笔交易进入这个区块(50+40),然后再将第一笔交易打包(10)。
如果说你提交的交易尚未完成,消耗的 Gas 就已经超过你设定的 Gas Limit,那么这次交易就会被取消,而已经消耗的手续费同样被扣取 —— 因为要奖励已经付出劳动的矿工。 而如果交易已经完成,消耗的 Gas未达到 Gas Limit, 那么只会按实际消耗的 Gas 收取交易服务费。
总结
每笔交易都被要求包括一个 gas limit 和一个交易愿为单位 gas 支付的费用。矿工可以有选择的打包这些交易并收取这些费用。
今天所有的交易最终都是由矿工选择的,但是用户所选择支付的交易费用多少会影响到该交易被打包所需等待的时长。
如果该交易由于计算,包括原始消息和一些触发的其他消息,需要使用的 gas 数量小于或等于所设置的 gas limit,那么这个交易会被处理。如果 gas 总消耗超过 gas limit,那么所有的操作都会被复原,但交易是成立的并且交易费任会被矿工收取。区块链会显示这笔交易完成尝试,但因为没有提供足够的 gas 导致所有的合约命令都被复原。
所以交易里没有被使用的超量 gas 都会以以太币的形式打回给交易发起者。因为 gas 消耗一般只是一个大致估算,所以许多用户会超额支付 gas 来保证他们的交易会被接受。这没什么问题,因为多余的 gas 会被退回给你。