5 个版本

0.0.4 2022年12月8日
0.0.3 2022年12月8日
0.0.2 2022年12月8日
0.0.1 2022年10月12日
0.0.0 2022年9月19日

#10 in #account-id

GPL-3.0 许可证

48KB
860 代码行

near-non-transferrable-token

Popula 非可转让代币库。

Crates.io version Download Reference Documentation

示例

use near_non_transferrable_token::{impl_fungible_token_core, impl_fungible_token_storage};

#[near_bindgen]
impl Contract {
    #[init]
    pub fn new(
        owner_id: AccountId,
        metadata: FungibleTokenMetadata,
    ) -> Self {
        assert!(!env::state_exists(), "Already initialized");
        metadata.assert_valid();
        let mut this = Self {
            token: FungibleToken::new(b"a".to_vec()),
            metadata: LazyOption::new(b"m".to_vec(), Some(&metadata)),
            owner_id,
            white_list: HashSet::new()
        };
        this
    }
}

impl_fungible_token_core!(Contract, token);
impl_fungible_token_storage!(Contract, token);


#[near_bindgen]
impl FungibleTokenMetadataProvider for Contract {
    fn ft_metadata(&self) -> FungibleTokenMetadata {
        self.metadata.get().unwrap()
    }
}

更多详细信息请参见 https://github.com/beepopula/Drip-contract.

特性

账户簿

不同合约的独立余额

#[derive(BorshDeserialize, BorshSerialize)]
pub struct Account {
    pub contract_ids: UnorderedMap<Option<AccountId>, Balance>,
    pub deposit_map: UnorderedMap<AccountId, HashMap<Option<AccountId>, Balance>>  //key: specific community drip
}

注意

  • 如果 contract_ids 的密钥为 None,则表示余额总和。
  • 存款是一个派生函数,用于证明您只有一次这样的余额,防止无限证明。所有权的所有权应保持不变。

版本

语义版本控制

此 crate 遵循 Cargo 的 semver 指南.

避免所有可能破坏状态的变更(任何数据类型的高级序列化格式)。如果发生此类变更,则将带有主要版本,并带有编译器错误。如果您遇到一个没有错误,请 创建一个问题

MSRV

当前支持的最低 Rust 版本是 1.56。如果需要发布一个需要 Rust 工具链升级的安全补丁版本,则不保证会遵守此要求。

依赖

~5.5MB
~107K SLoC