Ethers.js 代币价格走势图

Ethers.js token price chart

我正在使用 Ethers.js 成功地使用 getReserves 从 BSC 获取代币价格。

  const nodeRandom = !node ? wssNodes() : node;
  const provider = new ethers.providers.WebSocketProvider(nodeRandom);
  const pairAddress = await pancake.getPair(token0, token1);

  if (pairAddress === "0x0000000000000000000000000000000000000000") {
    return {
      status: "Pair not found",
    };
  }

  const pairContract = new ethers.Contract(pairAddress, pancakePair, provider);
  const reserves = await pairContract.getReserves();

我想为该代币创建一个价格图表,但是当我不知道如何从 BSC 获取历史价格数据时遇到了麻烦。

Ethers.js是否支持获取代币历史价格,或者我们应该将获取的价格存储到我们的数据库中吗?那么,当我们的数据库中没有代币时,是否有任何方法可以从第一个区块的最开始构建代币的价格图表?

有什么想法吗?

您可以使用 overrides 对象的 blockTag 字段 - docs。它向节点查询 return 来自特定块而不是当前块的值。

const reserves = await pairContract.getReserves({
    blockTag: <blockNumer>
});

请注意,这取决于节点提供商是否支持这些历史查询。大多数提供商仅在更高级别的计划中支持或根本不支持它。