子图数据(GraphQL)
介绍#
The Graph 与 GraphQL#
The Graph 是一个去中心化的协议,用于对区块链的数据进行索引和查询,最初应用于 Ethereum。这意味着它提供了一种从区块链中检索特定数据的简单方式,符合 web3 原则并具备去中心化与可靠性的优势。
GraphQL 是 The Graph 使用的底层查询语言。传统的 RESTful API 调用与 GraphQL 调用有什么区别?主要区别在于传统的 API 需要开发者为用户检索特定数据而创建具体的端点。如果用户需要更多信息,可能需要进行多次 API 调用,甚至数百次,才能获取所需数据。使用 The Graph(GraphQL)时,开发者只需一次创建灵活的模式(schema),即可进行一次调用。
有关 The Graph 及其底层 GraphQL 的更多信息,请参阅 GraphQL Introduction。
如果在应用中使用 GraphQL 数据,我们建议使用功能丰富的库,例如 Apollo 或像 GraphQL-Request 这样的轻量实现。
DODO Subgraph#
要查看子图的源代码,请参考我们的 GitHub 仓库。
DODOEX#
对 DODO 的智能路由交易数据、流动性池数据、流动性池交易数据、流动性池 TVL 数据以及众筹池数据进行索引。
如要查看子图开发介绍,请参考 Subgraph Project Introduction。
| 链 | 提供方 | 子图服务地址 |
|---|---|---|
| ethereum | The Graph Subgraph Studio | |
| DODO Self-hosted Subgraph | https://api.dodoex.io/subgraph/graphql?chainId=1&schemaName=dodoex | |
| bsc | The Graph Subgraph Studio | |
| DODO Self-hosted Subgraph | https://api.dodoex.io/subgraph/graphql?chainId=56&schemaName=dodoex | |
| polygon | The Graph Subgraph Studio | |
| DODO Self-hosted Subgraph | https://api.dodoex.io/subgraph/graphql?chainId=137&schemaName=dodoex | |
| arbitrum | The Graph Subgraph Studio | |
| DODO Self-hosted Subgraph | https://api.dodoex.io/subgraph/graphql?chainId=42161&schemaName=dodoex |
其他链的子图如果使用 The Graph 服务,可以在这里搜索:https://thegraph.com/explorer?search=dodo&orderBy=Query+Count&orderDirection=desc 如果使用 DODO 的自托管子图,只需将 chainId 替换为其他链的目标值即可。
| ChainName | ChainId |
|---|---|
| moonriver | 1285 |
| aurora | 1313161554 |
| avax | 43114 |
| optimism | 10 |
| ...... | ...... |
ERC20Token#
索引在 DODO 上创建的代币相关的数据。 数据应用页面: https://app.dodoex.io/dev/erc20?network=mainnet
| 链 | 提供方 | 子图服务地址 |
|---|---|---|
| ethereum | The Graph Subgraph Studio | |
| DODO Self-hosted Subgraph | https://api.dodoex.io/subgraph/graphql?chainId=1&schemaName=token | |
| bsc | The Graph Subgraph Studio | |
| DODO Self-hosted Subgraph | https://api.dodoex.io/subgraph/graphql?chainId=56&schemaName=token | |
| polygon | The Graph Subgraph Studio | |
| DODO Self-hosted Subgraph | https://api.dodoex.io/subgraph/graphql?chainId=137&schemaName=token | |
arbitrum | Simply replace the chainId with the desired value for other chains. |
DODO Ming V3#
索引在 DODO 上创建的矿池相关的数据。 数据应用页面: https://app.dodoex.io/dev/pool?network=mainnet
| 链 | 提供方 | 子图服务地址 |
|---|---|---|
| ethereum | The Graph Subgraph Studio | |
| DODO Self-hosted Subgraph | https://api.dodoex.io/subgraph/graphql?chainId=1&schemaName=mine-v3 | |
| bsc | The Graph Subgraph Studio | |
| DODO Self-hosted Subgraph | https://api.dodoex.io/subgraph/graphql?chainId=56&schemaName=mine-v3 | |
| polygon | The Graph Subgraph Studio | |
| DODO Self-hosted Subgraph | https://api.dodoex.io/subgraph/graphql?chainId=137&schemaName=mine-v3 | |
arbitrum | Simply replace the chainName or chainId with the desired value for other chains. |
Query Examples#
使用 The Graph Subgraph Studio#
你需要使用钱包注册并将 GRT 代币作为查询费用存入。然后,将 [api-key] 替换为你自己的密钥。

curl 'https://gateway.thegraph.com/api/[api-key]/subgraphs/id/GxV9XL6Wnjz75z919NPNdrLhEkqDR99PweUY3oh7Lh94' \
-H 'content-type: application/json' \
--data-raw '{"query":"{\n dodoZoos(first: 5) {\n id\n pairCount\n tokenCount\n crowdpoolingCount\n }\n}"}' \
--compressed使用 DODO 自托管子图#
你需要在 DODO 开发者平台 注册账户并申请 API Key。将 ${your_id} 替换为你的 ID,将 ${apikey} 替换为你的 API Key。
curl -i -X POST \
-H "Content-Type:application/json" \
-H "User-Agent:DODO-${your_id}" \
-d \
'{
"query": "{\n dodoZoos(first: 5) {\n id\n pairCount\n tokenCount\n crowdpoolingCount\n }\n}"
}' \
'https://api.dodoex.io/subgraph/graphql?chainId=1&schemaName=dodoex&apikey=${apikey}'查询最近的前 10 笔交易记录,包括智能路由订单。#
{
orderHistories(first:10, orderBy: timestamp, orderDirection: desc){
id
hash
block
from
to
fromToken{
id
symbol
}
toToken{
id
symbol
}
amountIn
amountOut
timestamp
}
}查询用于流动性池的交换记录。#
{
swaps(where:{pair:"0xc9f93163c99695c6526b799ebca2207fdf7d61ad"},first:10){
hash
from
to
### 查询最近更新的矿池
```javascript
{
pairs(first:100,where:{type_not:"VIRTUAL"}, orderBy:updatedAt, orderDirection: desc){
id
type
baseToken{
id
}
quoteToken{
id
}
baseReserve
quoteReserve
updatedAt
}
}基于日频和小时维度检索矿池状态#
{
pairDayDatas(first:100, where: {date_gt: 1684113421},orderBy:date,orderDirection:desc){
date
volumeBase
volumeQuote
feeBase
feeQuote
baseToken{
symbol
}
quoteToken{
symbol
}
}
}查询用户流动性提供数据#
{
liquidityPositions{
id
pair{
id
baseSymbol
quoteSymbol
}
user{
id
}
lpToken{
id
symbol
}
liquidityTokenBalance
liquidityTokenInMining
updatedAt
}
}查询用户信息#
{
user(id:"0x8982a82a77eaf1cd6f490b67ad982304ecc590af"){
id
txCount
tradingRewardRecieved
}
}查询众筹池日数据#
{
crowdPoolingDayDatas{
date
crowdPooling {
id
creator
baseToken{
symbol
}
quoteToken{
symbol
}
}
investedQuote
investCount
newcome
poolQuote
}
}常见问题#
如何从子图获取最新更新的数据?#
您可以使用参数 first:10、orderBy: timestamp、orderDirection: desc,以按时间戳降序检索最新更新的数据。