跳转到内容

访问控制

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

如何使用 Ownable trait检查发件人权限

// Ownable has to be imported from stdlib, as well as Deployable, for convenience:
import "@stdlib/ownable";
import "@stdlib/deploy";
message FooBarMsg {
newVal: Int as uint32;
}
// Ownable trait can limit certain actions to the owner only
contract SenderChecker with Deployable, Ownable {
// Persistent state variables
owner: Address; // Ownable trait requires you to add this exact state variable
val: Int as uint32; // some value
init() {
// we can initialize owner to any value we want, the deployer in this case:
self.owner = sender();
self.val = 0;
}
receive("inc") {
self.requireOwner(); // throws exit code 132 if the sender isn't an owner
self.val += 1;
}
receive(msg: FooBarMsg) {
self.requireOwner(); // throws exit code 132 if the sender isn't an owner
self.val = msg.newVal;
}
}