【发布时间】:2021-11-28 23:01:42
【问题描述】:
我知道 nft 正在通过智能合约在区块链中进行铸造。但是所有者钱包存储在哪里?并且更改所有者还需要额外的智能合约?
【问题讨论】:
标签: smartcontracts nft
我知道 nft 正在通过智能合约在区块链中进行铸造。但是所有者钱包存储在哪里?并且更改所有者还需要额外的智能合约?
【问题讨论】:
标签: smartcontracts nft
每个代币的所有者地址都存储在其收集合约中。
ERC-721 标准仅定义所有者应可通过调用 ownerOf() 函数检索,并将令牌 ID 作为唯一参数传递给它。它没有定义应该如何准确地存储信息。
但许多实现使用mapping。例如 OpenZeppelin implementation:
mapping(uint256 => address) private _owners;
function ownerOf(uint256 tokenId) public view virtual override returns (address) {
address owner = _owners[tokenId];
require(owner != address(0), "ERC721: owner query for nonexistent token");
return owner;
}
更改所有者需要额外的智能合约?
假设收集合约遵循标准,它可以通过从所有者(非合约)地址执行任何转移函数来更改代币所有者(即转移代币)。
所以它不需要额外的智能合约来转移代币。
【讨论】: