拥有权库提供了一种阻止除了单个“所有者”之外的任何人调用函数的方法。当需要单个用户对合约进行管理调用时,通常会使用拥有权库。
有关拥有权库的实现详细信息,请参阅Sway Libs 文档 。
要使用拥有权库,必须将 Sway Libs 和Sway Standards 添加到Forc.toml
文件中,然后导入到您的 Sway 项目中。要将 Sway Libs 作为项目的依赖项添加到Forc.toml
文件中,请参阅入门指南 。要将 Sway Standards 作为依赖项添加,请参阅Sway Standards 手册 。
要将拥有权库和SRC-5 标准导入到您的 Sway 智能合约中,请在您的 Sway 文件中添加以下内容:
use sway_libs::ownership::*;
use standards::src5::*;
要使用拥有权库实现SRC-5 标准,请确保将 Sway Standards 依赖项添加到您的合约中。以下演示了如何将拥有权库与 SRC-5 标准集成。
use sway_libs::ownership::_owner;
use standards::src5::{SRC5, State};
impl SRC5 for Contract {
#[storage(read)]
fn owner() -> State {
_owner()
}
}
注意 必须实现一个构造函数方法来初始化所有者。
导入后,拥有权库的函数将可用。通过在您自己的构造函数方法中调用initialize_ownership()
函数为您的合约初始化所有者。
#[storage(read, write)]
fn my_constructor(new_owner: Identity) {
initialize_ownership(new_owner);
}
要将函数限制为仅所有者,请调用only_owner()
函数。
#[storage(read)]
fn only_owner_may_call() {
only_owner();
// Only the contract's owner may reach this line.
}
要从存储中返回所有权状态,请调用_owner()
函数。
#[storage(read)]
fn get_owner_state() {
let owner: State = _owner();
}