子图数据(GraphQL)
介绍#
The Graph 和 GraphQL#
The Graph 是一个去中心化的协议,用于对来自区块链的数据进行索引和查询,最初应用在以太坊上。这意味着它是从区块链获取特定数据的一种简单方法,符合 web3 的原则,并提供了去中心化和可靠性的优势。
GraphQL 是 The Graph 使用的底层查询语言。传统的 RESTful API 调用和 GraphQL 调用有什么区别?主要区别在于传统 API 需要开发人员创建特定的端点,让用户检索特定的数据。如果用户需要更多信息,可能需要进行多个 API 调用,有时甚至需要进行数百次调用才能获取所需数据。而使用 The Graph(GraphQL),只需开发人员简单的创建一个灵活的架构,并进行一次调用即可。
有关 The Graph 和底层 GraphQL 的更多信息,请参阅 GraphQL 介绍。
如果您在应用程序中使用 GraphQL 数据,我们推荐使用如 Apollo 这样的功能丰富的库或如 GraphQL-Request 这样的轻量级实现。
DODO 子图#
若要查看子图的源代码,请参阅我们的 GitHub 存储库。
DODOEX#
索引 DODO 智能路由交易数据、流动性池数据、流动性池交易数据、流动性池 TVL 数据和众筹池数据。
要查看子图开发介绍,请参阅 子图项目介绍。
对于其他子图,您只需更改相应的 chainName 和 chainId 即可,例如:
ChainName | ChainId |
---|---|
moonriver | 1285 |
aurora | 1313161554 |
avax | 43114 |
optimism | 10 |
vDODO#
对与 vDODO 相关的数据进行索引 数据应用页面:https://app.dodoex.io/gov/vdodo?network=mainnet
链 | 提供者 | 子图服务地址 |
---|---|---|
ethereum | The Graph 托管服务 | https://thegraph.com/hosted-service/subgraph/dodoex/dodoex-vdodo |
DODO 自托管子图 | https://api.dodoex.io/subgraph/graphql?chainId=1&schemaName=vdodo |
ERC20Token#
将与在 DODO 上创建的代币相关的数据进行索引。 数据应用页面:https://app.dodoex.io/dev/erc20?network=mainnet
链 | 提供者 | 子图服务地址 |
---|---|---|
ethereum | The Graph 托管服务 | https://thegraph.com/hosted-service/subgraph/dodoex/dodoex-token |
DODO 自托管子图 | https://api.dodoex.io/subgraph/graphql?chainId=1&schemaName=token | |
bsc | The Graph 托管服务 | https://thegraph.com/hosted-service/subgraph/dodoex/dodoex-token-bsc |
DODO 自托管子图 | https://api.dodoex.io/subgraph/graphql?chainId=56&schemaName=token | |
polygon | The Graph 托管服务 | https://thegraph.com/hosted-service/subgraph/dodoex/dodoex-token-polygon |
DODO 自托管子图 | https://api.dodoex.io/subgraph/graphql?chainId=137&schemaName=token | |
arbitrum moonriver aurora boba optimism | 只需将对应的 chainName 或 chainId 替换为其他链的所需值即可。 |
DODO Ming V3#
将与在 DODO 上创建的矿池相关的数据进行索引。 数据应用页面:https://app.dodoex.io/dev/pool?network=mainnet
链 | 提供者 | 子图服务地址 |
---|---|---|
ethereum | The Graph 托管服务 | https://thegraph.com/hosted-service/subgraph/dodoex/dodoex-mine-v3 |
DODO 自托管子图 | https://api.dodoex.io/subgraph/graphql?chainId=1&schemaName=mine-v3 | |
bsc | The Graph 托管服务 | https://thegraph.com/hosted-service/subgraph/dodoex/dodoex-mine-v3-bsc |
DODO 自托管子图 | https://api.dodoex.io/subgraph/graphql?chainId=56&schemaName=mine-v3 | |
polygon | The Graph 托管服务 | https://thegraph.com/hosted-service/subgraph/dodoex/dodoex-mine-v3-polygon |
DODO 自托管子图 | https://api.dodoex.io/subgraph/graphql?chainId=137&schemaName=mine-v3 | |
arbitrum moonriver aurora boba optimism | 只需将对应的 chainName 或 chainId 替换为其他链的所需值即可。 |
查询示例#
使用 The Graph 托管服务#
打开子图页面以获取 QUERIES(HTTP)地址。
curl 'https://api.thegraph.com/subgraphs/name/dodoex/dodoex-v2' \
-H 'content-type: application/json' \
--data-raw '{"query":"{\n dodoZoos(first: 5) {\n id\n pairCount\n tokenCount\n crowdpoolingCount\n }\n}"}' \
--compressed
使用 The Graph 子图工作室#
您需要使用钱包注册并充值 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 密钥。
curl --location --request GET 'https://api.dodoex.io/subgraph/graphql?chainId=1&schemaName=dodoex&apikey=${apikey}' \
-H 'User-Agent: DODO-${your_id}'
--data-raw '{"query":"{\n dodoZoos(first: 5) {\n id\n pairCount\n tokenCount\n crowdpoolingCount\n }\n}"}' \
--compressed
查询最新的 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 ,根据时间戳按降序检索最新更新的数据。