NFT Token ID 如何分配给对象(例如图片、推文、视频等)

How is a NFT Token ID assigned to an object (e.g., picture, tweet, video, etc.)

背景:假设我想通过查找区块链中的数据来验证某条推文或某张图片的所有权。如果我的理解是正确的,我需要能够分配一个代表 tweet/picture.

的唯一 tokenId

问题 1:是否有一些关于如何分配此 ID 的标准化?不同的平台是否以独特的方式执行此映射?我觉得如果没有这样的标准化,不可替代性就会受到质疑(例如,你真的拥有这条推文,还是只有当你应用你自己制作的推文->令牌 ID 映射时你才拥有它?)。

问题 2:您能否提供一些示例,说明代币 ID 究竟是如何分配给某些(知名的)NFT 的?

Is there some standardization on how this ID is assigned?

ERC-721 标准明确指出没有分配 ID 的标准(uint256 数据类型除外):

While some ERC-721 smart contracts may find it convenient to start with ID 0 and simply increment by one for each new NFT, callers SHALL NOT assume that ID numbers have any specific pattern to them, and MUST treat the ID as a “black box”.


e.g., do you really own this tweet, or do you only own it if you apply the tweet->token ID mapping

令牌所有权并不意味着您拥有底层资源。只代表你拥有token(代表资源)。


Could you provide a few examples of how exactly is the token ID assigned to some (well-known) NFTs?

  • CryptoKitties - link,第 412 行,递增

    uint256 newKittenId = kitties.push(_kitty) - 1;
    
  • CryptoPunks - link,第 73 和 83 行,分配由(授权)调用者设置的 ID

    mapping (uint => address) public punkIndexToAddress;
    
    function setInitialOwner(address to, uint punkIndex) {
        // ...
        punkIndexToAddress[punkIndex] = to;
    

当 NFT 用智能合约铸造时,与 NFT TokenID 相关联,区块链通常还会记录指向 NFT 元数据(通常是 json 文件)的 URI(通用资源标识符) .这个URI可以通过智能合约地址和TokenID查询区块链获得。 json 文件本身包括另一个指向与 NFT 链接的数字资产的 URI。如果使用不可变的 URI(例如 IPFS URI),则记录在区块链中的 NFT TokenID 的 URI 将明确链接到不可更改的 json 文件,该文件明确链接到不可更改的数字资产。正如 Petr 正确指出的那样,从技术上讲,没有什么能阻止其他任何人创建另一个 NFT,该 NFT 也记录了相同的 URI,因此指向相同的 json 文件(并通过传递到相同的数字资产)。我试图在前面的陈述中做到准确,以避免实际上取决于智能合约实施细节的不正确的推断声明。