Solidity

推薦 Dapp 中 Gas 價格和限制的最佳實踐

  • November 15, 2020

我正在開發一個 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);
}

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