Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

483
Views
ethers.js swapExactTokensForTokens error transferFrom fallido

Tengo un problema con el código pancakeswap ethers.js en BSC testnet. Mi tx siempre falló con el error "Error con el error 'TransferHelper::transferFrom: transferFrom falló'" Mi saldo es 0.4317 BNB, 20 BUSD y 0.074 ETH

Alguien me puede ayudar?, llevo 2 dias pegando

 const ethers = require('ethers'); const addresses = { WBNB: '0xae13d989dac2f0debff460ac112a837c89baa7cd', //Testnet BUSD: '0x78867BbEeF44f2326bF8DDd1941a4439382EF2A7', //Testnet router: '0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3', recipient: '{Censored}' } const privateKey = '{Censored}'; const provider = new ethers.providers.JsonRpcProvider('https://data-seed-prebsc-1-s1.binance.org:8545/'); // TESTNET const wallet = new ethers.Wallet(privateKey, provider); const account = wallet.connect(provider); const router = new ethers.Contract( addresses.router, [ 'function getAmountsOut(uint amountIn, address[] memory path) public view returns (uint[] memory amounts)', 'function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)', 'function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts)', 'function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable' ], account ); const wbnb = new ethers.Contract( addresses.WBNB, [ 'function approve(address spender, uint256 amount) external returns (bool)', ], account ); const WBNBAmountToPay = ethers.utils.parseUnits('1'); const init = async () => { const amountIn = ethers.utils.parseUnits('0.001', 'ether'); const gas = { gasPrice: ethers.utils.parseUnits('50', 'gwei'), gasLimit: '2000000' }; const tx = await wbnb.approve(addresses.router, WBNBAmountToPay.toString(), gas); const receipt = await tx.wait(); console.log('Transaction receipt'); console.log(receipt); const amounts = await router.getAmountsOut(amountIn, [addresses.WBNB, addresses.BUSD]); const amountOutMin = amounts[1].sub(amounts[1].div(10)); console.log('Swapping', ethers.utils.formatUnits(amountIn), 'WBNB for ', ethers.utils.formatUnits(amountOutMin), 'BUSD' ); const tx2 = await router.swapExactTokensForTokens( amountIn, amountOutMin, [addresses.WBNB, addresses.BUSD], addresses.recipient, Date.now() + 1000 * 60 * 10, gas ); const receipt2 = await tx2.wait(); console.log('Transaction receipt'); console.log(receipt2); } init();

Ejemplo de error de transmisión aquí "https://testnet.bscscan.com/tx/0xd17e13cec5778226414b191a5f274e7ba4f59c8f683979eb9c1aa17077aead2f"

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

si está utilizando swapExactTokensForTokens , debe aprobar el contrato del enrutador antes de llamar a la función. Pero a partir del código anterior, puede usar swapExactETHForTokensSupportingFeeOnTransferTokens en su lugar

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!