架构
Walrus 架构中有以下关键角色:
-
用户
- 通过 clients 可以存储和读取由blob ID标识的二进制对象。当涉及写入时用户需要付费,Walrus支持任意加密货币来支付费用,目前Walrus devnet阶段使用 Sui testnet 的 SUI 支付费用。
-
存储节点
-
存储节点会在一个存储 epoch 内存储一个或多个分片(shards),每个blob对象都被擦除码算法编码成多个碎片(slivers)。每个存储的 blob 中的sliver都会成为所有分片的一部分。任何存储时期的分片都与实际存储分片的所有分片的存储节点相关联。
-
Sui 智能合约控制存储 epoch 内分片到存储节点的分配,而 Walrus 假设每个存储 epoch 内超过 2/3 的分片由正确的存储节点管理。这意味着 Walrus 必须在每个存储 epoch 内以及跨存储纪元容忍最多 1/3 的拜占庭存储节点(大约 1/3 的存储节点是拜占庭式的)管理的分片。
-
-
在 Sui 链上协调同步
- 所有 clients 和存储节点都运行一个区块链客户端(目前是在 Sui 上),并通过区块链智能合约调解支付、资源(空间)、分片到存储节点的映射以及元数据。用户与区块链交互以获取存储资源并上传存储的 blob 的certificate。存储节点监听区块链事件来协调其操作。
Walrus 支持任何额外数量的可选基础设施参与者,下面这些参与者可以以无需许可的方式运行:
-
Aggregators 聚合器
- 聚合器是从碎片重建 blob 并通过传统 web2 技术(例如 HTTP)将其提供给用户的客户端。这不是必须的,因为最终用户可以直接重建 blob 或运行本地聚合器以在本地通过 web2 技术执行 Walrus 读取。
-
Caches 缓存
- 缓存是具有缓存功能的聚合器,可减少延迟并减少存储节点上的负载。此类缓存基础设施还可以充当 CDN,将 blob 重建的成本分摊到多个请求上,实现更好的连接,client 始终可以验证从此类基础设施读取的数据是否正确。
-
Publishers 发布工具
-
发布工具是帮助最终用户使用 web2 技术存储 blob 的客户端。它们接收要通过传统 web2 协议(如 HTTP)发布的 blob,并代表最终用户运行 Walrus 存储协议。这包括将 blob 编码为碎片、将碎片分发到存储节点、收集存储节点签名并将其certificate,以及所有其他链上操作。
-
这个操作不是必须的,因为用户可以直接与 Sui 和存储节点交互来存储 blob。最终用户始终可以通过检查链上是否存在与 Blob可用点相关的事件来验证发布者是否正确履行了职责,然后执行读取以查看 Walrus 是否返回 Blob,或者对 Blob 进行编码并比较结果为certificate中的 blob ID。
-