首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"public“在"public onlyOwner”函数中的用途是什么?

"public“在"public onlyOwner”函数中的用途是什么?
EN

Ethereum用户
提问于 2022-01-31 15:28:34
回答 1查看 839关注 0票数 3

我正在学习稳固。我偶然发现了这段代码,并发现它令人困惑。我理解onlyOwner修饰符的用法,它只限制所有者和公共修饰符的访问,以允许函数在内部或外部调用。但是,将"public“和"onlyOwner”放在一起意味着什么,因为只有所有者才能调用函数?换句话说,在这个功能中,公共的用途是什么?

代码语言:javascript
复制
// contracts/MyContract.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/access/Ownable.sol";

contract MyContract is Ownable {
    function normalThing() public {
        // anyone can call this normalThing()
    }

    function specialThing() public onlyOwner {
        // only the owner can call specialThing()!
    }
}
EN

回答 1

Ethereum用户

发布于 2022-01-31 16:54:52

public功能可视性说明符,和externalinternalprivate一样。它规定了一个函数是可以公开调用(即由每个人调用),还是可以私下调用(即仅由合同本身调用)。

当一个函数是public (或external)时,这意味着在该契约之外调用该函数是可能的,因此人们可以发送事务来调用它,其他契约也可以调用该函数。

可见性说明符与修饰符(如onlyOwner)是分开的。它只会改变谁可以调用函数。当函数被调用时,无论可见性如何,修饰符仍然被正常执行,因此在您的示例中,如果某个不是所有者的人调用specialThing,则该调用仍将被恢复,因为onlyOwner被调用。

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

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

复制
相关文章

相似问题

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