ERC721 - tokenURI 中提到的元数据资产的真实性

问题描述

我们如何证明 NFT 资产元数据的真实性?

根据 ERC721 规范,要获取 NFT 资产的元数据,我们需要转到 tokenURI 函数中提到的 URI。如果此元数据位于中央服务器上,并且所有者更改了 tokenURI 指向的元数据,会发生什么情况?

让我们考虑一个用例 - 假设我在 OpenSea 上购买了 NFT 数字艺术,它具有 tokenURI 格式的 https://opensea.io/<contract_address>/123,指向名为 awesome_art.png 的图像,该图像位于AWS 服务器。现在,如果所有者此后上传了另一个同名的随机图像怎么办?

在这种情况下,NFT 仍然有效;元数据仍然有效,因为它们遵循标准。

我想避免这种情况的最好方法是在元数据图像/资产内容第一次铸造时对其进行散列并将其放在区块链上,但只是想知道是否还有其他行之有效的方法/实现这一目标的标准是什么?

仅供参考 - 我知道一种解决方案是使用像 IPFS 这样的去中心化解决方案,但它并没有真正解决这个问题的核心问题。

解决方法

ERC-2477 是一种将元数据摘要附加到令牌的提议标准:https://eips.ethereum.org/EIPS/eip-2477

JSON 模式的摘要也可以添加到区块链中。或者,对嵌入在元数据 JSON 中的 JSON 模式的 $schema 引用以及保存 JSON 模式摘要的 $schemaIntegrity。

仅供参考 - 我知道一种解决方案是使用像 IPFS 这样的去中心化解决方案,但它并没有真正解决这个问题的核心问题。

IPFS CID 内置了摘要,因此我认为 IPFS 确实涵盖了这一点。许多 ERC721 正在使用它已经将 CID 存储在链上。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...