首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >防止使用参数到构造函数的智能契约部署

防止使用参数到构造函数的智能契约部署
EN

Ethereum用户
提问于 2023-01-21 08:45:59
回答 1查看 16关注 0票数 0

我在ethers.js库中使用了安全帽,并且我注意到构造函数的参数是在智能契约部署期间传递的,而不是在契约实例化期间传递的。此外,在缺少智能契约构造函数的参数时,部署失败。

现在,我有一个硬编码键,它必须与传递给我的智能契约构造函数的参数相匹配,如下所示:

代码语言:javascript
运行
复制
constructor(string memory authKey) {
    if(keccak256(byte(authKey)) != keccak256("&65I_am_a_sample_hard_coded_key&#£@"))) {
        // do not deploy (or just fail)
        // or at least, invalidate this contract
    }
}

我用钥匙检查作为一种授权形式。

如果传递的密钥参数与我的硬编码密钥不匹配,是否有可能阻止部署(如果可能的话,在没有传递参数的情况下失败)?如果没有,如果在部署过程中提供了错误的密钥作为参数,那么智能契约是否会变得无效?

EN

回答 1

Ethereum用户

发布于 2023-01-21 11:16:02

您只需像下面这样使用revert命令:

代码语言:javascript
运行
复制
revert(‘Reverted due to bad constructor parameters’);

或者不使用if子句,您只需这样做:

代码语言:javascript
运行
复制
require("condition", "Reverted due to bad constructor parameters");

第三种选择(在关键问题发生时使用这个选项,因为它消耗了所有的事务气体):

代码语言:javascript
运行
复制
assert("condition");

因此,契约创建事务与任何其他事务一样,构造函数只是另一个函数,在部署时调用它,因此在这里适用的规则与正常函数的规则相同。

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

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

复制
相关文章

相似问题

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