7 个版本
0.2.5 | 2022年8月22日 |
---|---|
0.2.4 | 2022年7月12日 |
0.2.2 | 2022年5月12日 |
0.1.0 | 2022年2月3日 |
#5 in #certification
每月 41 次下载
255KB
5K SLoC
认证资产库
Rust 对资产认证的支持。
通过包含此库,认证资产也可以由任何 Rust canister 提供。
添加到 canister 中
[dependencies]
ic-certified-assets = "0.2.2"
通过在 init/pre_upgrade/upgrade
钩子中包含相应的函数,可以由 canister 中的其他状态混合,从而在升级过程中保留资产
#[derive(Clone, Debug, CandidType, Deserialize)]
struct StableState {
my_state: MyState,
assets: crate::assets::StableState,
}
#[init]
fn init() {
crate::assets::init();
}
#[pre_upgrade]
fn pre_upgrade() {
let stable_state = STATE.with(|s| StableState {
my_state: s.my_state,
assets: crate::assets::pre_upgrade(),
});
ic_cdk::storage::stable_save((stable_state,)).expect("failed to save stable state");
}
#[post_upgrade]
fn post_upgrade() {
let (StableState { assets, my_state },): (StableState,) =
ic_cdk::storage::stable_restore().expect("failed to restore stable state");
crate::assets::post_upgrade(assets);
STATE.with(|s| {
s.my_state = my_state;
};
}
上传资产
cd assets
icx-asset --pem ~/.config/dfx/identity/default/identity.pem --replica https://ic0.app sync <canister_id> .
依赖关系
~5–14MB
~144K SLoC