如何在OpenSea 上实现 NFT 元数据去中心化

以太坊爱好者 view 2077 2021-7-3 14:15
share to
Scan QR code with WeChat

如何在OpenSea 上实现 NFT 元数据去中心化

NFT 是附有去中心化所有权的独一无二的代币。“谁拥有这个代币” 这个问题由多台计算机同时存储并追踪,防止有人在未经授权的情况下篡改归属。

然而,NFT 的相关媒介附件和内容(统称 “NFT 元数据”)始终没有实现去中心化,因为直接在智能合约内存储和修改数据会产生高昂的 gas 成本。如果没有去中心化,收藏者就无法相信某个代币的元数据是完整且不变的。

自 2017 年成立以来,OpenSea 就已支持元数据去中心化的 NFT。今天,我们要宣布一个好消息:在 OpenSea 平台上发行 NFT 的创作者能够使用 IPFS(星际文件系统)和 Filecoin 实现元数据去中心化啦!我们还为收藏者提供了一种可以查看 NFT 元数据何时冻结的方法,并进一步强化了 OpenSea 收藏者可以用来评估 NFT 的工具包。

接下来,我们将进一步阐述 OpenSea 是如何实现 NFT 元数据去中心化的,以及这一点为何如此重要。如果你想要了解如何让你在 OpenSea 上发行的 NFT 去中心化,请查看我们的帮助中心教程。

去中心化元数据 vs 冻结元数据

如果你不了解 NFT 元数据,不妨阅读我们广受欢迎的 NFT 宝典,也可以阅读下文的技术讲解。

就符合以太坊标准的 NFT 而言,管理 NFT 的智能合约通常会使用函数来说明元数据的位置:

ERC 721 标准:function tokenURI(uint256 _tokenId) external view returns (string memory)

ERC 1155 标准:function uri(uint256 _id) external view returns (string memory)

函数的返回值通常是 Google 云、亚马逊云服务或其它可以线下化或由开发者改造的中心化存储服务的 URI。

这些中心化解决方案与 IPFS、Filecoin 和 Arweave 等去中心化存储解决方案形成了鲜明对比,后者将元数据存储在去中心化网络中的存储节点内。

中心化存储有两个弱点:

无常性:服务器可能会掉线,导致图片很难找到(除非 OpenSea 之类的 NFT 索引已经为它创建了镜像)。

易变性:开发者可以违背收藏者的意志修改图片。

目前有四类 NFT 元数据存储:

“冻结” 这一概念不同于去中心化。即使元数据以去中心化方式存储,创作者依然有可能通过发送链上事务来修改 NFT 元数据。我们将元数据不可更改的 NFT 称为 “冻结”。

如果不清楚 NFT 有没有被冻结,收藏者就无法知道自己购买的藏品过了 1 年、10 年乃至 100 年是否还是原来的样子。

并非所有 NFT 都具有相同的特性。让我们通过下面一些例子来了解它们:

中心化:大多数 NFT 的智能合约内都有一个函数可以返回与其代币标识符对应的元数据。返回值通常是由开发者运行的云服务器上的 URI(例如 example.com/nft/2)。如果一个 NFT 的内容和媒介都由这种服务器控制,那么这个 NFT 就是中心化的,存在无常性和易变性问题。

中心化且可验证:Larva Labs 发行的 CryptoPunks 是最早的 NFT,其图片就存储在中心化服务器上。但是,图片的哈希值存储在智能合约内。因此,尽管 CryptoPunks 存在无常性问题,但是我们可以通过哈希值来验证图片是否被修改过,从而判定图片是否是原图。其它项目(如 CrypoKitties)对这一系统进行了调整,例如,将 NFT 的特征存储在链上,但是将特征的效果图存储在中心化服务器上。在 Cryptokitties 系统中,图片可以被修改,但是每只猫的 “基因” 和稀有信息无法被修改。

去中心化:不同于将元数据存储在中心化服务器内,开发者可以选择将元数据直接存储在智能合约或文件友好型的去中心化网络内。最好的两个选择不外乎 IPFS + Filecoin 和 Arweave。Arweave 要求矿工在创建区块时指向之前存储的数据,与区块链类似(称为 “blockweave”)。IPFS 可以让对等节点相互存储、请求并传输可验证数据,并且可以和 Filecoin 一起用来激励矿工使用可验证证明永久存储数据。例如,Bored Ape Yacht Club 就将元数据存储在 IPFS 内,但是合约所有者可以修改 IPFS 的根 URI。

