Erc-721
自毀 NFT (ERC-721) 代幣
我想要實現的是自毀令牌。
例如,我想為我的令牌分配一些可更新的 TTL 值。如果達到 TTL,則應自動刻錄令牌。
這種任務的最佳解決方案是什麼?
這樣的實現不安全嗎?有哪些好的做法?
有趣的問題,您正在描述類似於基於時間的資源的東西,例如活動門票或日曆約會,在某個截止日期之前具有價值,之後變得毫無價值(作為出席證明除外)。
您自己的代幣不必使用 ERC20 或 ERC721 的標準 OpenZeppelin 合約,但仍符合標準。你定義的“燒毀”或“活”取決於你的契約。在返回“ownerOf”或“balanceOf”時,您可以簡單地進行額外檢查以查看 TTL 是否仍然有效。
contract TTL_ERC721 { mapping(uint256 => uint256) public deadBlockNumbers; ... function ownerOf(uint256 _tokenId) view public returns (address _owner) { if ((deadBlockNumber[_tokenId] == 0) || (block.number > deadBlockNumber[_tokenId])) { return "0x0000000000000000000000000000000000"; // check to make sure this is the correct number of zeros } return owners[_tokenId]; } function mint(uint256 _tokenId, uint256 _owner, uint256 _blocksFromNow) public { // do some checks / requires here to make sure msg.sender is able to own this token owners[_tokenId] = _owner; deadBlockNumber[_tokenId] = _blocksFromNow; } }
祝你好運,希望這會有幫助。