內在交易成本資金不足
我已經使用 js 編寫了一個腳本來觸發對 uniswap 的購買。我實現這一點的方法是通過使用這行程式碼導入 uniswap 智能合約:
const router = new ethers.Contract(addresses.router,['function getAmountsOut(uint amountIn, address[] memory path) public view returns (uint[] memory amounts)', 'function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts)'
],
無論如何,不幸的是我遇到了一個錯誤,說無法估計氣體限制,並且在為“gasPrice”和“value”設置了適當的參數後,我收到了這個錯誤:
錯誤:內在交易成本資金不足 (error={“code”:-32000,“response”:"{“jsonrpc”:“2.0”,“id”:4,“error”:{“code”:-32000 ,“message”:“轉賬資金不足”}}"}, method=“estimateGas”
這是我用於 Uniswap Trade 的程式碼:
async function Buythis(){ const token0 = addresses.WETH; //Etherium const token1 = '0x358aa737e033f34df7c54306960a38d09aabd523' //Desired Coin Address const amountIn = ethers.utils.parseUnits('0.1', 'ether'); //Amount you wish to buy with. (0.15 eth in wallet currently.) console.log('Amount in Passed') const amounts = await router.getAmountsOut(amountIn, [token0, token1]); console.log('Amounts out calculated') const amountOutMin = amounts[1].sub(amounts[1].div(5)); //slippage console.log('Slippage is set.') var options = {gasPrice: ethers.utils.parseUnits('50', 'gwei'), value: ethers.utils.parseUnits('0.04', 'ether')}; console.log('Initiating Order.') const tx = await router.swapExactETHForTokens( amountOutMin, [token0, token1], addresses.recipient, Date.now() + 1000 * 60 * 10, options );
編輯:是的,它記錄了“啟動訂單”,所以錯誤在 swapExactETHforTokens
您連接到
router
合約對象的錢包沒有足夠的 ETH 餘額來支付value + gasPrice * gasLimit
。在你的情況下
value = 0.04 ETH
。假設 gasLimit = 200,000
gasPrice * gasLimit = 200000 * 50 * 10^-9 = 0.01
,.因此,您至少需要
0.05 ETH
保持平衡(基於上述估計的 gasLimit)。
對我來說,出現錯誤是因為我正在部署我的合約,其 eth 值大於我的 Metamask 錢包中的值。
我的錢包總餘額為 0.9 ETH,我嘗試使用 1ETH 進行部署:
var contract = await contractFactory.deploy({value: hre.ethers.utils.parseEther("1")});
將值更改為 0.07 解決了它:
var contract = await contractFactory.deploy({value: hre.ethers.utils.parseEther("0.07")});