如何判斷執行某事將花費多少錢
我了解交易成本和執行成本之間的區別,但我不明白兩件事:
- Remix 中的“氣體”讀數指的是什麼?
- 我如何估算做某事的成本?
當我在 Remix 中執行事務時,點擊向下箭頭以獲取有關事務的更多詳細資訊時,會得到以下輸出:
我認為“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)並且不斷波動,所以你不會有一個確定的“一成不變”的答案(這取決於網路狀態);