我目前正在将一个使用React JS开发的以太坊dApp升级,以符合新的EIP-1559标准(也称为伦敦硬分叉)。该应用程序使用web3.js(v1.5.2)来发起交易,交易形式类似于:
const contract = new web3.eth.Contract(
contractABI,
CONTRACT_ADDRESS,
);
await contract.methods
.deposit(recepient, amount)
.send({ from: account, value })
我们鼓励用户使用MetaMask与我们的应用程序进行接口交互。
尽管我在发送交易时没有指定gasPrice
、gasLimit
或等效的EIP-1559规定的maxPriorityFeePerGas
或maxFeePerGas
,但MetaMask仍然警告(在我的本地测试环境中) “localhost suggested gas fee”和“Unknown processing time”,以及可能存在巨额费用。
点击“编辑”后出现另一个警告消息,更糟糕的是,我(或我猜测是web3)据称“建议”的值根据MetaMask的估算并不合理。
是否有一种使用web3与MetaMask进行接口交互的方法,可以接受MetaMask建议的值,消除这些MetaMask警告,并确保正确计算费用?我注意到在https://app.uniswap.org/查看时,虽然MetaMask仍然显示第一个“app.unswap.org suggested gas fee”警告,但txn时间已经正确计算,并且单击“编辑”不会出现任何进一步的警告。 Uniswap如何更合理地与MetaMask交互,是否可以使用web3.js复制它们的方法?