ch01 DeepBook 与链上订单簿入门
本章目标
第一章的任务不是把所有源码讲完,而是帮读者建立正确的入口。DeepBook 不是 AMM,也不是一个单独的前端产品;它是一组围绕链上订单簿、账户托管、事件索引和 SDK 集成组织起来的交易基础设施。
读完本章后,读者应该能用自己的话区分 CLOB 与 AMM,能在本地找到 DeepBookV3、Margin、Predict、Indexer 和 Server 的源码边界,能画出一次下单从钱包签名到 Pool、BalanceManager、事件和 Indexer 的路径,并完成一次最小池子对象查询。
本章学习阶梯
- L1 建立 CLOB、AMM、订单、池子和角色直觉。
- L2 完成环境检查和第一个池子对象查询。
- L3 把查询结果映射到 Sui object、type、shared owner 和网络配置。
- L4 能用自己的话画出一次下单从钱包到事件的路径。
源码地图
本章只读取项目入口和产品边界,不进入撮合细节。源码地图的作用是建立导航能力:读者知道后续遇到订单、余额、事件、SDK 或 Server 时该回到哪个目录。
| 主题 | GitHub 源码 | 阅读重点 |
|---|---|---|
| 仓库入口 | README.md | DeepBookV3 的 CLOB 定位、BalanceManager、Pool、DEEP 费用和治理 |
| DeepBook Move 包 | packages/deepbook/README.md | 和仓库入口一致,是合约包级别说明 |
| DeepBookV3 合约 | packages/deepbook | Spot CLOB、BalanceManager、Pool、Book、State、Vault |
| DeepBook Margin | packages/deepbook_margin | 保证金和普通借贷,不等同于 DeepBookV3 闪电贷 |
| DeepBook Predict | packages/predict | 预测市场相关包,版本和网络状态以后按源码核对 |
| Indexer | crates/indexer | 从链上事件落库 |
| Server | crates/server | 对外查询服务 |
| 运维脚本 | scripts/transactions | 创建池子、升级、参数更新和做市脚本 |
小节目录
- 01 本书定位
- 02 DeepBook 是 CLOB,不是 AMM
- 03 CLOB、AMM、RFQ 和聚合器
- 04 产品边界:V3、Margin、Predict
- 05 为什么 Sui 对象模型适合订单簿
- 06 核心用户角色
- 07 全局心智模型
- 08 网络使用方式
- 09 环境安装
- 10 检查 DeepBook 源码仓库结构
- 11 本书项目目录规范
- 12 第一个读者任务:查询池子对象
- 13 术语表
- 14 本章代码
Move 高阶穿插点
- 环境搭建不只是安装工具,还要建立“源码、链上对象、SDK、Indexer”四个视角之间的跳转习惯。
- 查询池子对象时,优先记录对象 ID、type、version、owner 和 shared object 状态,这些字段决定后续 PTB 能否正确构造。
- 遇到 DeepBook 术语时,立刻追问它是链上对象、事件字段、SDK 配置,还是纯前端展示概念。
常见错误
- 把 DeepBookV3 当成 AMM,只查储备量,不查订单簿、订单和事件。
- 把 packages/deepbook_margin 的借贷逻辑误认为 DeepBookV3 spot 交易路径。
- 在 mainnet 对象 ID 上使用 testnet RPC,导致对象不存在。
- 构造交易前没有确认
BalanceManager所属 owner、cap 和交易者关系。 - 只看前端返回值,不订阅或索引
event::emit产生的链上事件。
本章检查清单
- 能指出 DeepBookV3 源码包路径。
- 能解释 CLOB 和 AMM 的交易路径差异。
- 能画出钱包到
Pool、BalanceManager、事件、Indexer 的路径。 - 能运行环境检查命令。
- 能查询一个池子对象并确认网络一致。
进阶练习
- 用文字画出一次限价买单从钱包签名到
OrderPlaced事件的路径。 - 阅读 packages/deepbook/sources/pool.move,列出
place_limit_order的每个参数含义。 - 阅读 packages/deepbook/sources/balance_manager.move,解释为什么 owner 和 trader 的权限不同。