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:
- 用户当前的 allowance 和余额(在交易构造前需要)。
- 用户的 stake 仓位是否在最近的 updateTracker 后被罚没。
- 你即将在同一笔交易里要修改的状态。
其他场景(列表、历史、仪表盘)优先 subgraph。