用途:在 Sui Move 合约中引用、封装和管理 Walrus blob,用于实现数据支持的 NFT、托管 blob 的市场或访问控制等模式。依据官方 Walrus Move 示例页面、示例包与 Walrus 合约整理。\n\n主要能力:walrus::blob::Blob 是 blob 的链上表示,具备 key 与 store 能力,持有元数据(blob ID、大小、编码、注册与认证 epoch、Storage 资源、可删除性)。可把 Blob 字段嵌入自定义 key 结构体实现封装,封装后仅本模块函数可再访问该 blob。walrus::blob 提供 object_id、blob_id、size、encoding_type、registered_epoch、certified_epoch、storage、end_epoch、is_deletable、encoded_size 等访问器,并提供 burn 与元数据函数(insert_or_update_metadata_pair、remove_metadata_pair、add_metadata、take_metadata)。walrus::system 提供 extend_blob、extend_blob_with_resource、delete_blob 等生命周期函数。walrus::shared_blob 可将 Blob 封装为 SharedBlob,支持 new、new_funded、fund、extend。另有预览版存储池函数。\n\n用法:Move.toml 使用 edition = "2024",并以 git 依赖声明 Walrus,例如 Walrus = { git = "https://github.com/MystenLabs/walrus.git", rev = "main", subdir = "contracts/walrus" }。开发用 contracts/walrus,主网部署源用 mainnet-contracts/walrus,测试网用 testnet-contracts/walrus;生产环境应固定 rev 到具体 commit。构建与发布命令为 sui move build、sui move test、sui client publish --skip-dependency-verification。封装模式中包装结构体需自带 UID,blob 保留自身对象。\n\n限制:blob 内容在链下,Move 只能读元数据,读取内容需用 CLI、SDK 或 HTTP API。发布时若出现 VMVerificationOrDeserializationError,需检查网络对应 subdir、rev 与 Move.lock;升级后直接 Move 调用须使用当前包 ID,避免 EWrongVersion。资料未提供收费、价格与其他平台支持信息。
walrus-move-integration
编程与开发
更新于 10-16 01:33