Web3js

計算智能合約函式呼叫的汽油費並將結果轉換為美元價值

  • August 12, 2021

如何估算特定智能合約功能呼叫的 Gas 費?

我知道使用 web3.eth.estimateGas

如何根據所連接的網路(例如“幣安智能鏈”)計算這一估計的 Gas 結果併計算此交易 Gas 費用的總成本(以美元計)?

對於任何回饋,我們都表示感謝

謝謝

我已經解決了,我做的第一件事就是明白

什麼是氣體?如果您不清楚什麼是氣體,我建議您閱讀 StackOverflow 問題“什麼是氣體?”的答案。

計算交易費用 一筆交易的總成本是gas limit和gas price的乘積:

(gas limit x gas price) = 交易費用

有了這種理解,我然後在我的項目中添加了以下包,即 React 和 Typescript

“coingecko-api”: “^1.0.10”,

並在我的估計氣體函式中像這樣使用它

 const CoinGecko = require ('coingecko-api');
 const coinGeckoClient = new CoinGecko();
 const responseBNB = await coinGeckoClient.coins.fetch('binancecoin',{});
 let currentPriceBNB = 
 parseFloat(responseBNB.data.market_data.current_price.usd);

這會給我 BNB 的目前價格

下一步是獲取我使用下面的智能合約呼叫的汽油價格

我使用 web3 創建了我的契約

 var mySmartContract = await new web3.eth.Contract(abiManager.ADD_ABI_HERE as 
 any,window.CONTRACT_ADDRESS);

一旦我有了契約,我就使用下面的函式來獲得估計的氣體

 const resGasMethod = await mySmartContract.methods.myMethod()
           .estimateGas({ from: ownerAddress });

下一步是獲取我使用以下實現的最新塊的氣體限制

 const latestBlock : any = await web3.eth.getBlock('latest');
 const blockGas = latestBlock.gasLimit;

既然我有 Gas 限制,我可以通過執行以下操作來獲得交易的總成本

 const finalGas = (blockGas * resGasMethod);

這將返回 ‘GWEI’ 所以下一步是轉換為 ‘Ether’

 const finalGasInEther = web3.utils.fromWei(finalGas.toString(), 'ether');

最後一步是根據 BNB 的目前價格獲取該乙太幣的交易總成本(以美元計)

 const USDResult = (Number(finalGasInEther) * currentPriceBNB) * 100;

最後,我將返回值並設置我的狀態以響應,使其在前端可見

我真的希望這可以幫助某人,如果有改進的方法可以做到這一點,我真的很感激任何回饋

謝謝團隊

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