DODO 文档中心

子图数据(GraphQL)

子图数据(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 即可,例如:

ChainNameChainId
moonriver1285
aurora1313161554
avax43114
optimism10

vDODO#

对与 vDODO 相关的数据进行索引 数据应用页面:https://app.dodoex.io/gov/vdodo?network=mainnet

ERC20Token#

将与在 DODO 上创建的代币相关的数据进行索引。 数据应用页面:https://app.dodoex.io/dev/erc20?network=mainnet

提供者子图服务地址
ethereumThe Graph 托管服务https://thegraph.com/hosted-service/subgraph/dodoex/dodoex-token
DODO 自托管子图https://api.dodoex.io/subgraph/graphql?chainId=1&schemaName=token
bscThe Graph 托管服务https://thegraph.com/hosted-service/subgraph/dodoex/dodoex-token-bsc
DODO 自托管子图https://api.dodoex.io/subgraph/graphql?chainId=56&schemaName=token
polygonThe 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

提供者子图服务地址
ethereumThe Graph 托管服务https://thegraph.com/hosted-service/subgraph/dodoex/dodoex-mine-v3
DODO 自托管子图https://api.dodoex.io/subgraph/graphql?chainId=1&schemaName=mine-v3
bscThe Graph 托管服务https://thegraph.com/hosted-service/subgraph/dodoex/dodoex-mine-v3-bsc
DODO 自托管子图https://api.dodoex.io/subgraph/graphql?chainId=56&schemaName=mine-v3
polygonThe 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)地址。

subgraph1
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] 替换为您自己的。

subgraph2
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 ,根据时间戳按降序检索最新更新的数据。