这段代码将在我提供合同和ID后成功找到任何合同的所有者。我如何让它成为一个搜索函数找到10或100个不同的id ?
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
interface INft {
function ownerOf(uint256 tokenId) external view returns (address); //works
}
contract Test {
function getNftTokenOwner(address _nft) external view returns (address){
// return INft(_nft).ownerOf(_tokenId);
return INft(_nft).ownerOf(0);
}
// function getNftTokenOwner(address _nft, uint256 _tokenId) external view returns (address){
// return INft(_nft).ownerOf(_tokenId);
// return INft(_nft).ownerOf(0);
// }
}
只需循环遍历它并将地址保存到像这样的数组中。
function getNftTokenHolder(address _nft, unit _tokenIds) public returns (address[]) {
address[] memory addr = new address[](_tokenIds);
for (uint i; i < _tokenIds; i++) {
addr[i] = INft(_nft).ownerOf(i);
}
}
这应该可以工作。它将返回一个包含所有地址的数组。只需插入你想要循环的tokenid个数。