无法使用 Uniswap SDK 在 node.js 中使用以太币连接到本地以太坊节点(主网)

Cannot Connect to local Ethereum node (Mainnet) using Ethers in node.js with Uniswap SDK

我在本地环境安装了Geth,并成功同步到ETH主网。我用来启动Geth的命令如下:

geth --ethash.dagdir F:\Ethereum\Ethash --datadir F:\Ethereum --http --graphql --http --http.corsdomain "*" --http.api personal,eth,net,web3

但是,当我尝试使用 ethers 提供商连接到这个本地以太坊节点时:

let provider = new ethers.providers.JsonRpcProvider();

然后尝试使用此提供程序通过 Uniswap SDK 获取配对信息:

var pair = await uniswap.Fetcher.fetchPairData(tokens.WETH, tokens.DAI, provider);

显示了以下错误消息:

(node:32252) UnhandledPromiseRejectionWarning: Error: call revert exception (method="getReserves()", errorArgs=null, errorName=null, errorSignature=null, reason=null, code=CALL_EXCEPTION, version=abi/5.4.0)  

有人可以帮助告知它是否与 Geth Ethereum 节点的错误设置有关,或者与 uniswap SDK 错误使用 ethers 本地 ETH 节点提供商有关(当我使用 Infura 时,上述工作非常正常)端点)?

我找到了解决方案!

原来我的 Geth 以太坊节点没有完全同步,因此无论我通过 ethers 库进行什么 API 调用,它都会像以太坊链是空的一样。

我通过以下方式连接到我的 Geth 以太坊节点:

geth attach http://localhost:8545

然后 运行 命令:

eth.syncing

检查同步是否完成。如果完成,那么它将 return "false"。