4个版本

0.0.8 2023年10月23日
0.0.7 2023年6月9日
0.0.5 2023年3月13日
0.0.4 2023年1月16日

#2721 in 魔法豆

GPL-3.0许可证

48KB
913

near-non-transferable-token

Popula不可转让代币库。

Crates.io version Download Reference Documentation

示例

use near_non_transferable_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
}

说明

  • 如果合约_ids的键为None,则表示余额总和。
  • 存款是一个派生函数,用于证明您只有一次此类余额,防止无限证明。并且所有权应保持不变。

版本

语义版本

此crate遵循Cargo的semver指南

状态破坏性更改(任何数据类型的低级序列化格式)将不惜一切代价避免。如果发生此类更改,则将带有主要版本,并带有编译器错误。如果您遇到一个没有的,请提出问题

MSRV

当前最低支持的Rust版本为1.56。如果需要安全补丁发布,需要提高Rust工具链,则没有保证会维持这个版本。

依赖项

~5MB
~103K SLoC