菜单

GraphQL 模式

相关源文件

GraphQL 模式定义了 fuel-core 的完整 API 接口,提供对区块链数据、交易管理和实时更新的结构化访问。此模式是外部客户端和应用程序与 fuel-core 节点交互的主要接口。

有关使用此模式的客户端 SDK 的信息,请参阅客户端 SDK。有关底层网络协议的详细信息,请参阅消息协议

模式架构

GraphQL 模式围绕三种主要操作类型组织:用于数据检索的查询 (queries)、用于状态更改的变异 (mutations) 和用于实时更新的订阅 (subscriptions)。模式定义集中在一个 SDL 文件中,相应的 Rust 实现分布在多个模块中。

模式结构映射

来源:crates/client/assets/schema.sdl1-1533 crates/fuel-core/src/schema/tx.rs1-814 crates/fuel-core/src/schema/tx/types.rs1-98 crates/client/src/client/schema/tx.rs1-574 crates/client/src/client/types.rs1-447 crates/client/src/client.rs1-1360

核心类型和标量

模式定义了几种构成 API 基础的基本标量类型和复杂类型。

主要标量

标量描述用途
地址32字节地址标识符账户和合约地址
资产ID资产标识符代币和资产引用
交易ID交易哈希标识符交易查找
区块ID区块哈希标识符区块引用
合约ID合约标识符智能合约引用
十六进制字符串十六进制编码的字节数据原始交易数据、字节码
U64, U32, U16无符号整数Gas、金额、索引
Tai64时间戳TAI64 时间戳区块和交易时间

来源:crates/client/assets/schema.sdl6-497

交易类型

该模式通过具有条件字段的统一Transaction类型支持多种交易类型。

来源:crates/client/assets/schema.sdl1386-1425 486-756

查询操作

该模式提供全面的查询功能,用于检索带有分页支持的区块链数据。

交易查询

查询描述参数返回类型
transaction获取单个交易id: TransactionId交易
transactions获取分页交易分页参数TransactionConnection
transactionsByOwner按所有者获取交易owner: Address + 分页TransactionConnection

区块和链查询

查询描述参数返回类型
block获取单个区块id: BlockIdheight: U32模块
blocks获取分页区块分页参数BlockConnection
chain获取链信息ChainInfo

资产和余额查询

查询描述参数返回类型
balance获取账户余额owner: Address, assetId: AssetId余额
balances获取分页余额筛选 + 分页BalanceConnection
coin获取单个币/UTXOutxoId: UtxoIdCoin
coins获取可花费的币筛选 + 分页CoinConnection
coinsToSpend获取用于花费的币查询规范[[CoinType!]!]!

来源:crates/client/assets/schema.sdl945-1172 crates/fuel-core/src/schema/tx.rs196-344

专业查询

模式包含几个用于高级功能的专业查询

  • dryRun / dryRunRecordStorageReads - 交易模拟
  • estimatePredicates - 谓词 gas 估算
  • assembleTx - 带有自动输入/输出管理的交易组装
  • storageReadReplay - 历史执行追踪

来源:crates/client/assets/schema.sdl1052-1071 crates/fuel-core/src/schema/tx.rs544-612

变异操作

变异主要处理状态更改操作,主要是交易提交和区块生产。

交易变异

来源:crates/client/assets/schema.sdl755-810 616-674

调试变异

模式包含用于 VM 检查的调试变异

  • startSession / endSession - 调试会话管理
  • execute / continueTx - 逐步执行
  • setBreakpoint / setSingleStepping - 调试控制

来源:crates/client/assets/schema.sdl756-792

订阅操作

订阅提供交易状态更改和存储监控的实时更新。

交易状态订阅

来源:1333-1370 676-814

提交并等待订阅

  • submitAndAwait - 提交交易并等待最终状态
  • submitAndAwaitStatus - 提交并接收包括预确认在内的中间状态更新

来源:1359-1367

连接模式

该模式使用 GraphQL Relay 风格的连接,用于所有列表查询的分页。

连接结构

分页参数

参数类型描述
firstInt向前分页限制
after字符串向前分页游标
lastInt向后分页限制
before字符串向后分页游标

来源:29-95 crates/client/src/client.rs91-95

交易状态类型

模式定义了一个综合的交易状态联合类型,包含涵盖完整交易生命周期的多个变体。

状态联合结构

来源:crates/client/assets/schema.sdl1458 144-460

客户端集成

该模式通过FuelClient消费,该客户端提供与 GraphQL 操作对应的类型化方法。

查询方法映射

客户端自动处理序列化、网络通信和响应解析,同时提供强类型 Rust 接口。

来源:604-885 48-574