Solidity
推薦 Dapp 中 Gas 價格和限制的最佳實踐
我正在開發一個 Dapp。我想知道在這樣的 Dapp 中,關於 gas 價格和限制的使用者推薦的最佳實踐是什麼?我應該在我的合約中使用以下方法,還是應該依靠使用者的錢包(例如 MetaMask)向使用者推薦這些值?每種技術的優缺點是什麼?在哪些情況下我應該使用其中一種而不是另一種?
web3.eth.getGasPrice([callback]) myContract.methods.myMethod().estimateGas()
謝謝你。Ĵ
我的建議:
根據使用者輸入配置 gas-price,預設為目前價格(您需要實現 function
scan
):async function getGasPrice(web3) { while (true) { const nodeGasPrice = await web3.eth.getGasPrice(); const userGasPrice = await scan(`Enter gas-price or leave empty to use ${nodeGasPrice}: `); if (/^\d+$/.test(userGasPrice)) return userGasPrice; if (userGasPrice == '') return nodeGasPrice; console.log('Illegal gas-price'); } }
使用 配置 gas-limit
estimateGas
,但設置一個最小門檻值以處理不准確的估計:const MIN_GAS_LIMIT = 100000; async function getGasLimit(web3, transaction, userAddress, value = 0) { const gasLimit = await transaction.estimateGas({from: userAddress, value: value}); return Math.max(gasLimit, MIN_GAS_LIMIT); }