重定向对象到Walrus站点

我们已经在概述中看到了 Sui 上的 Walrus 站点对象的样子。我们现在将讨论如何创建确保一组 任意对象 都可以绑定到特定的,可能是唯一的 Walrus 站点。

目标

考虑一组 NFT,例如由 https://flatland.walrus.site 发布的 NFT。正如我们在那里展示的那样,每个铸造的 NFT 都有自己的 Walrus 站点,可以根据 NFT 本身的内容(例如颜色)进行个性化。我们如何实现这一点?

重定向链接

解决方案很简单:我们在 NFT 的 Display 属性中添加一个“重定向”。每次通过门户浏览 NFT 的对象 ID 时,门户将检查 NFT 的 Display,如果遇到 walrus site address 键,它将去获取对应对象 ID 的 Walrus 站点。

Move 中的重定向

实际上,在创建 NFT 的 Display 时,您可以包含指向要使用的 Walrus 站点的键值对。

...
const VISUALIZATION_SITE: address = @0x901fb0...;
display.add(b"walrus site address".to_string(), VISUALIZATION_SITE.to_string());
...

如何根据 NFT 更改站点?

上面的代码只会在浏览 NFT 的对象 ID 时打开指定的 Walrus 站点。我们如何确保可以使用 NFT 的属性来个性化站点?

这需要在 VISUALIZATION_SITE 中完成:由于子域仍然指向 NFT 的对象 ID,加载的 Walrus 站点可以在 JavaScript 中检查其 origin,并使用子域来确定 NFT,从链中获取它,并使用其内部字段来修改显示的站点。

有关端到端示例,请参见 flatland repo