walrus site Move 源码解析 #102
v1xingyue
started this conversation in
Show and tell
Replies: 1 comment
-
Storage 信息: |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
什么是 Walrus Site?
Walrus Site 是利用 Walrus 存储资源的特性,在Portal 中通过 http 协议,把数据以网站的形式展现给用户的一种结构。
基本数据结构
每个 Walrus 站点的核心是一个 Site 结构体,它包含站点的基本信息,如站点唯一标识(id)和名称(name):
每新建一个站点,等于新建这样一个对象。后续,通过 dynamicfield 关联资源信息和路由信息。
因为,后续操作站点都是通过这个对象来实现,如果 share 这个 struct , 那就是个去中心化的 维基百科了。
资源数据结构
站点对应的资源保存在 Resource 的struct 中:
即 一个 URL 按照 路径,可以解析到 对应的 存储对象。 blob_id 和 walrus 上的一个存储资源对应。
blob_hash 用来验证数据完整性。通过range 完成资源分块的获取输出。
headers 中的信息,也是可以返回给浏览器的。 开发者可以借助 header 完成更丰富的功能。
比如 :
每个资源会通过 Path 关联的一个对象在 Sui 上存储:
同理,也可以用这种方式获取。
特殊对象
每个站点除了资源 Map 以外,还包含一个字符串的Map 用来做跳转。
其资源结构如下:
可以用来处理特殊资源的跳转:
比如 默认网站根目录:
访问 "/" 跳转到 "/index.html"
以上便是,walrus site 相关联的合约部分说明了。
源码链接: https://github.com/MystenLabs/walrus-sites/blob/main/move/walrus_site/sources/site.move
Beta Was this translation helpful? Give feedback.
All reactions