blockchain - 选择与存储信息的可修改性有关的代币(可替代或不可替代)
问题描述
假设我有一个要存储在区块链中的信息列表,并且我希望先前所有者之前更新的信息的某些部分保持不变。令牌的新所有者只能修改他或她被允许的部分。哪种代币适合此类应用?(示例如下)
根据我所阅读的内容,不可替代的代币适用于数字艺术等独特的数据,并且不能被篡改。
我想就以下疑问寻求澄清:
NFT 的所有者创建后可以修改 NFT 上的信息吗?或者 NFT 上的信息只能写一次吗?
同一 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 国。)(可由当前所有者修改)
解决方案
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
}
}
推荐阅读
- sql - 从 SQL Server 中的表创建表
- mysql - mySQL foreach 行运行更新
- android - 比较 Room 数据库中的日期
- java - Why recycler view is loading till page 3 only?
- python - Fuzzy matching with pyspark or python
- c# - 在 C# 中获取属性的属性
- c# - 如何使用 ElectronNet 构建 .deb 包
- python - 多处理访问大型共享只读DataFrame,聚合输出
- c# - 无法让 log4net 为浏览器帮助对象 (BHO) dll 写入日志
- python-3.x - 从 HTML、python、网络抓取接收特定数据