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 次下载

Apache-2.0

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