
适用范围:以ERC-721理解NFT
NFT通常译为非同质化代币,用于区分具有独立身份的对象。以太坊开发者文档介绍的ERC-721,为这类代币提供统一接口,可用于收藏品、访问凭证和编号座位等场景。以下说明围绕ERC-721展开,具体应用的附加功能仍取决于合约设计。
唯一性是否意味着图片不能重复
在同一条链上,识别一个ERC-721代币需要结合合约地址与tokenId。不同合约可以使用相同的编号,因此单看tokenId无法完整确定对象。
这里的唯一性描述的是代币身份。编号不同,并不自动意味着展示内容不同;理解NFT时,需要把“是哪一个代币”与“它展示什么内容”分开。
持有数量与具体持有对象如何区分
ERC-721提供查询账户持有数量、查询指定代币持有地址,以及转移和授权等接口。这让应用能够按共同规则读取代币状态。
持有数量回答“账户有多少个”,持有地址回答“某一个属于哪个账户”。两者用途不同:前者用于计数,后者用于确认具体对象的链上归属。
不可拆分与授权分别是什么意思
OpenZeppelin的ERC-721说明指出,这类代币没有用于表示小数精度的decimals字段,每个代币作为独立单位处理。因此,标准本身不提供把一个代币拆成若干小数单位的机制。
授权则涉及操作权限。ERC-721区分针对单个代币的授权与面向操作方的全量授权;获得操作权限与成为持有者是不同状态,不能把授权记录直接理解为持有权已经转移。
图片和属性是否都会永久留在链上
OpenZeppelin的示例通过tokenURI关联描述名称、图片和属性的元数据,并明确说明示例中的内容位于链外。底层元数据可以发生变化,因此链上有代币记录,并不能单独证明展示内容永久不变。
判断内容稳定性时,需要分别考察代币记录、元数据位置以及内容是否允许修改。页面能够展示图片,只能说明当前能够读取相关内容,不能代替对存储方式的了解。
符合标准是否意味着应用规则完全相同
统一接口方便不同应用识别和处理代币,但不会统一所有业务规则。OpenZeppelin示例还说明,限制谁能创建代币需要加入访问控制。
因此,理解一个NFT应用,应分别看代币如何识别、哪些地址拥有操作权限、内容如何保存,以及合约增加了哪些功能。标准提供共同基础,具体实现决定实际边界。