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

ch02-12 阅读 Move.toml

返回本章

先建立手感

先不要把“阅读 Move.toml”当成孤立语法点。DeepBook 里每个资产、订单和权限对象都会受 Move 类型系统约束,读这一节时要看语法如何变成资金安全边界。

Move 对照

先用下面几处源码建立 Move 概念的落点。这里不追完整协议流程,只确认类型、ability、对象、事件和测试入口如何在真实项目中出现。

读这些文件时,把语法点和真实对象放在一起看:ability、泛型、对象 ID、事件和测试入口分别承担什么约束。

拆开来看

DeepBookV3 的包配置在 packages/deepbook/Move.toml

[package]
name = "deepbook"
edition = "2024.beta"
version = "0.0.1"

[dependencies]
token = { git = "https://github.com/MystenLabs/deepbookv3.git", subdir = "packages/token", rev = "main"}

[addresses]
deepbook = "0x0"

name 决定包名,edition 决定 Move 语法版本,dependencies 说明依赖 token 包,addresses 给源码中的 deepbook::... 提供编译期地址占位。

开发实践:本地练习包可以先用 0x0,发布后 CLI 会给出真实 package ID。调用链上函数时必须使用真实 package ID,而不是 0x0

阅读补充

Move.toml 是进入一个 Move 包的第一张地图。它告诉你包名、edition、依赖来源和地址别名;这些信息会影响源码里的 module 路径、发布地址和测试构建行为。

比较 DeepBook、Margin、Predict 的 Move.toml,可以快速看出它们是独立包还是共享依赖。不要只凭目录名判断协议关系,包配置里的依赖才是更可靠的入口。

Move 判断

  • 读源码前先确认当前包名和地址别名。
  • 升级或切换分支后重新检查 dependency rev/path。
  • 引用模块时用 Move.toml 中的地址映射解释来源。

练习问题

  • Move.toml 中哪些字段会影响源码阅读?
  • 为什么包依赖比产品名称更能说明边界?
  • 地址别名写错会造成哪类调用问题?