mcpField
W
walrus-overview

walrus-overview

github.com/mystenlabs云与 DevOps344 次安装1 周前更新
代码仓库

关于 walrus-overview

walrus-overview 是介绍 Walrus 的指南技能,涵盖其去中心化二进制数据存储架构、术语和工具选择,并将具体任务引导至相应技能。

主要功能

  1. 01介绍 Walrus 架构与术语
  2. 02提供工具选择指引
  3. 03导向专门任务技能
  4. 04解释 Blob ID 与生命周期

适用场景

  1. 01为应用选择 Walrus 接口
  2. 02了解 Blob ID 和存储期限
  3. 03查找上传或读取数据的方法
  4. 04寻找成本、安全或故障排查指南

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mystenlabs/walrus-skills --skill walrus-overview

安装后在 Claude Code 中输入/walrus-overview确认已加载。

附带文件evals/evals.json

详细介绍

Walrus 概览

来源限制: 本技能中的所有信息均来自 Walrus 文档和 Walrus 白皮书。 扩展本技能时,只能使用这些来源。

Walrus 是构建于 Sui 区块链之上的去中心化存储协议。它使用纠删码,将任意二进制数据(“blob”)存储在由独立存储节点组成的网络中。Sui 智能合约负责管理 blob 注册、认证、支付和元数据。

本技能是了解 Walrus 的入口,涵盖其架构、核心术语,以及如何根据使用场景选择合适的工具。若要了解特定工具的用法,请加载对应技能。


相关技能

主题技能在以下情况下加载
CLIwalrus-cli使用 walrus 二进制文件
HTTP APIwalrus-http-api通过 REST 存储/读取
TypeScript SDKwalrus-ts-sdk通过 TypeScript 进行编程访问
Move 集成walrus-move-integration在 Move 合约中封装 blob
存储成本walrus-storage-costs定价、估算、成本优化
Blob 生命周期walrus-blob-lifecycle延长、删除、共享 blob
Siteswalrus-sites部署静态网站
Quiltswalrus-quilts批量处理许多小型 blob
保密性walrus-data-security存储前加密;Walrus 保证可用性和完整性,但不保证保密性
故障排查walrus-troubleshooting常见错误及修复方法

路由指南

任务加载
“什么是 Walrus?”/“它如何工作?”下方的技能内容
“我应该使用哪个工具?”下方的决策树
“什么是 blob / blob ID / object ID?”下方的术语说明
存储文件walrus-cli 或 walrus-http-api 或 walrus-ts-sdk
估算成本walrus-storage-costs
部署网站walrus-sites
加密数据walrus-data-security
修复错误walrus-troubleshooting

技能内容

什么是 Walrus?

Walrus 是一种去中心化 blob 存储协议。你上传文件后,Walrus 会将其编码为片段,并分发到各个独立存储节点;Sui 区块链则会跟踪其所有权和可用性。这样一来,即使节点发生故障,存储仍可持续运行,不存在单点控制,并且能提供数据未遭篡改的加密证明。

主要特性:

  • 默认公开。 任何拥有 blob ID 的人都可以读取所有 blob。如果需要隐私,请在上传前加密(参见 walrus-data-security)。
  • 基于内容寻址。 相同的文件内容始终会生成相同的 blob ID。
  • 有时限。 存储期限固定,以 epoch 为单位(最长约 2 年)。若要延长保存时间,必须延长 blob 的存储期限或重新上传。
  • 容错。 即使多达 2/3 的存储节点发生故障,数据仍可用。
三层架构
  1. 客户端层。 你的代码(CLI、SDK 或 HTTP 请求)对 blob 进行编码,将片段分发到存储节点,并与 Sui 交互以完成注册和认证。

  2. 存储节点层。 独立运营方运行存储节点,保存经过纠删码编码的 blob 片段(“sliver”)。每个节点持有一个或多个分片。节点会验证 sliver、签署回执,并参与 epoch 转换。主网上有 60 多家运营方运行节点。

  3. Sui 区块链层。 Sui 上的智能合约负责管理支付(WAL 代币)、存储资源分配、分片与节点的分配关系、blob 注册/认证以及元数据。区块链是协调层,而非数据层。

存储流程
  1. 客户端使用 RedStuff 纠删码对数据块进行编码,生成分布在所有分片上的碎片(存储开销约为 4.5 倍)。
  2. 客户端在 Sui 上注册数据块,并支付 WAL 作为存储费用、支付 SUI 作为 Gas 费用。
  3. 碎片并行发送到存储节点。每个节点都会验证并签署回执。
  4. 收到 2/3 节点的确认后,将签名聚合为可用性证书并提交到 Sui。
  5. **可用性时间点(PoA)**标记 Walrus 开始保证数据块在整个存储期限内可用的时间。
读取流程
  1. 客户端向存储节点请求碎片。
  2. 收集到超过 1/3 节点的碎片后,即可重建原始数据块。
  3. 或者,由聚合器代你完成这些操作,并通过 HTTP 提供数据块。
