Ethereum 如何在ERC721令牌中添加自定义属性(链上)?

Ethereum 如何在ERC721令牌中添加自定义属性(链上)?,ethereum,solidity,smartcontracts,Ethereum,Solidity,Smartcontracts,我正在使用Openzeppelin框架学习solidity 目前我正在使用ERC721预设合同() 我想为每个铸造的令牌添加自定义属性,以便在区块链上存储一些重要数据(对于某些属性,我不会使用REST API,但我更喜欢在链上编写它们) 每个令牌将具有不同的数据 string: Name string: Surname bytes32: 0x63383a61613a62323a30373a63383a323020 是否可以创建一些新函数(不编辑mint函数),只允许具有minter角色的地址?

我正在使用Openzeppelin框架学习solidity

目前我正在使用ERC721预设合同()

我想为每个铸造的令牌添加自定义属性,以便在区块链上存储一些重要数据(对于某些属性,我不会使用REST API,但我更喜欢在链上编写它们)

每个令牌将具有不同的数据

string: Name
string: Surname
bytes32: 0x63383a61613a62323a30373a63383a323020
是否可以创建一些新函数(不编辑mint函数),只允许具有minter角色的地址?

您可以在tokenId和您想要的任何内容之间创建映射。让我们把它命名为
name

映射(uint256=>字符串)名称

如果有很多属性,可以对结构进行映射

    struct Character {
        uint256 strength;
        uint256 dexterity;
        uint256 constitution;
        uint256 intelligence;
        uint256 wisdom;
        uint256 charisma;
        uint256 experience;
        string name;
    }

    Character[] public characters;

    mapping(uint256 => uint256) tokenIdToCharacterIndex;

然后,只需确保更新您的tokenURI以包含链上属性,以便它们在NFT marketplaces中显示。

非常感谢@patrick collins的回复。我只是在我的合同中添加了你的代码,但我不知道在我创建了一个新的令牌之后如何向这个结构添加数据。这是一个单独的问题,请随意下一个问题。