#account #storage #near #management #smart-contracts #traits #info

near-account

用于管理在Near智能合约上的账户数据和存储的库

3个版本

0.1.2 2022年3月8日
0.1.1 2022年3月8日
0.1.0 2022年2月28日

#136#near


near-internal-balances-pl… 中使用

MIT 许可证

29KB
528 代码行

near-accounts 允许跟踪与账户相关的数据以及存储管理。

使用非常简单。从所需的导入开始

use near_account::{
    impl_near_accounts_plugin, Account, AccountDeposits, Accounts, NearAccountPlugin,
    NearAccountsPluginNonExternal, NewInfo,
};

然后,定义一个结构体,以确定合约应该为每个账户存储哪些信息。例如,如果合约打算跟踪每个用户的消息

#[derive(BorshDeserialize, BorshSerialize)]
pub struct AccountInfo {
    pub message: String,
}

然后,合约必须实现 NewInfo 特性为 AccountInfo,例如

  impl NewInfo for AccountInfo {
  fn default_from_account_id(account_id: AccountId) -> Self {
      Self {
          message: "".to_string(),
          internal_balance: UnorderedMap::new(format!("{}-bal", account_id).as_bytes()),
      }
  }
 }

最后,剩下的工作就是定义合约并调用实现宏

#[near_bindgen]
#[derive(BorshDeserialize, BorshSerialize, PanicOnDefault)]
pub struct Contract {
    pub accounts: Accounts<AccountInfo>,
}

impl_near_accounts_plugin!(Contract, accounts, AccountInfo);

有关外部定义方法(公开可调用的)的文档,请参阅NearAccountPlugin 特性

有关内部合约使用函数的文档,请参阅 NearAccountsPluginNonExternal 特性AccountDeposits 特性

依赖项

~5.5MB
~106K SLoC