【发布时间】:2022-11-09 23:24:45
【问题描述】:
我确信这可以在前端完成,也可以从 Solidity 完成。我看到一些看起来效率低下的帖子,据我了解,当 ERC721 包已经具备获取此信息所需的功能时,他们正在创建新的映射并将不必要的数据存储到区块链中。
想出了第一部分的答案!
function ownerOfTokenIds(address tokenOwner) external view returns (uint256[] memory) {
uint256[] memory result = new uint256[](balanceOf(tokenOwner));
uint256 counter = 0;
for (uint256 i = 0; i < tokenCounter; i++) {
if (ownerOf(i) == tokenOwner) {
result[counter] = i;
counter++;
}
}
return result;
}
【问题讨论】:
-
我在 Gnosis 的 Multisig Wallet 中看到了类似的代码 sn-p 并且想法相同。我认为当前版本的 Solidity 没有更有效的方法可以做到这一点。
标签: blockchain solidity smartcontracts nft openzeppelin