首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从草帽的主干网分叉中获取Uniswap数据?

如何从草帽的主干网分叉中获取Uniswap数据?
EN

Stack Overflow用户
提问于 2022-03-06 08:00:36
回答 2查看 633关注 0票数 0

我正在使用Uniswap从Uniswap池中获取ETH的价格,使用的是Hardhat的主网分叉,但查询返回的是ETH的当前价格,而不是几个月前的挂起块。

如何从阿拉伯茶的主网叉中获取Uniswap池信息?如果不可能使用Uniswap,有什么解决办法吗?

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-26 19:51:50

经过一些搜索后,我不认为Uniswap可以连接到本地的mainnet分叉。然而,一个很好的解决办法是直接从Uniswap合同调用方法。

例如,这将从一个固定的块中获取ETH的正确价格:

代码语言:javascript
复制
const UNISWAPV2_ROUTER02_ADDRESS = "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D";
const UNISWAPV2_ROUTER02_ABI = [{ "inputs": [{ "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "address[]", "name": "path", "type": "address[]" }], "name": "getAmountsOut", "outputs": [{ "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }], "stateMutability": "view", "type": "function" }]

const DAI_ADDRESS = "0x6b175474e89094c44da98b954eedeac495271d0f";
const WETH_ADDRESS = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2";

const uniswap = new ethers.Contract(
    UNISWAPV2_ROUTER02_ADDRESS,
    UNISWAPV2_ROUTER02_ABI,
    ethers.provider,
);

let amountEthFromContract = await uniswap.getAmountsOut(
    1, // 1 ETH
    [WETH_ADDRESS, DAI_ADDRESS]
)

console.log(`1 Eth = ${amountEthFromContract[1].toString()} USD`)
票数 0
EN

Stack Overflow用户

发布于 2022-03-14 09:29:55

https://github.com/defi-wonderland/solidity-boilerplate/blob/main/test/utils/uniswap.ts

代码在这里

代码语言:javascript
复制
import UniswapV2FactoryContract from '@uniswap/v2-core/build/UniswapV2Factory.json';
import UniswapV2Router02Contract from '@uniswap/v2-periphery/build/UniswapV2Router02.json';
import IUniswapV2Pair from '@uniswap/v2-core/build/IUniswapV2Pair.json';
import WETHContract from '@uniswap/v2-periphery/build/WETH9.json';
import { deployContract } from 'ethereum-waffle';

uniswapV2Factory = await deployContract(owner, UniswapV2FactoryContract, [await owner.getAddress()]);
uniswapV2Router02 = await deployContract(owner, UniswapV2Router02Contract, [uniswapV2Factory.address, WETH.address], { gasLimit: 9500000 });
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71368595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档