gasLimit gasUsed gasPrice的区别

gasLimit:是你为一笔交易或合约调用愿意提供的 最大 gas 数量

gasUsed:是交易或智能合约调用中实际消耗的 gas 数量

gasPrice:是你愿意为每单位 gas 支付的价格

打个比方:

小明开车从A市到B市。他为此加了100升油。在到达B市后,他发现实际使用了80升油。在这个例子中:

  • 100升油 相当于 gasLimit,即小明为行程预设的最大油量。
  • 80升油 是实际消耗的油量,相当于 gasUsed

如果我们将油价(即每升油的费用)作为 gasPrice,比如每升油的价格为1元,那么实际费用可以通过以下公式计算:

总费用=gasUsed×gasPrice

在这个例子中:

  • 实际使用的油量(gasUsed)为80升。
  • 油价(gasPrice)为1元/升。

所以,总费用为:

80 升×1 元/升=80 元

即,小明实际支付的费用是80元,而加油的100升油量(gasLimit)只是为了确保他有足够的油进行整个行程,剩下的油仍旧在油箱里

故:

gasLimit 调高后,gasPrice 不变,交易时需要支付的费用会增加,计算公式为 gasLimit * gasPrice。但交易结束后,未使用的 gas 会被退还。例如,如果你设置的 gasLimit 为 100,000 gas,gasPrice 为 20 gwei,而实际只使用了 30,000 gas,那么你实际支付的费用是 30,000 * 20 gwei,剩余的 gas(70,000 gas)会返还给你。

gasUsed 是交易实际消耗的 gas 数量,这个值只有在交易完成后才会知道。支付的费用是基于 gasUsedgasPrice 计算的,即 gasUsed * gasPrice

gasPrice 调高时,你为每单位 gas 支付的价格增加,从而增加了交易的总费用。即使 gasLimit 不变,设置较高的 gasPrice 可以让你的交易更快地被矿工处理,因为矿工更倾向于优先处理高费率的交易。这类似于在油价为 1 元/升时,你为了加快服务而支付了 1.5 元/升,这样商家会优先为你服务,让你在队伍中更靠前。

gasLimit

const gasEstimate = await provider.estimateGas({
  to: recipientAddress,  // 接收地址
  value: ethers.utils.parseEther("0.1"), // 发送数量
});

gasUsed

// 发送交易
const tx = await signer.sendTransaction({
  to: recipientAddress,
  value: ethers.utils.parseEther("0.1"), 
});

const receipt = await tx.wait();  // 等待交易完成
console.log(`gas费为: ${receipt.gasUsed.toString()}`);

gasPrice

const gasPrice = await provider.getGasPrice();

如果你对区别不感兴趣,那么预估交易的gas费:

gas = gasPrice * gasLimt

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值