Contracts upload with Determinism::Enforced when possible (#3540)

Co-authored-by: Cyrill Leutwiler <cyrill@parity.io>
Co-authored-by: command-bot <>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
This commit is contained in:
PG Herveou
2024-03-06 17:35:55 +01:00
committed by GitHub
parent f2f4b154d7
commit 9952786e1b
8 changed files with 756 additions and 636 deletions
+20
View File
@@ -5185,6 +5185,26 @@ fn deposit_limit_honors_min_leftover() {
});
}
#[test]
fn upload_should_enforce_deterministic_mode_when_possible() {
let upload = |fixture, determinism| {
let (wasm, code_hash) = compile_module::<Test>(fixture).unwrap();
ExtBuilder::default()
.build()
.execute_with(|| -> Result<Determinism, DispatchError> {
let _ = <Test as Config>::Currency::set_balance(&ALICE, 1_000_000);
Contracts::bare_upload_code(ALICE, wasm, None, determinism)?;
let info = CodeInfoOf::<Test>::get(code_hash).unwrap();
Ok(info.determinism())
})
};
assert_eq!(upload("dummy", Determinism::Enforced), Ok(Determinism::Enforced));
assert_eq!(upload("dummy", Determinism::Relaxed), Ok(Determinism::Enforced));
assert_eq!(upload("float_instruction", Determinism::Relaxed), Ok(Determinism::Relaxed));
assert!(upload("float_instruction", Determinism::Enforced).is_err());
}
#[test]
fn cannot_instantiate_indeterministic_code() {
let (wasm, code_hash) = compile_module::<Test>("float_instruction").unwrap();