【发布时间】:2022-01-26 05:25:09
【问题描述】:
在学习 Solidity 时,我很难理解下面的 isApprovedForAll 函数是如何工作的。
我特别想了解使用address 参数调用默认ProxyRegistry 构造函数如何创建初始mapping,该初始映射是什么样的,以及为什么我应该期望if 语句返回真的。
代码取自官方 OpenSea api 示例。
contract OwnableDelegateProxy {}
contract ProxyRegistry {
mapping(address => OwnableDelegateProxy) public proxies;
}
contract SomeContract {
address proxyRegistryAddress;
constructor(
address _proxyRegistryAddress
) {
proxyRegistryAddress = _proxyRegistryAddress;
}
function isApprovedForAll(address owner, address operator)
public
view
returns (bool)
{
ProxyRegistry proxyRegistry = ProxyRegistry(proxyRegistryAddress);
if (address(proxyRegistry.proxies(owner)) == operator) {
return true;
}
return false;
}
}
【问题讨论】: