首页 > 解决方案 > 选择与存储信息的可修改性有关的代币(可替代或不可替代)

问题描述

假设我有一个要存储在区块链中的信息列表,并且我希望先前所有者之前更新的信息的某些部分保持不变。令牌的新所有者只能修改他或她被允许的部分。哪种代币适合此类应用?(示例如下)

根据我所阅读的内容,不可替代的代币适用于数字艺术等独特的数据,并且不能被篡改。

我想就以下疑问寻求澄清:

  1. NFT 的所有者创建后可以修改 NFT 上的信息吗?或者 NFT 上的信息只能写一次吗?

  2. 同一 NFT 的后续购买者能否在 NFT 上附加新信息?

我必须选择合适的代币类型的情况示例:
资产标识:XJJHAKS1972(未修改)
资产当前保单覆盖范围:强制(非强制)(可由当前所有者修改)
覆盖期限:2021 年至2022(当前所有者可修改)


所有权历史:
所有权1:XJHGAK先生(未修改)
所有权日期:2019年1月1日至2019年6月6日(未修改)

所有权 2:JHHUA 夫人(未修改)
所有权期限:2019 年 6 月 7 日至 2020 年 6 月 6 日(未修改)

所有权 3:Mr Bee
所有权期限:2020 年 6 月 7 日(可由当前所有者修改)


资产居住历史:
国家:A 国(未修改)
日期:2019 年 1 月 1 日至 2019 年 6 月 6 日(未修改)

国家:B 国(未修改)
日期:2019 年 6 月 7 日至 2020 年 6 月 6 日(未修改)

国家:C 国(当前所有者可修改)
日期:2020 年 6 月 7 日(未指明结束日期,表明该资产至今仍在 C 国。)(可由当前所有者修改)

标签: blockchain

解决方案


1. NFT 的所有者创建后可以修改 NFT 上的信息吗?或者 NFT 上的信息只能写一次吗?

2. 同一 NFT 的后续购买者能否在 NFT 上追加新的信息?

这两个问题的答案是:这取决于您的实施。

令牌标准(例如ERC-721)只定义了一个接口和一些其他规则(例如何时发出事件)。如何实现接口,这取决于你。


验证发件人是否是令牌的当前所有者的示例。只有当他们是,合同才允许更改:

pragma solidity ^0.8.3;

contract Test {
    mapping (uint256 => address) tokenIdToOwner;
    
    function changeCountry(uint256 _tokenId, string _country) external {
        require(tokenIdToOwner[_tokenId] == msg.sender, 'Only current owner can change it');
        // TODO rest of your implementation
    }
}

推荐阅读