web3js Uniswap 处理事件日志数据

web3js Uniswap handle event log data

我正在构建一个爬虫,以使用 web3js 从 Uniswap 获取所有交换数据。 到目前为止,我通过 Swap() 事件订阅日志和过滤主题。 然后我解码数据并获得 amount0In, amount1In, amount0Out, amount1Out.

我的问题出在 swapExactETHForTokensSupportingFeeOnTransferTokens() 函数中。 通常交换有 token0 in 和 token1 out,但是这个函数给了我 4 个中的 3 个值,我似乎无法理解如何处理它。最终我想要知道他们花了什么,他们得到了什么以及我需要什么来更新那对的新储备。

如果有人了解 Uniswap RouterV2 合约交换功能,我想获得一些关于如何处理数据以使我的计算正确的指示。

我在这里找到了解决方案ethereum.stackexchange任何有相同问题的人都会在那里得到非常详细的答案。

一些合约实际上将指定数量的代币转移给接收者减去 10%(5% 的税费和 5% 的流动性费用)208940457743532637 - 10% = 188046411969179375 并发出 Transfer 事件。然后,PancakePair _swap 函数发出 Swap 事件,基值为 Amount0Out 208940457743532637

Amount0In 大于零,因为代币合约 returns 部分代币作为 Pancake Swap 上的流动性对。