Ownership

Icon Link拥有权库

拥有权库提供了一种阻止除了单个“所有者”之外的任何人调用函数的方法。当需要单个用户对合约进行管理调用时,通常会使用拥有权库。

有关拥有权库的实现详细信息,请参阅Sway Libs 文档 Icon Link

Icon Link导入拥有权库

要使用拥有权库,必须将 Sway Libs 和Sway Standards Icon Link添加到Forc.toml文件中,然后导入到您的 Sway 项目中。要将 Sway Libs 作为项目的依赖项添加到Forc.toml文件中,请参阅入门指南 。要将 Sway Standards 作为依赖项添加,请参阅Sway Standards 手册 Icon Link

要将拥有权库和SRC-5 Icon Link标准导入到您的 Sway 智能合约中,请在您的 Sway 文件中添加以下内容:

use sway_libs::ownership::*;
use standards::src5::*;

Icon Link将拥有权库集成到 SRC-5 标准中

要使用拥有权库实现SRC-5 Icon Link标准,请确保将 Sway Standards 依赖项添加到您的合约中。以下演示了如何将拥有权库与 SRC-5 标准集成。

use sway_libs::ownership::_owner;
use standards::src5::{SRC5, State};
 
impl SRC5 for Contract {
    #[storage(read)]
    fn owner() -> State {
        _owner()
    }
}
Icon InfoCircle

注意 必须实现一个构造函数方法来初始化所有者。

Icon Link基本功能

Icon Link设置合约所有者

导入后,拥有权库的函数将可用。通过在您自己的构造函数方法中调用initialize_ownership()函数为您的合约初始化所有者。

#[storage(read, write)]
fn my_constructor(new_owner: Identity) {
    initialize_ownership(new_owner);
}

Icon Link应用限制

要将函数限制为仅所有者,请调用only_owner()函数。

#[storage(read)]
fn only_owner_may_call() {
    only_owner();
    // Only the contract's owner may reach this line.
}

Icon Link检查所有权状态

要从存储中返回所有权状态,请调用_owner()函数。

#[storage(read)]
fn get_owner_state() {
    let owner: State = _owner();
}