核心术语
术语定义
数据块存储在 Walrus 上的任意二进制数据(文件、图像、JSON、视频等)。最大约 13.6 GiB。
数据块 ID用于标识数据块内容的 URL 安全 Base64 字符串。按内容寻址:相同内容 = 相同 ID。用于读取。
Sui 对象 ID用于标识链上 Blob Sui 对象的 0x... 十六进制字符串。每次上传都会不同,即使内容相同也是如此。用于生命周期操作(延长、删除、共享)。
纪元一个时间段。主网上为 14 天。存储期限以纪元为单位计算。
碎片经过纠删码编码的数据块中的一个片段,存储在单个分片上。
分片存储空间的一个分区,每个纪元分配给一个存储节点。
发布器接收数据块数据(PUT)的 HTTP 服务,使用其自行注资的钱包处理编码、分发和链上注册。Walrus 不会在主网上运行公开且无需身份验证的发布器,也无此计划;请自行运行并置于身份验证机制之后。公开的测试网发布器已存在。
聚合器通过从存储节点获取碎片来读取数据块(GET)的 HTTP 服务。两个网络上都有许多可免费使用的公开聚合器。
上传中继代表带宽受限的客户端(例如浏览器)处理编码和碎片分发的第三方服务。可能会收取小费。
WALWalrus 代币,用于支付存储费用。
SUISui 代币,用于支付链上 Gas 费用。
可用性时间点(PoA)可用性证书发布到链上的时刻;此后 Walrus 会保证数据块可用。
可删除数据块所有者可以在到期前删除的数据块(默认类型)。
永久数据块即使是上传者,也无法在到期前删除的数据块。
Quilt包含多个数据块的单个存储单元,可减少每个数据块的开销。
共享数据块封装在 Sui 共享对象中的 Blob,任何人都可以为其充值并延长其期限。Walrus 合约提供 SharedBlob 作为参考实现;开发者也可以创建自定义共享封装。
存储池预览功能:一笔预付存储预留供多个数据块共享,因此每次存储只需支付写入费用,池中的所有数据块会同时到期。仅支持 Rust SDK 和 Move;CLI、HTTP API 和 TypeScript SDK 暂不支持。
数据块 ID 与 Sui 对象 ID

这是新用户最常混淆的问题:

数据块 IDSui 对象 ID
格式URL 安全 Base64(例如 M4hsZGQ1oCk...)带 0x 前缀的十六进制字符串(例如 0xe91eee8c...)
派生自数据块内容(按内容寻址)Sui 交易(每次上传都唯一)
相同内容上传两次?数据块 ID 相同对象 ID 不同
用途读取数据块内容生命周期操作(延长、删除、共享、销毁)
获取位置存储响应(blobId 字段)存储响应(blobObject.id 字段)
决策树:使用哪种工具
你想要……使用技能
从终端上传文件walrus store CLIwalrus-cli
在 CI/CD 流水线中编写上传脚本walrus json CLI(JSON 模式)walrus-cli
通过 HTTP 从任意语言存储/读取数据Publisher/aggregator REST APIwalrus-http-api
构建 TypeScript/JavaScript 应用@mysten/walrus SDKwalrus-ts-sdk
从浏览器上传TypeScript SDK + 上传中继walrus-ts-sdk
在 Move 合约中引用 blobWalrus Move 依赖项walrus-move-integration
部署静态网站site-builder CLIwalrus-sites
以低成本存储大量小文件Quilts(CLI 或 HTTP)walrus-quilts
存储敏感/私有数据在客户端加密(例如使用 Seal),然后存储walrus-data-security
让用户上传而无需持有 SUI 或 WAL后端 publisher(赞助式、无需钱包)、上传中继,或搭配后端签名者的 SDKwalrus-http-api
在依赖某个 blob 之前,确认它已持久存储walrus blob-status / getBlobObjectwalrus-blob-lifecycle
Walrus 与传统存储
WalrusAWS S3 / Cloud Storage
控制权没有单一运营方控制数据服务提供商控制一切
信任模型加密验证信任平台
容错能力可承受 2/3 节点故障服务提供商 SLA
隐私默认所有数据均为公开默认私有
成本模型WAL + SUI 代币,按 epoch 计费美元,按月计费
时长每次购买最长约 2 年,可续期无限期
结构扁平 blob 存储(无目录)目录/存储桶
可验证性加密 blob ID、链上证书无

Walrus 最适合需要抗审查、可验证性、去中心化可用性或可编程访问控制的场景。它并非所有云存储的即插即用替代品,而只替代对象/blob 存储部分。

选择服务

根据你实际面临的限制进行选择:

  • 调用方读取 blob:使用 aggregator。
  • 调用方无法持有 SUI 或 WAL:使用 publisher;在 Mainnet 上运行时,请运行并验证你自己的 publisher。
  • 调用方持有钱包,但运行环境是浏览器或移动设备:使用上传中继。
  • 调用方在服务端运行并持有有资金的钱包:通过 TypeScript SDK 写入,它会直接与存储节点通信。
规则
  1. 所有 blob 均为公开数据。 如需隐私保护,请在上传前加密。
  2. 存储有时限。 请规划续期。最长为 53 个 epoch(主网约 2 年)。
  3. 你需要 WAL 和 SUI。 WAL 支付存储费用,SUI 支付 gas 费用。
  4. 没有公开的主网 publisher。 请使用上传中继、TypeScript SDK、CLI,或运行自己的 publisher。
  5. 单独存储小 blob 成本较高。 批量存储小文件时请使用 quilts。
  6. Blob ID 不等于 object ID。 前者是内容哈希(用于读取),后者是链上对象(用于管理)。请勿混淆。

评论

支持 Markdown