-
Notifications
You must be signed in to change notification settings - Fork 746
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use generic hash for runtime wasm in resolve_state_version_from_wasm #3447
Use generic hash for runtime wasm in resolve_state_version_from_wasm #3447
Conversation
wasm.hash(&mut state); | ||
state.finish().to_le_bytes().to_vec() | ||
}, | ||
hash: sp_core::blake2_256(wasm).to_vec(), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is not correct, you need to get the hasher used by the Block
type. For most chains this is blake256, but not for all.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I mean "not correct" not being really the right term here, but if we want to fix this, we should fix it properly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
polkadot-sdk/substrate/primitives/state-machine/src/backend.rs
Lines 427 to 433 in 36b7037
let hash = self | |
.backend | |
.storage_hash(sp_core::storage::well_known_keys::CODE) | |
.ok() | |
.flatten() | |
.ok_or("`:code` hash not found")? | |
.encode(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know how to do that, and there are many places where this hash is already hardcoded to be blake2_256
. How about we merge this and create an issue to make the hasher depend on the Block
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Change the function to take H: Hash
and then you can pass HashingOf<Block>
on the calling side of this function.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, it was easier than I expected.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ty!
@tmpolaczyk could you add some prdoc? Then accept my changes and we can merge it. |
Co-authored-by: Bastian Köcher <git@kchr.de>
de6d025
…head-data * origin/master: (51 commits) Runtime Upgrade ref docs and Single Block Migration example pallet (#1554) Collator overseer builder unification (#3335) Introduce storage attr macro `#[disable_try_decode_storage]` and set it on `System::Events` and `ParachainSystem::HostConfiguration` (#3454) Add Polkadotters bootnoders per IBP application (#3423) Add documentation around FRAME Origin (#3362) Bridge zombienet tests: Check amount received at destination (#3490) Snowbridge benchmark tests fix (#3424) fix(zombienet): increase timeout in download artifacts (#3376) Cleanup String::from_utf8 (#3446) [prdoc] Validate crate names (#3467) Limit max execution time for `test-linux-stable` CI jobs (#3483) Introduce Notification block pinning limit (#2935) frame-support: Improve error reporting when having too many pallets (#3478) add Encointer as trusted teleporter for Westend (#3411) [pallet-xcm] Adjust benchmarks (teleport_assets/reserve_transfer_assets) not relying on ED (#3464) Add more debug logs to understand if statement-distribution misbehaving (#3419) Remove redundant parachains assigner pallet. (#3457) Use generic hash for runtime wasm in resolve_state_version_from_wasm (#3447) Runtime: allow backing multiple candidates of same parachain on different cores (#3231) Bridge zombienet tests: move all "framework" files under one folder (#3462) ...
…aritytech#3447) Changes the runtime hash algorithm used in `resolve_state_version_from_wasm` from `DefaultHasher` to a caller-provided one (usually `HashingFor<Block>`), to match the one used elsewhere. This fixes an issue where the runtime wasm is compiled 3 times when starting the `tanssi-node` with `--dev`. With this fix, the runtime wasm is only compiled 2 times. The other redundant compilation is caused by the `GenesisConfigBuilderRuntimeCaller` struct, which ignores the runtime cache. --------- Co-authored-by: Bastian Köcher <git@kchr.de>
…aritytech#3447) Changes the runtime hash algorithm used in `resolve_state_version_from_wasm` from `DefaultHasher` to a caller-provided one (usually `HashingFor<Block>`), to match the one used elsewhere. This fixes an issue where the runtime wasm is compiled 3 times when starting the `tanssi-node` with `--dev`. With this fix, the runtime wasm is only compiled 2 times. The other redundant compilation is caused by the `GenesisConfigBuilderRuntimeCaller` struct, which ignores the runtime cache. --------- Co-authored-by: Bastian Köcher <git@kchr.de>
Changes the runtime hash algorithm used in
resolve_state_version_from_wasm
fromDefaultHasher
to a caller-provided one (usuallyHashingFor<Block>
), to match the one used elsewhere.This fixes an issue where the runtime wasm is compiled 3 times when starting the
tanssi-node
with--dev
. With this fix, the runtime wasm is only compiled 2 times. The other redundant compilation is caused by theGenesisConfigBuilderRuntimeCaller
struct, which ignores the runtime cache.