在Sui上的操作

Walrus使用Sui智能合约来协调作为具有生命周期的资源的存储操作和支付。智能合约还促进治理,以确定持有每个存储分片的存储节点。以下内容概述了这些操作,并将其作为读/写路径的一部分。

元数据是唯一暴露给Sui或其验证者的blob元素,因为blob的内容始终存储在Walrus存储节点和缓存的链下。存储节点或缓存不必与任何Sui基础设施组件(如验证者)重叠,并且存储纪元可以有不同的长度,并且与Sui纪元的开始/结束时间不同。

在Sui上的存储资源生命周期

一些Sui智能合约持有Walrus系统及其所有实体的元数据。

  • Walrus系统对象持有当前存储纪元的存储节点委员会。系统对象还持有Walrus上的总可用空间和每单位存储(1 KiB)的价格。

    这些值由存储纪元的存储节点之间的2/3协议决定。用户可以支付购买一段时间的存储空间。这些空间资源可以拆分、合并和转移。之后,它们可以用于将一个blob ID放入Walrus。

  • 存储基金持有用于在一个或多个存储纪元中存储blob的资金。当从系统对象购买存储空间时,用户支付到分布在多个存储纪元的存储基金中。每个纪元根据性能向存储节点支付(详细信息如下)。

  • 用户通过合约或转移获得一些存储,并可以分配一个blob ID,表示他们想将这个blob ID存储到其中。这会发出一个Move 资源事件,存储节点会监听该事件以期望和授权链下存储操作。

  • 最终,用户持有来自存储节点的一个blob ID的链下可用性证书。用户将证书上传到链上,以表示该blob ID在一个可用期内是可用的。证书会与最新的Walrus委员会进行核对,如果正确,则会为该blob ID发出一个可用性事件。这是该blob的可用性点。

  • 在稍后的时间,通过添加一个具有更长到期时间的存储对象,可以扩展已认证的blob的存储。只要有资金继续提供存储,智能合约就可以使用此功能来延长永久存储的blob的可用性。

  • 如果一个blob ID没有正确编码,可以在稍后时间将一个不一致证明证书上传到链上。此操作会发出一个不一致的blob事件,表示该blob ID的读取结果总是返回None。这表明其切片可以被存储节点删除,除了一个返回None的指示器。

向Walrus写入数据的用户需要执行Sui交易以获取存储并认证blob。创建或使用blob可用性证明的用户仅读取链以证明或验证事件的发出。节点每个纪元只读取一次区块链以获取委员会元数据,然后通过blob ID直接从存储节点请求切片以读取Walrus资源。

在Sui上的治理操作

每个Walrus存储纪元由Walrus系统对象表示,该对象包含一个存储委员会和各种元数据或存储节点,如分片和存储节点之间的映射、可用空间和当前成本。

用户可以在该期间访问系统对象并购买一些存储量用于一个或多个存储纪元。在每个存储纪元都有一个存储价格,所提供的支付成为跨越所购买存储的所有存储纪元的存储基金的一部分。未来可以购买存储的最大存储纪元数(大约2年)。存储是一种可以拆分、合并和转移的资源。

在存储纪元结束时,存储基金中的部分资金需要分配给存储节点。这里的想法是存储节点相互进行轻度审计,并根据这些审计的表现建议哪些节点应获得支付。