如何只允许某些用户执行智能合约方法?
Posted
技术标签:
【中文标题】如何只允许某些用户执行智能合约方法?【英文标题】:How to allow only certain users to execute a smart contract method? 【发布时间】:2020-11-13 05:35:54 【问题描述】:我有一个包含管理员、普通用户和评论者角色的智能合约。我也有两种不同的方法,一种只有管理员可以执行,另一种只有评论者可以。我看到 open zeppelin 有角色库,可以用来定义角色。有没有办法在没有 openzeppelin 的情况下做到这一点?我需要使用映射吗?用户登录到另一个门户,只有登录用户的用户 ID 被传递给合约方法。所以,我想将这些用户标识映射到管理员、评论者或普通用户。 提前感谢您的帮助。
【问题讨论】:
【参考方案1】:访问控制的基础是检查交易的发送者地址。
contract Foo
address owner;
function superDuperPriviledge() public
require(msg.sender == owner, "Only owner can do this")
对于您的用例,有两种不同的方法听起来使用库没有任何意义,简单的require()
就足够了。
【讨论】:
好的。是否可以拥有 3 个不同的角色并将每个用户的地址映射到一个角色。例如:将0xabc地址关联到reviewer,在函数执行前检查? 是的,只需为每个角色创建一个新的地址变量,然后检查它。以上是关于如何只允许某些用户执行智能合约方法?的主要内容,如果未能解决你的问题,请参考以下文章