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

第 22 章 成本估算、安全与隐私边界

Walrus 的生产成本来自三类资源:存储期、数据大小、接入层流量。Sui 交易 gas 也要算,但通常不是大文件应用的唯一成本。

成本模型

估算前先收集:

  • 平均文件大小和 P95 文件大小。
  • 每天新增 Blob 数量。
  • 保存期:按 epoch 或产品周期换算。
  • 读取次数和出口流量。
  • 小文件比例。
  • 是否需要自建 publisher/aggregator。

粗略公式:

总成本 = Walrus 存储成本 + Sui gas + 接入服务成本 + CDN/带宽 + 运维人力

不要只看上传价格。读取热点内容时,aggregator、CDN 和出口带宽会成为主要成本。

降成本策略

  • 小文件用 Quilt 或批量打包。
  • 对重复内容做业务哈希去重。
  • 对可再生成内容设置较短保存期。
  • 热点公开内容加 CDN。
  • 冷数据延迟读取,不做无意义预热。
  • 索引器只保存必要派生字段,避免反复扫链。

不要把数据库快照、日志分片、临时构建产物全部长期上传。先按数据价值分级,再决定保存期。

安全边界

Walrus 负责去中心化 Blob 存储和可用性,不负责你的应用权限。默认假设:

  • 知道 blob_id 的人可以尝试读取内容。
  • 公共 aggregator 不会替你做用户鉴权。
  • 删除业务对象不等于立即删除已上传数据。
  • 链上元数据公开可见。

因此,敏感数据必须先加密再上传。访问控制应在加密密钥、Seal 策略、后端授权或 Move 业务权限中实现。

加密实践

推荐模式:

  1. 客户端或可信后端生成数据密钥。
  2. 用数据密钥加密文件。
  3. 上传密文到 Walrus。
  4. 用 Seal 或应用自己的密钥系统控制谁能拿到数据密钥。
  5. 链上只保存密文 Blob 引用和必要策略对象。

不要把明文哈希、文件名、用户邮箱、身份证明等敏感元数据直接写到链上。即使内容加密,元数据也可能泄露业务关系。

隐私清单

上传前检查:

  • 文件内容是否加密。
  • 文件名是否包含敏感信息。
  • MIME、大小、标签是否会泄露业务含义。
  • 链上事件是否包含用户私密字段。
  • 日志是否记录了完整 blob_id、访问 token 或明文摘要。
  • CDN cache key 是否会暴露租户 ID。

对企业应用,建议把 blob_id 当成敏感引用处理:可以内部记录,但不要随意打印到公开日志和前端错误信息。

权限和滥用防护

自建 publisher 必须做:

  • 用户认证。
  • 单用户大小和频率限制。
  • 文件类型和最大尺寸限制。
  • 预算上限。
  • 恶意内容处理流程。
  • 请求审计。

自建 aggregator 至少做:

  • 请求限流。
  • Range 和大文件下载策略。
  • 缓存控制。
  • 禁止把内部错误栈返回给客户端。
  • 对异常 blob_id 输入做格式检查。

公共 Blob 读取不等于公共 API 无限流量。应用后端仍要保护自己的出口成本。