我正在工作的UUPS可升级的合同,我需要转让的所有权给一个管理员。我在合同上使用了openzeppelin的AccessControl。
我读到,对于可升级的合同,所有者不是msg.sender,但它是ProxyAdmin。
有人知道UUPS可升级合同是否也是这样吗?
如果是,我如何找到这个proxyAdmin地址?以及如何使用这个proxyAdmin地址将管理角色授予其他用户?
谢谢你事先给我的任何想法!
发布于 2022-10-26 20:21:14
ProxyAdmin使用TransparentUpgradeableProxy类型,因为所有这些逻辑都是在代理中处理的,而对于UUPSUpgradeable类型的代理,逻辑是在实现中处理的。
因此,您不希望在UUPS中使用ProxyAdmin,因为这些函数不会对齐&相反,会使您的合同成砖。
但这里可能有更好的人来回答细节..。
下面是一些阅读:透明vs uups:https://docs.openzeppelin.com/contracts/4.x/api/proxy#transparent-vs-uups所有OZ代理:https://docs.openzeppelin.com/upgrades-plugins/1.x/proxies透明:https://blog.openzeppelin.com/the-transparent-proxy-pattern/ proxyadmin (应该称为TransparentProxyAdmin):https://docs.openzeppelin.com/contracts/4.x/api/proxy#ProxyAdmin
虽然OZ已经为安全帽创建了代理插件,但是还没有一个插件可以让它像Foundry一样简单& Foundry团队已经声明他们不打算在这个时候这样做。如果您使用Foundry,有一些有趣的脚本可以帮助处理这个过程,但是它们不做OZ插件所做的相同级别的检查和验证。然而:)
https://ethereum.stackexchange.com/questions/130146
复制相似问题