python - Uniswap 的 GraphQL 接收到不正确的 ReserveUSD 值
问题描述
我在 graphQL 上使用 Uniswap API 来尝试接收 Uniswap 上每个令牌对的保留数据。按照他们网站上的指示,可以生成所有正确配对符号的列表,但由于某种原因,储备和价格数据非常不正确(唯一正确的数据是符号)。ReserveUSD 价值应为数千 - 数百万,具体取决于货币对,并在其网站上定义为“以美元金额存储的货币对中的总流动性金额”。当我实际检索数据时,对于一些实际上有很多 ReserveUSD 的货币对,reserveUSD 的值非常低。
query_one = """{
pairs(first: 1000, orderBy: reserveUSD, orderDirection: asc) {
id
token0 {
symbol
}
token1 {
symbol
}
reserveUSD
token0Price
token1Price
}
}"""
query_two = """{
pairs(first: 1000, skip: 1000, orderBy: reserveUSD, orderDirection: asc) {
id
token0 {
symbol
}
token1 {
symbol
}
reserveUSD
token0Price
token1Price
}
}"""
edges_dict = {}
price_dict = {}
id_dict = {}
url = 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2'
obj_one = requests.post(url, json = {"query": query_one})#"{\n pairs(first: 10, where: {reserveUSD_gt: \"1000000\", volumeUSD_gt: \"50000\"}, orderBy: reserveUSD, orderDirection: desc) {\n id\n token0 {\n id\n symbol\n }\n token1 {\n id\n symbol\n }\n reserveUSD\n volumeUSD\n }\n}\n","variables":None})
json_data_one = json.loads(obj_one.text)
obj_two = requests.post(url, json = {"query": query_two})#"{\n pairs(first: 10, where: {reserveUSD_gt: \"1000000\", volumeUSD_gt: \"50000\"}, orderBy: reserveUSD, orderDirection: desc) {\n id\n token0 {\n id\n symbol\n }\n token1 {\n id\n symbol\n }\n reserveUSD\n volumeUSD\n }\n}\n","variables":None})
json_data_two = json.loads(obj_two.text)
for pair in json_data_one['data']['pairs']:
key = (pair['token0']['symbol'], pair['token1']['symbol'])
edges_dict[key] = float(pair['reserveUSD'])
price_dict[pair['token0']['symbol']] = float(pair['token0Price'])
price_dict[pair['token1']['symbol']] = float(pair['token1Price'])
for pair in json_data_two['data']['pairs']:
key = (pair['token0']['symbol'], pair['token1']['symbol'])
edges_dict[key] = float(pair['reserveUSD'])
price_dict[pair['token0']['symbol']] = float(pair['token0Price'])
price_dict[pair['token1']['symbol']] = float(pair['token1Price'])
*两次查询的原因是要获得所有 1900+ 个结果,因为第一个查询只能检索前 1000 对,而第二个查询跳过前 1000 个并可以检索其余的。
解决方案
推荐阅读
- jquery - Spectrum.js 调色板在 UI 中无法正确显示
- xamarin - Xamarin 表单中是否有一个布局,可以根据他们的数量响应地显示它的孩子?
- react-native - 如何在 React Native Paper DataTable 中分页?
- android - 如果我在 putExtra 方法中更改我的包前缀名称,我的前台通知服务无法正常工作,为什么?
- javascript - 自动点击控制台中的某个键
- javascript - 将定制的随机生成器从 JS 移植到 Python 3
- c - 从 C 头文件(函数、结构、...)中提取信息
- angular - 如何为不同应用程序的 Angular 库中的按钮使用不同的标签?
- json - json_normalize 不读取所有数据
- android - 如何获得三星健康开发者模式的开发者访问代码?