众所周知,以太坊有自己的虚拟机。 什么意思呢? 就是比特币中的交易长这样: “如果小明的签名验证通过,小明转 10 元钱给小红的地址。” 而以太坊中的交易可能长这样: “当小明的签名验证通过并且满足 blablablabla 条件时,将小明账户中的 10 元钱转到小红的账户上。” 这其中的 blablablabla 条件,实际上可以是任何逻辑或者任何程序,其中可以有条件判断,可以有循环,这些以太坊都支持。但问题就来了 —— 要是有个不善良的矿工打包了个死循环放在区块里,岂不是能让所有的以太坊节点都死机? 为了防止这种事情发生,以太坊中设置了每个区块的 Gas 上限以及每个计算步骤所需要消耗的 Gas 量。 我们可以简单粗暴地把 Gas 理解成汽油。比如,一个条件判断需要 10 gas,一个签名验证需要 100 gas,一个状态读写需要 10 gas 等等……然后,每笔交易都需要注明这笔交易需要使用的 Gas(当然,还需要付钱)。比如说,在某笔交易之后,你注明“跑 1000 个 gas 的”,于是,以太坊的节点会执行这笔交易,但是当计算需要消耗的 gas 超过 1000 了,不管交...