web3.js gas 是什么东西

61 阅读2分钟

BigInt

image.png 可以看到 status cumulativeGasUsed 等字段的后面都是以n结尾的,其实这表示的是一个 BigInt 类型的数据。

JavaScript 的 BigInt 是一种用于表示任意精度整数的原生数据类型。与普通的 Number 类型不同,BigInt 可以表示超过 Number 类型安全范围(-2^53 到 2^53)的大数。

区块链中的很多值,例如区块号、Gas 使用量、交易金额等,可能非常大,超过 JavaScript Number 类型的表示范围。为此,Web3 库和其他区块链相关的库通常使用 BigInt 来处理这些数值,以确保准确性。

举个栗子:

image.png

可以看到这个本地测试环境上面写着 GAS PRICE 20000000000,

然后每个账户都有 100 ETH,要是真的就好了。

我们问一下 chatgpt 这个 GAS PRICE 20000000000 等于多少 ETH

image.png

可以看到只有 0.00000002 ETH

现在你知道为啥要用 BigInt 来表示数值了吧,如果是 100ETF 那就是 100 * 10 ** 18 = 100000000000000000

所以说 web3.js 里面很多地方都是用 BigInt 来表示数据

我们来拓展一下 GAS PRICE 在web3里面是什么意思

再次回到这张图

image.png

在 Web3 和区块链(尤其是以太坊)中,Gas Price 是指用户愿意为每单位 Gas 支付的价格。Gas 是用来衡量和支付区块链网络上执行操作(交易或智能合约)的计算资源的单位。

按照我的理解,如果用日常用电来比喻一下,Gas Price等于每度电的价格,如果你的 Gas Price 等于 2000000,那就是一度电的价格是 20000000000 wei, 然后转为 ETH 为 0.00000002 ETH

如果你的 GAS LIMIT 是 6721975,那我们可以认为,我只有 0.00000002 * 6721975 = 0.00000014 ETH 的电费。

Gas(实际的费用等于你用了多少度电)乘以 Gas Price(每度电多少钱)= 实际的费用