xtruth

Subgraph API

读历史数据 —— 断言、投票、质押余额 —— 直接查 subgraph,不走链。 索引服务持续更新,提供 GraphQL 接口。

端点

全部从 https://subgraph.xtruth.xyz 提供。

| Subgraph | 端点 | |---|---| | OOv1 | /subgraphs/name/xtruth/xlayer-testnet-optimistic-oracle | | OOv2 | /subgraphs/name/xtruth/xlayer-testnet-optimistic-oracle-v2 | | OOv3 | /subgraphs/name/xtruth/xlayer-testnet-optimistic-oracle-v3 | | SkinnyOO | /subgraphs/name/xtruth/xlayer-testnet-skinny-oo | | VotingV2 | /subgraphs/name/xtruth/xlayer-testnet-voting-v2 |

CORS 对浏览器开放。

健康检查

每个 graph-node 部署都暴露 _meta,可以验证索引是否存活以及距离链头有多远:

{
  _meta {
    block { number timestamp }
    deployment
    hasIndexingErrors
  }
}

OOv3 — 最近的断言

{
  assertions(
    first: 20
    orderBy: assertionTimestamp
    orderDirection: desc
  ) {
    id
    assertionId
    claim
    asserter
    identifier
    currency
    bond
    expirationTime
    disputer
    settlementResolution
    assertionTimestamp
    settlementTimestamp
  }
}

OOv3 — 按 id 查单个断言

query Assertion($id: ID!) {
  assertion(id: $id) {
    assertionId
    claim
    asserter
    bond
    expirationTime
    disputer
    settlementResolution
    settlementTimestamp
  }
}

(id 就是 assertionId。)

OOv3 — 当前争议中的

{
  assertions(
    where: { disputer_not: null, settlementTimestamp: null }
    orderBy: disputeTimestamp
    orderDirection: desc
  ) {
    assertionId
    claim
    disputer
    disputeTimestamp
  }
}

VotingV2 — 全网统计

{
  globals(first: 1) {
    cumulativeStake
    emissionRate
    annualVotingTokenEmission
    annualPercentageReturn
    countCorrectVotes
    countWrongVotes
    countNoVotes
  }
}

VotingV2 — 单个投票者

query Voter($id: ID!) {
  user(id: $id) {
    address
    voterStake
    voterPendingUnstake
    withdrawnRewards
    cumulativeSlash
    cumulativeSlashPercentage
    countCorrectVotes
    countWrongVotes
    countNoVotes
    annualPercentageReturn
  }
}

(id 是投票者地址,小写。)

轮询频率

Web 控制台用 react-query 轮询,从 5 秒(实时状态)到 60 秒(慢变化的聚合 数据)不等。你自己的 UI 用任何 GraphQL 客户端都行,我们用 graphql-request

何时不要用 subgraph

Subgraph 是最终一致的 —— 一般落后链头几秒,刚 redeploy 后会更久。 以下场景应该直接打 RPC:

其他场景(列表、历史、仪表盘)优先 subgraph。