Web3js

內在交易成本資金不足

  • January 25, 2022

我已經使用 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")});

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