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

第十二章 · 高级可编程性

本章系统讲解 sui:: Framework(以及与之配合的 std:: 能力)在合约中的实际用法:从每笔交易自带的上下文,到发布时的一次性初始化链下可观测的事件,再到 Epoch / 时钟 / 随机数,然后是 对象内集合与动态字段上的大规模集合,最后落到 Coin / BCS / 密码学全章的模块地图与三层包关系已集中在 §12.1 · Sui Framework 概览,建议先通读 §12.1,再按下面路线读各节。


建议阅读路线

阶段主题说明
A. 交易与启动§12.2TxContext隐式模块 tx_contextsender / epoch / object::new 的前提
§12.3init发布时一次;可与 OTW、package::claim 配合
B. 可观测性§12.4event::emitcopy + drop、内部类型约束;链下索引依赖
C. 时间与随机§12.5Epoch 与 Clock粗粒度 epoch vs 毫秒级 Clock@0x6
§12.14Random@0x8与 §12.5 同属「系统共享对象」语境
D. 存储:小与大§12.6VecMap / VecSet数据在对象内部,适合小规模
§12.7动态字段UID 上异构扩展,是 §12.8 / §12.10 的底层
§12.8动态对象字段值为子对象,可索引
§12.9derived_object确定性地址与注册表模式
§12.10Table / Bag / …基于动态(对象)字段的集合;与 §12.6 对照
E. 资产与数据编码§12.11Balance / Coin代币底层;与第十五章 · 代币衔接
§12.12sui::bcs字节与结构体;与 std::bcs 分工见节内
§12.13哈希与签名crypto/* 原语
回顾§12.1框架总览move-stdlib / sui-framework / sui-system、集合选型表

本章内容(与 §12.1 对照)

主题在框架中的位置(摘要)
11.1Sui Framework 概览packages 三层、std/sui/sui_system、集合与模块总表
11.2交易上下文隐式 sui::tx_context
11.3模块初始化器initsui::package 与 OTW
11.4事件sui::event
11.5Epoch 与时间sui::clockTxContext 中的 epoch
11.6集合类型(Vec)sui::vec_map / vec_set
11.7动态字段sui::dynamic_field
11.8动态对象字段sui::dynamic_object_field
11.9派生对象sui::derived_object
11.10动态集合table / bag / object_* / linked_table / table_vec
11.11Balance 与 Coinbalance / coin / sui::SUI
11.12BCS 序列化sui::bcs(与 std::bcs 配合)
11.13密码学与哈希crypto/*、哈希、签名
11.14链上随机数sui::random

与其它章的衔接


学习目标

读完本章后,你将能够:

  • 正确使用 TxContext,并理解 init 与 OTW 在发布流程中的角色
  • 发出符合验证器要求的 事件,并理解其与链下索引的关系
  • 区分 Epoch / Clock / Random 的语义与适用场景
  • VecMap/VecSetTable/Bag/… 之间做存储选型(并与 §12.1 对照表一致)
  • 使用 动态字段与动态对象字段 扩展对象;在合适场景使用 派生对象
  • 操作 Balance/Coin,并了解 BCS密码学模块 的常见用法

本章实战练习

动手任务见 hands-on.md;示例代码见 code/README.md