mcpField
W
walrus-storage-costs

walrus-storage-costs

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

关于 walrus-storage-costs

walrus-storage-costs 是面向 Walrus 用户的成本说明技能,介绍 WAL 存储费用、SUI gas、epoch 定价和小文件的元数据开销。它提供估算方法与优化建议,帮助规划存储预算。

主要功能

  1. 01说明 WAL 与 SUI 的费用组成
  2. 02解释编码体积和单 blob 元数据开销
  3. 03按存储时长估算费用
  4. 04介绍 dry-run 与定价信息查询
  5. 05提供 quilt 等成本优化方法

适用场景

  1. 01上传前估算数据存储成本
  2. 02规划 WAL 和 SUI 预算
  3. 03比较单独存储与 quilt 批量存储的费用

安装

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

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

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

附带文件evals/evals.json

详细介绍

Walrus 存储成本

来源限制: 本技能中的所有信息均来自 Walrus 存储成本文档 和 Walrus 成本计算器。 扩展本技能时,只能使用这些来源。

存储定价是关于 Walrus 最常被问到的问题。成本模型包含两种代币(WAL 和 SUI)、以单个 blob 计的元数据开销(对小文件的成本影响最大),以及按 epoch 计费的存储时长。本技能将说明成本的计算方式,以及如何估算成本。

本技能中的所有模式均源自:

如果不确定当前价格,请运行 walrus info 或查看成本计算器。


相关技能

主题技能在以下情况下加载
存储 blobwalrus-cli使用 CLI 存储命令
HTTP APIwalrus-http-api通过 REST 存储
TypeScript SDKwalrus-ts-sdk以编程方式估算成本
Quiltswalrus-quilts优化多个小 blob 的成本
Blob 生命周期walrus-blob-lifecycle扩展存储时长、通过删除回收
概览walrus-overview了解 Walrus 的整体架构

技能内容

双代币成本模型

每次存储 blob 的操作都包含两项成本:

代币支付内容收费时机
WALWalrus 存储:在存储节点上为编码后的 blob 预留空间每次存储和扩展操作
SUISui 区块链 Gas:在链上注册、认证和管理 blob 对象每笔交易(每次存储最多 3 笔交易)

你需要在钱包中同时持有 WAL 和 SUI 才能存储 blob。在测试网上,可通过 sui client faucet 获取 SUI,并从 Walrus 测试网水龙头获取 WAL。

WAL 成本明细

存储 blob 的 WAL 成本分为两部分:

  1. 存储成本 = encoded_size × price_per_unit × epochs

    • encoded_size = 经过擦除编码后的原始 blob 大小(约为原大小的 4.5 倍),再加上每个 blob 固定约 64 MB 的元数据
    • price_per_unit = 每个 epoch 的编码存储单位价格(运行 walrus info 查看)
    • epochs = 存储 epoch 数量
  2. 写入费 = 每次上传收取的一次性固定费用,与 blob 大小或 epoch 数量无关

运行 walrus info 查看当前值:

walrus info
# Shows: price per encoded storage unit, write fee, current epoch, epoch duration
单个 blob 的元数据开销

无论 blob 的实际大小如何,每个 blob 都会产生约 64 MB 的元数据开销。这些元数据属于编码存储的一部分,并计入成本计算。

Blob 大小编码后大小(约)元数据占成本比例
1 KB~64 MB~99.99%
1 MB~68.5 MB~93%
10 MB~109 MB~59%
100 MB~514 MB~12%
1 GB~4.6 GB~1.4%

这就是为什么单独存储小 blob 的成本很高。 一个 1 KB 的 JSON 文档,其成本大致相当于一个 64 MB 的文件。对于大量小文件,可使用 quilts 将它们批量打包成一个存储单元,从而将元数据开销分摊到所有文件上。

SUI Gas 成本

每次存储操作最多涉及 3 笔链上 Sui 交易:

  1. reserve_space — 获取存储资源
  2. 注册 blob
  3. 认证 blob(提交可用性证书)

每笔交易都会产生 SUI Gas 费用。此外,blob 的 Sui 对象还会向 Sui 存储基金存入 SUI。删除 blob 对象时(通过 walrus delete 或 walrus burn-blobs),这笔存款中的大部分会退还。

Epoch 时长
网络Epoch 时长
主网14 天
测试网不定(比主网短)

