Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ch01-12 第一个读者任务:查询池子对象

返回本章

先看问题

先把“第一个读者任务:查询池子对象”放到读者路径里看:你不是在背一个协议名,而是在建立一套判断 DeepBook 能做什么、不能做什么的坐标。读这一节时,重点看产品边界如何落到对象、交易和数据系统上。

本节坐标

本节先把源码范围缩到最少。读的时候只抓产品边界、对象名称、函数入口和事件线索;后面进入交易路径时,再回到这些入口核对细节。

这一组入口用来校准产品边界:先看它们暴露哪些对象和动作,再判断本节概念最终会落到哪条交易或数据路径。

建立直觉

选择一个真实 DeepBook 池子对象 ID,设置为 POOL_ID,然后使用 Sui CLI 或 TypeScript SDK 查询对象。最小目标不是下单,而是确认对象存在、网络正确、字段能被读取。

CLI 方向:

sui client object "$POOL_ID" --json

TypeScript 方向使用 @mysten/sui/clientgetObject,传入 showTypeshowContent。如果返回 object not found,先检查 NETWORKRPC_URL,再检查池子 ID 是否属于同一网络。

阅读补充

第一个任务选择查询 Pool,是因为它不需要签名交易,却能验证 RPC、对象 ID、package 类型和字段解析。查询结果里重点看对象类型是否包含 Pool<BaseAsset, QuoteAsset>,字段中是否能看到 bookstatevault 或版本相关结构。

读查询输出时不要只看“有返回”。要把返回类型与 pool.move 中的 Pool 定义对照,把对象 ID 与 Registry 或官方配置对照,把网络与 RPC URL 对照。三者一致,后续才适合进入下单练习。

落地判断

  • 查询脚本输出必须包含 RPC、Pool ID 和对象类型。
  • 对象存在但类型不匹配时,优先检查是否拿错池或网络。
  • 只读查询不能证明余额和权限足够,只能证明对象入口可达。

读完以后问自己

  • 查询 Pool 对象可以验证哪三类配置?
  • 对象类型里的 base/quote 泛型为什么重要?
  • 为什么第一步不直接发送下单交易?