我正在 web3 中迈出第一步,这就是为什么问题可能很愚蠢。
我不明白,为什么 Pancakeswap 的 v2 路由器的 getAmountsOut 方法的结果与我在 Pancakeswap 前端看到的交换结果有很大不同。
BAKE 小数应该自动无处不在 18,所以我不明白这种不同结果的原因。
BUSD-BAKE 互换示例
- 我的代码(结果为 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();
- 在 bscscan 中调用路由器合约上的 getAmountsOut 方法(结果为 20000 BUSD -> 163 BAKE)
- PancakeSwap UI 的屏幕截图(结果为 20000 BUSD -> 12100 BAKE)