ERC721/1155中元数据参数的修改方法是什么?

What's the way to change metadata parameters in ERC721/1155?

想象一下,有带有元数据的 ERC-721(或 ERC-1155?)

其中一个参数是强度:

每次转账从 100 到 0 慢慢减少

如何在不使用新元数据一次又一次地燃烧和铸造令牌的情况下进行编程?

你可以有一个mapping,以代币ID为键,强度为值。

然后您可以扩展 minttransfer 函数来设置正确的值。

mapping (uint256 => uint8) tokenIdToStrength;

function mint() external {
    uint256 tokenId = // TODO the actual mint
    tokenIdToStrength[tokenId] = 100;
}

function transferFrom(address _from, address _to, uint256 _tokenId) external {
    require(tokenIdToStrength[_tokenId] > 0, 'Strength is zero, cannot transfer anymore');
    tokenIdToStrength[_tokenId]--; // decrement by 1
    // TODO the actual transfer
}