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
48KB
860 代码行
示例
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