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 网络中的保留地址。这些地址在所有环境(mainnet、testnet、devnet、localnet)中保持不变,用于特定的原生操作。

地址一览

地址名称别名用途
0x1Move 标准库std基础类型和工具函数
0x2Sui 框架suiSui 核心功能模块
0x5SuiSystem系统状态管理
0x6Clock链上时钟
0x8Random链上随机数
0xcCoinRegistry代币注册表
0x403DenyList代币冻结拒绝列表

详细说明

0x1 — Move 标准库(MoveStdlib)

提供 Move 语言的基础类型和工具:

use std::string::String;
use std::option::{Self, Option};
use std::vector;
use std::type_name;
use std::ascii;
use std::bcs;
use std::hash;
use std::debug;

主要模块:

模块用途
std::stringUTF-8 字符串
std::option可选值类型
std::vector动态数组
std::bcsBCS 序列化/反序列化
std::hash哈希函数(SHA2-256、SHA3-256)
std::type_name类型名称反射
std::asciiASCII 字符串
std::debug调试打印(仅测试可用)
std::unit_test测试断言工具

0x2 — Sui 框架(Sui Framework)

提供 Sui 区块链的核心功能:

use sui::object::{Self, UID, ID};
use sui::transfer;
use sui::tx_context::TxContext;
use sui::coin::{Self, Coin};
use sui::balance::{Self, Balance};
use sui::event;
use sui::clock::Clock;
use sui::table::Table;
use sui::bag::Bag;
use sui::dynamic_field as df;
use sui::dynamic_object_field as dof;
use sui::package;
use sui::display;
use sui::kiosk;

主要模块:

模块用途
sui::object对象创建和管理
sui::transfer对象转移(转让、共享、冻结)
sui::tx_context交易上下文(发送者地址、创建 UID)
sui::coin同质化代币
sui::balance余额管理
sui::event事件发射
sui::clock时间查询
sui::table同构键值集合(动态字段)
sui::bag异构键值集合(动态字段)
sui::dynamic_field动态字段操作
sui::dynamic_object_field动态对象字段操作
sui::package包管理和升级
sui::displayDisplay 标准(NFT 显示元数据)
sui::kioskKiosk 交易协议
sui::ed25519Ed25519 签名验证
sui::hashBlake2b256 哈希
sui::random链上随机数

0x5 — SuiSystem

管理 Sui 网络的系统状态:

use sui::sui_system::SuiSystemState;

包含验证者集合、质押信息、Epoch 管理等系统级功能。

0x6 — Clock

提供链上时间戳:

use sui::clock::Clock;

public fun do_time_check(clock: &Clock) {
    let now_ms = clock.timestamp_ms();
    // 使用时间戳...
}

在交易中使用:

tx.moveCall({
  target: `${packageId}::my_module::do_time_check`,
  arguments: [tx.object('0x6')], // Clock 对象
});

0x8 — Random

提供链上可验证随机数:

use sui::random::Random;

entry fun roll_dice(r: &Random, ctx: &mut TxContext) {
    let mut gen = r.new_generator(ctx);
    let result = gen.generate_u8_in_range(1, 6);
    // 使用随机数...
}

在交易中使用:

tx.moveCall({
  target: `${packageId}::game::roll_dice`,
  arguments: [tx.object('0x8')],
});

0x403 — DenyList

管理代币冻结列表,用于合规场景:

use sui::deny_list::DenyList;

/// 冻结某地址的代币
public fun freeze_address(
    deny_list: &mut DenyList,
    _cap: &DenyCap<MY_COIN>,
    addr: address,
) {
    deny_list.add(addr);
}

在 Move.toml 中的引用

从 Sui 1.45 开始,标准库和 Sui 框架的依赖是隐式的:

[package]
name = "my_package"
edition = "2024"

# 不需要显式声明 Sui 依赖
[dependencies]
# Sui, MoveStdlib, SuiSystem 自动导入

小结

  • 保留地址在所有 Sui 网络环境中保持一致
  • 0x1(标准库)和 0x2(Sui 框架)是最常用的
  • 0x6(Clock)和 0x8(Random)是交易中常引用的系统对象
  • 从 Sui 1.45 起,框架依赖自动导入,无需在 Move.toml 中声明