第 22 章 成本估算、安全与隐私边界
Walrus 的生产成本来自三类资源:存储期、数据大小、接入层流量。Sui 交易 gas 也要算,但通常不是大文件应用的唯一成本。
成本模型
估算前先收集:
- 平均文件大小和 P95 文件大小。
- 每天新增 Blob 数量。
- 保存期:按 epoch 或产品周期换算。
- 读取次数和出口流量。
- 小文件比例。
- 是否需要自建 publisher/aggregator。
粗略公式:
总成本 = Walrus 存储成本 + Sui gas + 接入服务成本 + CDN/带宽 + 运维人力
不要只看上传价格。读取热点内容时,aggregator、CDN 和出口带宽会成为主要成本。
降成本策略
- 小文件用 Quilt 或批量打包。
- 对重复内容做业务哈希去重。
- 对可再生成内容设置较短保存期。
- 热点公开内容加 CDN。
- 冷数据延迟读取,不做无意义预热。
- 索引器只保存必要派生字段,避免反复扫链。
不要把数据库快照、日志分片、临时构建产物全部长期上传。先按数据价值分级,再决定保存期。
安全边界
Walrus 负责去中心化 Blob 存储和可用性,不负责你的应用权限。默认假设:
- 知道
blob_id的人可以尝试读取内容。 - 公共 aggregator 不会替你做用户鉴权。
- 删除业务对象不等于立即删除已上传数据。
- 链上元数据公开可见。
因此,敏感数据必须先加密再上传。访问控制应在加密密钥、Seal 策略、后端授权或 Move 业务权限中实现。
加密实践
推荐模式:
- 客户端或可信后端生成数据密钥。
- 用数据密钥加密文件。
- 上传密文到 Walrus。
- 用 Seal 或应用自己的密钥系统控制谁能拿到数据密钥。
- 链上只保存密文 Blob 引用和必要策略对象。
不要把明文哈希、文件名、用户邮箱、身份证明等敏感元数据直接写到链上。即使内容加密,元数据也可能泄露业务关系。
隐私清单
上传前检查:
- 文件内容是否加密。
- 文件名是否包含敏感信息。
- MIME、大小、标签是否会泄露业务含义。
- 链上事件是否包含用户私密字段。
- 日志是否记录了完整
blob_id、访问 token 或明文摘要。 - CDN cache key 是否会暴露租户 ID。
对企业应用,建议把 blob_id 当成敏感引用处理:可以内部记录,但不要随意打印到公开日志和前端错误信息。
权限和滥用防护
自建 publisher 必须做:
- 用户认证。
- 单用户大小和频率限制。
- 文件类型和最大尺寸限制。
- 预算上限。
- 恶意内容处理流程。
- 请求审计。
自建 aggregator 至少做:
- 请求限流。
- Range 和大文件下载策略。
- 缓存控制。
- 禁止把内部错误栈返回给客户端。
- 对异常
blob_id输入做格式检查。
公共 Blob 读取不等于公共 API 无限流量。应用后端仍要保护自己的出口成本。