背景:假设我想通过查找区块链中的数据来验证某条推文或某张图片的所有权。如果我的理解是正确的,我需要能够分配一个唯一的tokenId来表示该推文/图片。
问题1:如何分配此ID是否有一些标准化?不同的平台是否以独特的方式执行此映射?我觉得如果没有这样的标准化,不可替代性就会变得有问题(例如,你真的拥有这条推文吗,还是只有在你应用了自己制作的推文->代币ID映射的情况下才拥有它?)。
问题2:您能举几个例子说明代币ID是如何分配给一些(众所周知的)NFT的吗?
如何分配此ID是否有一些标准化
ERC-721标准明确指出,没有分配ID的标准(uint256
数据类型除外):
虽然一些ERC-721智能合约可能会发现从ID 0开始并为每个新的NFT简单地增加一个很方便,但呼叫者不应认为ID号有任何特定的模式,必须将ID视为"黑匣子">
例如,你真的拥有这条推文吗?还是只有在应用推文时才拥有它;令牌ID映射
代币所有权并不意味着您拥有底层资源。这只意味着您拥有令牌(表示资源)。
你能提供几个例子来说明代币ID是如何分配给一些(众所周知的)NFT的吗
-
CryptoKitties-链接,第412行,递增
uint256 newKittenId = kitties.push(_kitty) - 1;
-
CryptoPunks-链接,第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文件(并通过传递到相同的数字资产)。在前面的陈述中,我试图做到准确无误,以避免错误的推断声明,而这些声明实际上取决于智能合约的实现细节。