【问题标题】:Add custom field when mint new ERC721 token铸造新 ERC721 令牌时添加自定义字段
【发布时间】:2021-06-04 22:17:49
【问题描述】:

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

我想在创建新令牌来存储字符串(公共)时添加一个新字段。

目前只有“to:address”字段(截图如下)

我确定我需要在 mint 函数中添加一些东西:

【问题讨论】:

    标签: ethereum solidity smartcontracts remix


    【解决方案1】:

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

    1. mint() 函数之外定义新的MintMessage 事件。我不建议扩展在铸造期间使用的默认 Transfer 事件,因为外部工具(例如 Etherscan)可能会忽略非标准事件并且因此不会显示铸造的代币。
    2. mint() 函数添加新参数
    3. 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);
    }
    

    【讨论】:

    • 不是原作者:重要的区别是其他智能合约不能读取事件,它只在客户端可见。因此,事件的适用性取决于字符串的用例——它是否只是客户端可消费的信息,或者智能合约是否可能在未来的某个时间点检查这个字符串。
    猜你喜欢
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 2020-07-23
    • 2021-05-24
    • 1970-01-01
    相关资源
    最近更新 更多