Web3js
計算智能合約函式呼叫的汽油費並將結果轉換為美元價值
如何估算特定智能合約功能呼叫的 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;
最後,我將返回值並設置我的狀態以響應,使其在前端可見
我真的希望這可以幫助某人,如果有改進的方法可以做到這一點,我真的很感激任何回饋
謝謝團隊