8 releases
| 0.3.0 | Jun 27, 2025 |
|---|---|
| 0.2.5 | Aug 22, 2022 |
| 0.2.4 | Jul 12, 2022 |
| 0.2.2 | May 12, 2022 |
| 0.1.0 | Feb 3, 2022 |
#4 in #certification
83 downloads per month
270KB
7K
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://icp0.io sync <canister_id> .
Dependencies
~8–16MB
~222K SLoC