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

Posted

技术标签:

【中文标题】无法使用带有 Uniswap SDK 的 node.js 中的以太币连接到本地以太坊节点(主网)【英文标题】:Cannot Connect to local Ethereum node (Mainnet) using Ethers in node.js with Uniswap SDK 【发布时间】:2021-10-29 02:51:02 【问题描述】:

我在本地环境中安装了 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 端点时,上面的工作非常好) ?

【问题讨论】:

【参考方案1】:

我找到了解决办法!

事实证明,我的 Geth Ethereum 节点没有完全同步,因此无论我通过 ethers 库进行的任何 API 调用,它都会像 Ethereum 链一样是空的。

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

geth attach http://localhost:8545

然后运行命令:

eth.syncing

检查同步是否完成。如果完成,则返回“false”。

【讨论】:

以上是关于无法使用带有 Uniswap SDK 的 node.js 中的以太币连接到本地以太坊节点(主网)的主要内容,如果未能解决你的问题,请参考以下文章

二次开发uniswap-02-Interface

应用服务中的 Docker 容器无法使用 Node SDK 访问 KeyVault

从 Uniswap V2 获取正确的执行价格

无法使用带有 IDFA 的 Google Analytics iOS SDK 验证人口统计报告的跟踪代码

无法在 aws-sdk(node.js)中收到 503 错误(服务不可用)的响应

BSV 区块链上的 DeFi :Uniswap