diff --git a/CHANGELOG.md b/CHANGELOG.md index 50966a1ce5..f980f59caa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ # UNRELEASED +# 0.33.0 + ### feat!: asset canister evidence and state hash length-prefix every variable-length field The encoding hashed for the evidence of a proposed batch, and for the state hash, now @@ -36,8 +38,9 @@ newly created project. The templates now ask for exactly 1.1.3. ### Frontend canister -- Module hash: 3fffda14c040852d76ca3c5e6423ae2ece73176254dbb2a1b15e963891e817e1 +- Module hash: 5a11daf17bc04059c3f3b570784ce07353fe5d7a6365c3db205de0cde13b3585 - https://github.com/dfinity/sdk/pull/4545 +- https://github.com/dfinity/sdk/pull/4547 # 0.32.0 diff --git a/Cargo.lock b/Cargo.lock index b7c8c8dc6b..69866e18a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2938,7 +2938,7 @@ dependencies = [ [[package]] name = "ic-asset" -version = "0.29.0" +version = "0.30.0" dependencies = [ "backoff", "brotli", @@ -3140,7 +3140,7 @@ dependencies = [ [[package]] name = "ic-certified-assets" -version = "0.3.0" +version = "0.4.0" dependencies = [ "anyhow", "base64 0.13.1", @@ -3862,7 +3862,7 @@ dependencies = [ [[package]] name = "icx-asset" -version = "0.29.0" +version = "0.30.0" dependencies = [ "anstyle", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index c85cf5e6f2..5ec88c57c8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ candid = "0.10.18" candid_parser = "0.3.0" dfx-core = { path = "src/dfx-core", version = "0.4.0" } ic-agent = "0.47.3" -ic-asset = { path = "src/canisters/frontend/ic-asset", version = "0.29.0" } +ic-asset = { path = "src/canisters/frontend/ic-asset", version = "0.30.0" } ic-cdk = "0.19.0-beta.2" ic-identity-hsm = "0.47.3" ic-utils = "0.47.3" diff --git a/src/canisters/frontend/ic-asset/Cargo.toml b/src/canisters/frontend/ic-asset/Cargo.toml index 1ace7d1c24..ea2427d1d8 100644 --- a/src/canisters/frontend/ic-asset/Cargo.toml +++ b/src/canisters/frontend/ic-asset/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ic-asset" -version = "0.29.0" # sync with icx-asset +version = "0.30.0" # sync with icx-asset authors.workspace = true edition.workspace = true repository.workspace = true diff --git a/src/canisters/frontend/ic-certified-assets/CHANGELOG.md b/src/canisters/frontend/ic-certified-assets/CHANGELOG.md index 0924d04187..6f2f73a21f 100644 --- a/src/canisters/frontend/ic-certified-assets/CHANGELOG.md +++ b/src/canisters/frontend/ic-certified-assets/CHANGELOG.md @@ -6,8 +6,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.4.0] - 2026-09-23 + ### Changed +- **BREAKING**: The encoding hashed for the evidence of a proposed batch, and for the state hash, + length-prefixes every variable-length field -- asset keys, content types, content encodings, + header names and values, the declared `sha256`, and asset content -- and hashes the number of + entries in a header map, behind the version-tagged domain separator `ic-certified-assets v2`. + Every operation in the encoding is self-delimiting, which makes the digest injective over the + change a batch applies. Evidence and state hash values differ from those earlier versions + compute over the same assets, so tooling that compares them has to be upgraded in step. The + encoding is specified under `compute_evidence` in + [docs/design/asset-canister-interface.md](https://github.com/dfinity/sdk/blob/master/docs/design/asset-canister-interface.md). +- **BREAKING**: `api_version()` returns 3. +- The evidence of a `SetAssetContent` operation covers `last_chunk` whether or not `chunk_ids` is + empty, matching the content that `commit_batch` stores for the same operation. - **BREAKING**: Implement `serde::Serialize` and `serde::Deserialize` for stable state structures: - Moved all stable state structures to the `stable_machine::v1` module, renaming them to `StableStateV1`, `StableConfigurationV1`, `StableStatePermissionsV1`, `StableAssetV1`, `StableAssetEncodingV1` - Removed `StableState` struct diff --git a/src/canisters/frontend/ic-certified-assets/Cargo.toml b/src/canisters/frontend/ic-certified-assets/Cargo.toml index ca93b1e376..36cafc2f28 100644 --- a/src/canisters/frontend/ic-certified-assets/Cargo.toml +++ b/src/canisters/frontend/ic-certified-assets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ic-certified-assets" -version = "0.3.0" +version = "0.4.0" authors.workspace = true edition.workspace = true repository.workspace = true diff --git a/src/canisters/frontend/icx-asset/Cargo.toml b/src/canisters/frontend/icx-asset/Cargo.toml index 605a0367aa..e892bd6a42 100644 --- a/src/canisters/frontend/icx-asset/Cargo.toml +++ b/src/canisters/frontend/icx-asset/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "icx-asset" -version = "0.29.0" # sync with ic-asset +version = "0.30.0" # sync with ic-asset authors.workspace = true edition.workspace = true repository.workspace = true diff --git a/src/distributed/assetstorage.wasm.gz b/src/distributed/assetstorage.wasm.gz index 7426af496b..ea059c0d73 100755 Binary files a/src/distributed/assetstorage.wasm.gz and b/src/distributed/assetstorage.wasm.gz differ