首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何允许可升级合同中的初始化函数?

如何允许可升级合同中的初始化函数?
EN

Ethereum用户
提问于 2023-01-16 15:40:05
回答 1查看 68关注 0票数 1

据我所知,对于UUPS代理:代理合同是来自ERC1967Proxy.sol的OpenZeppelin合同,而实现合同应该继承于OpenZeppelin合同中的UUPSUpgradeable.sol -可升级。

但是,恶意参与者似乎可以在部署程序之前轻松地初始化实现。我想在代理契约的构造函数中初始化admin。似乎我可以使用管理插槽:0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103,然后允许管理员初始化函数-这是安全的吗?为什么在默认情况下不这样设置呢?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2023-01-16 23:58:15

这是ERC1967Proxy.sol的构造函数:

代码语言:javascript
复制
constructor(address _logic, bytes memory _data) payable {
     _upgradeToAndCall(_logic, _data, false);
}

_data param是对实现/逻辑契约的可选编码调用,您可以在部署时原子地调用初始化器函数(或对逻辑契约进行任意调用)。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/143060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档