7 releases

0.2.5 Aug 22, 2022
0.2.4 Jul 12, 2022
0.2.2 May 12, 2022
0.1.0 Feb 3, 2022

#6 in #certification

Download history 11/week @ 2024-07-29 5/week @ 2024-08-26 13/week @ 2024-09-09 21/week @ 2024-09-16 32/week @ 2024-09-23 29/week @ 2024-09-30 3/week @ 2024-10-07 19/week @ 2024-10-14 5/week @ 2024-10-21 15/week @ 2024-10-28 12/week @ 2024-11-04

51 downloads per month

Apache-2.0

265KB
5.5K SLoC

Certified Assets Library

Rust support for asset certification.

Certified assets can also be served from any Rust canister by including this library.

Adding to a canister

[dependencies]
ic-certified-assets = "0.2.2"

The assets are preserved over upgrades by including the corresponding functions in the init/pre_upgrade/upgrade hooks which can be mixed with the other state from the 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;
  };
}

Uploading assets

cd assets
icx-asset --pem ~/.config/dfx/identity/default/identity.pem --replica https://ic0.app sync <canister_id> .

Dependencies

~7–16MB
~178K SLoC