去中心化且已冻结:我们很难知道 NFT 的元数据是否已被冻结,因为通常有很多种方法可以修改它。这是一个手动过程,但是 OpenSea 现在可显示 OpenSea 上发行的 NFT是否已被冻结,以及很多非 OpenSea 上发行的 NFT是否已被冻结:

如何在OpenSea 上实现 NFT 元数据去中心化

-如果某个 NFT 的元数据存储在支持 IPFS 和 Arweave 的文件存储网络上,点击图中的 “已冻结” 就会打开对应的去中心化 URI(包括 `ipfs://` 和 `ar://` URI)-

一些兼具去中心化和可冻结性的项目有:

SuperRare(IPFS)

Sandbox(IPFS)

Uniswap(on-chain)

1111 by Kevin Abosch(Arweave)

:一些项目直接将元数据存储在智能合约内。例如,Larva Labs 的另一个项目 Autoglyphs 就直接从合约返回字符艺术品,它是首个这么做的 NFT 项目。Autoglyphs 不依赖于除以太坊之外的其它系统提供图片,因此我们称之为去中心化的、链上的且已冻结的。

这四类 NFT 各有优缺点。但是,对于收藏者来说,多了解一点 NFT 实现会对决策有帮助。这就是为什么我们要引入一种新的事件类型来增强 ERC1155 和 ERC721 标准,以便开发者告知 OpenSea 等平台他们何时会将某个 NFT 标记为 “已冻结”。

永久 URI

为了解决已冻结元数据和未冻结元数据之间的冲突,新的事件会告诉 OpenSea 将某个 URI 注册为永久 URI(即,PermanentURI)。事件签名如下所示:

event PermanentURI(string _value, uint256 indexed _id);

一旦 NFT 智能合约发出一个 PermanentURI 事件,就没人能再更改这个对应某个代币 ID 的 URI。详情请参阅我们的文档。就像绝大多数密码学标准那样,永久 URI 仍处于开发中,可能会根据社区反馈进行更改。

冻结 OpenSea 上的 NFT

在 2020 年 12 月,我们推出了一个免 gas 费的 NFT 铸造器(中文译本),为更多想要在区块链上出售自己的作品的艺术家大开方便之门。当时,我们率先支持通过智能合约冻结元数据。也就是说,创作者现在可以冻结他们在过去 6 个月创作且尚未出售的 NFT 的元数据。

首先,进入你的创作品的 “编辑” 页面,并点击页面右上角其中一个 NFT 的铅笔图标(你可以在 “添加新项目” 按钮下方的搜索栏找到它们)。点击冻结元数据按钮,就会看到如下图所示的弹出窗口。如果你想要继续,请勾选方框,然后点击 “Submit Transaction” 提交事务。虽然 OpenSea 不收取任何费用, 但是你需要支付 gas 费才能将新的元数据 URI 保存到智能合约内。

如何在OpenSea 上实现 NFT 元数据去中心化

一旦你冻结了某个 NFT,就无法将其解冻或更改其元数据。只要以太坊和 Filecoin 存在,这个 NFT 就永远处于冻结状态。

当你冻结某个 NFT 后,你就可以直接在 OpenSea 网页上查看其 IPFS URI。你还可以使用 NFT.Storage API 和你的 NFT 的 IPFS 内容哈希值来查看与这个 NFT 相关的 Filecoin 交易数量。例如:https://api.nft.storage/check/bafkreiem4twkqzsq2aj4shbycd4yvoj2cx72vezicletlhi7dijjciqpui。

去中心化元数据的未来

OpenSea 的目标之一是为所有 NFT 提供事实来源,无论它们使用的区块链、元数据格式和去中心化存储解决方案是什么。将来,NFT 领域可能会陷入一片混沌,并涌现出很多 NFT 发行方式。我们希望让 NFT 变得更加透明。

免 gas 费冻结

过去 6 个月来,我们通过支持 Polygon 侧链为 OpenSea 上的用户提供免 gas 费体验。如果你可以访问封闭测试版 NFT 铸造器,现在就可以使用 IPFS 和 Filecoin 冻结你的 Polygon NFT 了。

就像 Polygon 交易一样,将 IPFS URI 保存到 NFT 的智能合约并不会产生任何 gas 成本 —— OpenSea 会为你支付这部分费用。请关注后续版本发布,也欢迎通过 Discord 告诉我们你的想法。

btcfans公众号

Scan QR code with WeChat

Disclaimer:

Previous: 掀翻航运业旧模式,区块链成就新篇章 Next: 1200万,成都再启数字人民币活动!这次是“绿色出行礼包”!

Related