Solidity

如何將交易的 gas 設置為 0.5 乙太幣?

  • February 24, 2022

我正在嘗試將我的氣體設置為 0.5 乙醚,但我不知道該怎麼做。我在這裡有一筆交易:

var tx = {
       to: "0x73E7D230586B118898aA1FB95FAA6E4119FA0996",
       value: ethers.utils.parseEther("0.01"),
       gasPrice: ethers.utils.parseUnits('10', 'gwei'),
       gasLimit: ethers.utils.parseUnits('0.5', 'ether')
   }

它給了我這個錯誤 Error: tx fee (5000000000.00 ether) exceeds the configured cap (1.00 ether)

我為我的 gas 價格和 gas 限制設置了什麼?

謝謝!

Gas cost of a transaction = gas consumed * gas price

在正常的 eth 轉移中,消耗的 gas 為 21000。所以現在你必須設置 gas 價格,使乘數為 0.5 ETH。

var tx = {
 to: "0x73E7D230586B118898aA1FB95FAA6E4119FA0996",
 value: ethers.utils.parseEther("0.01"),
 gasPrice: ethers.utils.parseEther('0.5').div(21000), // 0.5 ETH divided by 21000
}

您無需設置gasLimit值,ethers.js 會為您估算。(Ethers.js 會gasLimit: 21000自動為你放置)。

注意:由於 0.5 ETH 不能完全被 21000 整除,因此消耗的總 gas 將是 0.49999 ETH 之類的。

gasLimit是交易使用的氣體單位數,而不是該氣體的實際價值。您的程式碼試圖做的是使用 0.510^18 氣體單位創建一個氣體成本為 10 gwei(0,00000001 乙太)/氣體單位的交易。有效地導致交易成本為 0.00000001 x 0.5 x 10^18 = 50 億 ETH(也許這有點高估了)。但是,由於您的交易是簡單的轉賬,它實際上不會消耗超過 21000 單位的 gas。如果您真的希望支付 0.5 eth 的汽油費(我看不出這樣做的原因,但我猜無論您的船是什麼),您需要設置汽油價格*(不限制),因此您的汽油價格 x 21000 = 0.5乙。O.5 ETH 是 5000000000 gwei,所以你的 gas 價格需要是 5000000000/21000 = 238095 gwei。

引用自:https://ethereum.stackexchange.com/questions/103985