Skip to content

访问控制

本页面列出了处理权限、所有权和访问控制的常见示例。

如何使用 Ownable 特性检查发送者权限

typescript
// 为了方便起见,必须从 stdlib 中导入 Ownable 和 Deployable:
import "@stdlib/ownable";
import "@stdlib/deploy";
 
message FooBarMsg {
    newVal: Int as uint32;
}
 
// Ownable 特性可以将某些操作限制为仅限所有者
contract SenderChecker with Deployable, Ownable {
    // 持久状态变量
    owner: Address;     // Ownable 特性要求您添加这个确切的状态变量
    val: Int as uint32; // 一些值
 
    init() {
        // 我们可以将 owner 初始化为任何我们想要的值,这里是部署者:
        self.owner = sender();
        self.val = 0;
    }
 
    receive("inc") {
        require(self.owner == sender(), "只有所有者才能增加值!");
        self.val += 1;
    }
 
    receive(msg: FooBarMsg) {
        require(self.owner == sender(), "只有所有者才能设置值!");
        self.val = msg.newVal;
    }
}