es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pancakeswap – obtención de resultados extraños en getAmountsOut.

Estoy dando mis primeros pasos en web3, por eso la pregunta puede sonar tonta.

No puedo entender por qué los resultados del método getAmountsOut del enrutador de Pancakeswap v2 difieren mucho de los resultados del intercambio que veo en el frontend de Pancakeswap.

Los decimales de BAKE deberían ser automáticamente 18 en todas partes, por lo que no entiendo la razón de esos resultados tan diferentes.

Ejemplo de intercambio BUSD-BAKE:

1) Mi código (resultado de 20000 BUSD -> 163 BAKE) 🐇

const Web3 = require('web3');
const abis = require('./abis');
const web3 = new Web3('wss://bsc-ws-node.nariox.org:443');

const amountInBUSD = web3.utils.toBN(web3.utils.toWei('20000'));
const busdTokenAddress = "0xE02dF9e3e622DeBdD69fb838bB799E3F168902c5";
const bakeTokenAddress = "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56";

const init = async () => {
  const pancakeSwap = new web3.eth.Contract(
    abis.pancakeSwap.router,
    "0x10ED43C718714eb63d5aA57B78B54704E256024E"
  );

  web3.eth.subscribe('newBlockHeaders')
    .on('data', async block => {
      const bakeOutput = await pancakeSwap.methods.getAmountsOut(amountInBUSD, [busdTokenAddress, bakeTokenAddress]).call();
      console.log(`PancakeSwap BUSD-BAKE: ${web3.utils.fromWei(amountInBUSD.toString())} -> ${web3.utils.fromWei(bakeOutput[1].toString())}`);
    })
    .on('error', error => {
      console.log(error);
    });
}
init();

2) Llamada al método getAmountsOut en el contrato del enrutador en bscscan (resultado de 20000 BUSD -> 163 BAKE) 🐇

3) Captura de pantalla de la interfaz de PancakeSwap (resultado de 20000 BUSD -> 12100 BAKE) 🐇

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es importante tener en cuenta que el resultado que estás viendo en la interfaz de PancakeSwap incluye el deslizamiento y la comisión que cobra el intercambio. Esto significa que la cantidad de tokens recibidos puede ser diferente a la cantidad que devuelve la función getAmountsOut.

    En tu ejemplo, el método getAmountsOut del contrato del enrutador y tu código devuelven la misma cantidad de BAKE, 163 BAKE. Sin embargo, la cantidad real recibida en la interfaz de PancakeSwap es de 12,100 BAKE debido al deslizamiento y las comisiones.

    También es posible que la cantidad real recibida en la interfaz de PancakeSwap se vea afectada por otros factores, como el tiempo que tarda en ejecutarse el intercambio y las condiciones actuales del mercado.

    En conclusión, es normal ver diferencias entre la salida del método getAmountsOut y los resultados reales en la interfaz de PancakeSwap debido al deslizamiento y las comisiones.

Comments are closed.