最长存储时长为 53 个 epoch(主网上约为 2 年)。将 epoch 换算为月数:months = epochs × 14 / 30(主网)。规划存储预算时,务必按月计算,而不是按 epoch 计算。

估算成本
成本计算器(网页)

使用 Walrus 成本计算器进行交互式估算。输入文件大小和存储时长,即可查看 WAL 成本。

手动计算

文档提供了以美元计价的两步估算方法(存储按固定美元费率定价,并以 WAL 支付,因此 WAL 数量会随 WAL 价格波动):

encoded_size_GB  = 4.5 * original_size_GB + 0.064
monthly_cost_USD = encoded_size_GB * 0.023

将 600 个 10 KiB 的文件分别存储:每个文件约产生 0.064 GB 的开销,合计 38.4 GB;存储 6 MB 数据每月约需 0.88 美元。将这些文件存储为一个 quilt:4.5 × 0.006 + 0.064 ≈ 0.09 GB,每月约需 0.002 美元。文档中的实测对比记录显示,在这种情况下可节省 409 倍,文件大小为 1 MiB 时可节省 13 倍;文件大小超过约 1 MiB 后,存储成本的节省会迅速减少。

CLI 试运行#### CLI 试运行
# Estimate cost without actually uploading
walrus store --dry-run myfile.dat --epochs 10

返回编码后的大小和估算成本,不会提交交易或花费代币。

CLI 信息
# Show current pricing parameters
walrus info --json

返回每个编码存储单位的价格、写入费用、当前 epoch 和最多可提前的 epoch 数。

TypeScript SDK

WalrusClient 提供 storageCost 方法;使用前请在 TypeDocs 中查看其签名。

成本优化策略
策略节省幅度适用场景
小文件使用 quilts对许多小型 blob,最高可节省 99%存储许多每个小于 10 MB 的文件
重复使用存储资源无需购买新的存储资源钱包中有合适资源时,CLI 会自动执行
删除已过期的 blob 对象收回 SUI 存储基金存款blob 过期后,使用 walrus burn-blobs --all-expired 销毁它们
延长存储时长,而非重新上传避免写入费用和编码成本blob 需要存储更长时间时
用于频繁增删的存储池(预览版)每次存储只需支付写入费用仅适用于 Rust SDK / Move;在稳定的存储占用下持续写入和删除,并使用统一的到期时间
仅在需要时使用永久 blob可删除的 blob 可以收回存储资源默认情况下 blob 可删除,因此你可以收回存储资源
规则
  1. 大批量上传前务必先检查 walrus info。 定价可能会在不同 epoch 之间发生变化。
  2. 批量存储小文件时使用 quilts。 每个 blob 64 MB 的开销会让单独存储小文件的效率非常低。
  3. 同时为 WAL 和 SUI 预留预算。 WAL 用于支付存储费用,SUI 用于支付 gas。任一代币不足都会导致操作无法进行。
  4. 按月而非按 epoch 估算。 epoch 时长可能有所不同。使用 walrus info 检查当前时长。
  5. 使用 burn-blobs --all-expired 收回 SUI。 过期的 blob 对象仍会占用存储基金中的 SUI。销毁它们即可收回这些存款。
  6. 生产环境上传前先使用 --dry-run。 在提交代币前核实成本,尤其是上传大型数据集时。
常见错误
  • 不明白为什么一个很小的 JSON blob 和一个 64 MB 的文件成本相同。 每个 blob 约 64 MB 的元数据开销对小文件影响很大。请改用 quilts。
  • 忘记写入费用。 每次上传都会收取写入费用,与大小或 epoch 数无关。该费用独立于按单位计算的存储成本。
  • 混淆 WAL 和 SUI 成本。 WAL = 在 Walrus 节点上的存储费用。SUI = Sui 交易的 gas 费用。它们是用途不同的两种代币。
  • 未考虑纠删码开销。 编码后的大小约为原始 blob 大小的 4.5 倍,再加上固定的元数据。成本根据编码后的大小计算,而非原始大小。
  • 误以为存储期限没有限制。 最长为 53 个 epoch(约 2 年)。如果数据需要保留更久,请使用 walrus extend 规划续期。
  • 未使用 --dry-run 估算成本。 此标志会显示成本,但不会花费任何代币。大批量上传前务必使用。
  • 为相同内容重复付费存储。 如果已存在内容相同且剩余存储期限足够的永久 blob,CLI 会自动跳过重新上传(返回 alreadyCertified)。这是预期行为,可以节省费用。

评论

支持 Markdown