Ethereum 创建新ERC721令牌时添加自定义字段

Ethereum 创建新ERC721令牌时添加自定义字段,ethereum,solidity,smartcontracts,remix,Ethereum,Solidity,Smartcontracts,Remix,我正在使用Openzeppelin的ECR721预设智能合约进行学习 我想在创建新令牌以存储字符串(public)时添加一个新字段 目前只有“收件人:地址”字段(下面的屏幕截图) 我确定我需要在mint函数中添加一些内容: 在区块链上存储消息的最简单方法是发出事件。事件被永久存储并公开可读 在mint()函数之外定义新的MintMessage事件。我不建议扩展造币过程中使用的默认Transfer事件,因为外部工具(如Etherscan)可能会忽略非标准事件,因此不会显示造币令牌 将新参数添加到

我正在使用Openzeppelin的ECR721预设智能合约进行学习

我想在创建新令牌以存储字符串(public)时添加一个新字段

目前只有“收件人:地址”字段(下面的屏幕截图)

我确定我需要在mint函数中添加一些内容:


在区块链上存储消息的最简单方法是发出事件。事件被永久存储并公开可读

  • mint()函数之外定义新的
    MintMessage
    事件。我不建议扩展造币过程中使用的默认
    Transfer
    事件,因为外部工具(如Etherscan)可能会忽略非标准事件,因此不会显示造币令牌
  • 将新参数添加到
    mint()
    函数
  • mint()函数中发出
    MintMessage
    事件

  • 不是原始作者:重要的区别在于其他智能合约无法读取事件,它仅在客户端可见。因此,事件的适用性取决于字符串的用例——它是否只是客户端可消费信息,或者智能合约是否会在将来的某个时候检查该字符串。
    event MintMessage(string message);
    
    function mint(address to, string message) public virtual {
       // keep the rest of your function as is
       // add a new line emiting the event to the end of the function
       emit MintMessage(message);
    }