Remix

如何判斷執行某事將花費多少錢

  • September 1, 2021

我了解交易成本和執行成本之間的區別,但我不明白兩件事:

  1. Remix 中的“氣體”讀數指的是什麼?
  2. 我如何估算做某事的成本?

當我在 Remix 中執行事務時,點擊向下箭頭以獲取有關事務的更多詳細資訊時,會得到以下輸出:

Solidity 輸出

我認為“gas”只是交易成本和執行成本的總和,但顯然情況並非如此。那麼這條煤氣線是什麼意思呢?

此外,使用這些資訊,我將如何計算完成這筆交易需要多少錢(以美元計)?

我知道我可以在這裡看到多少汽油費。(目前為 114.43 Gwei。)然後,由於一個 Ether 中有 10 億個 Gwei,並且可以在此處查找一個 Ether 的價格,我可以算出每個 gas 的成本是多少美元。

**但是我要乘以這個成本來獲得執行某物的總成本是多少?我應該做(gas + 交易成本 + 執行成本) gas price 嗎?還是只是(交易成本 + 執行成本) gas 價格?還是只有執行成本重要?

(另請注意,我也通讀了這個問題的答案,但他們沒有回答我的問題(1),也不太清楚我的問題(2)。因此,我提出了一個新問題。)

編輯:我相信我誤解了你的問題;這可能是一個更好的回應:

Remix 中的“氣體”讀數指的是什麼?

gas line是指交易提供的最大gas總量(你包括80…gas to be used)

執行是在提供的數量中有效使用了多少gas;所以在你的例子中 80 …. 與真正的必需品相比,gas 可能太多了(無論如何,未使用的 gas 將被退回,所以你沒有支付全部金額)


我如何估算做某事的成本?

為了估計您的氣體消耗量,有一個名為 gasEstimate() 的函式

您可以在此處查看用法: https ://medium.com/truffle-suite/ethereum-gas-exactimation-1158a996eb8c

這是一個松露範例測試:

const Optim = artifacts.require("Optim");

contract("Optim", () => {
   it("should have different gas", async() => {
       const O1 = await Optim.new();

       const method1 = await O1.method1.estimateGas(params);
       const method2 = await O1.method2.estimateGas(params);

       console.log("method1 cost: " + method1, "method2 cost: " + method2);
       assert(method1 < method2, "method 1 < method2");
   });
});

在更廣泛的背景下,為了更好地了解哪些操作比其他操作成本更高:

在這裡,例如,(https://github.com/crytic/evm-opcodes)您可以檢查 ADD 操作是否需要 3 個氣體。

所以:更複雜的程式碼=需要更多的gas

– 如果您精通數學,可以查看 ETH 黃皮書中的 H.1 附錄

https://ethereum.github.io/yellowpaper/paper.pdf以確定哪些操作需要更多或更少的氣體


要知道您花費了多少美元,您需要將 ETH 轉換為美元 gas_used * gas_price

gas 價格是 gwei (ETH)並且不斷波動,所以你不會有一個確定的“一成不變”的答案(這取決於網路狀態);

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