From 164b885bd5e5d0b388b6c54dc090a816cbae8e49 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Wed, 12 Jul 2023 16:10:26 +0200 Subject: [PATCH 1/6] Contracts enable signed extension --- frame/contracts/src/wasm/prepare.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frame/contracts/src/wasm/prepare.rs b/frame/contracts/src/wasm/prepare.rs index ee89aae642b4a..f76c691bbb091 100644 --- a/frame/contracts/src/wasm/prepare.rs +++ b/frame/contracts/src/wasm/prepare.rs @@ -64,7 +64,7 @@ impl LoadedModule { config .wasm_multi_value(false) .wasm_mutable_global(false) - .wasm_sign_extension(false) + .wasm_sign_extension(true) .wasm_bulk_memory(false) .wasm_reference_types(false) .wasm_tail_call(false) From 8d8b0efd25b88e6f9c95c1d84e9a54dc4e34b607 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Sun, 16 Jul 2023 23:40:33 +0200 Subject: [PATCH 2/6] Add test --- frame/contracts/fixtures/sign_extension.wat | 9 ++++++++ frame/contracts/src/tests.rs | 24 +++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 frame/contracts/fixtures/sign_extension.wat diff --git a/frame/contracts/fixtures/sign_extension.wat b/frame/contracts/fixtures/sign_extension.wat new file mode 100644 index 0000000000000..df4d1fbd13b28 --- /dev/null +++ b/frame/contracts/fixtures/sign_extension.wat @@ -0,0 +1,9 @@ +(module + (import "env" "memory" (memory 1 1)) + (func (export "deploy")) + (func (export "call")) + (func (param i32) (result i32) + local.get 0 + i32.extend8_s + ) +) diff --git a/frame/contracts/src/tests.rs b/frame/contracts/src/tests.rs index f67be602695d6..76c7240ada525 100644 --- a/frame/contracts/src/tests.rs +++ b/frame/contracts/src/tests.rs @@ -5633,3 +5633,27 @@ fn root_cannot_instantiate() { ); }); } + +#[test] +fn sign_extension_works() { + let (code, _) = compile_module::("sign_extension").unwrap(); + + ExtBuilder::default().build().execute_with(|| { + let _ = Balances::deposit_creating(&ALICE, 1_000_000); + + assert_ok!( + Contracts::bare_instantiate( + ALICE, + 0, + GAS_LIMIT, + None, + Code::Upload(code), + vec![], + vec![], + DebugInfo::Skip, + CollectEvents::Skip, + ) + .result + ); + }); +} From 161717c3b372df29dd7ccc7eb88b75e7a91612f4 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Sun, 16 Jul 2023 23:44:06 +0200 Subject: [PATCH 3/6] fix --- frame/contracts/fixtures/sign_extension.wat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frame/contracts/fixtures/sign_extension.wat b/frame/contracts/fixtures/sign_extension.wat index df4d1fbd13b28..af10faf9b1b74 100644 --- a/frame/contracts/fixtures/sign_extension.wat +++ b/frame/contracts/fixtures/sign_extension.wat @@ -1,9 +1,9 @@ (module (import "env" "memory" (memory 1 1)) (func (export "deploy")) - (func (export "call")) (func (param i32) (result i32) local.get 0 i32.extend8_s ) + (func (export "call")) ) From ea2f03646f99c5d2865b505360f52ab562cbb588 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Sun, 16 Jul 2023 23:47:22 +0200 Subject: [PATCH 4/6] xx --- frame/contracts/fixtures/sign_extension.wat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frame/contracts/fixtures/sign_extension.wat b/frame/contracts/fixtures/sign_extension.wat index af10faf9b1b74..df4d1fbd13b28 100644 --- a/frame/contracts/fixtures/sign_extension.wat +++ b/frame/contracts/fixtures/sign_extension.wat @@ -1,9 +1,9 @@ (module (import "env" "memory" (memory 1 1)) (func (export "deploy")) + (func (export "call")) (func (param i32) (result i32) local.get 0 i32.extend8_s ) - (func (export "call")) ) From e1332ea22c8ca4163faf3cff68b406c882d1f4bb Mon Sep 17 00:00:00 2001 From: PG Herveou Date: Thu, 20 Jul 2023 18:51:02 +0200 Subject: [PATCH 5/6] Update frame/contracts/fixtures/sign_extension.wat Co-authored-by: Sasha Gryaznov --- frame/contracts/fixtures/sign_extension.wat | 1 + 1 file changed, 1 insertion(+) diff --git a/frame/contracts/fixtures/sign_extension.wat b/frame/contracts/fixtures/sign_extension.wat index df4d1fbd13b28..e07751a8abfb9 100644 --- a/frame/contracts/fixtures/sign_extension.wat +++ b/frame/contracts/fixtures/sign_extension.wat @@ -1,3 +1,4 @@ +;; Simple fixture which requires sign_extension proposal to be enabled. (module (import "env" "memory" (memory 1 1)) (func (export "deploy")) From c693ca785ab1c97fc0403bb377c4d15580f94986 Mon Sep 17 00:00:00 2001 From: pgherveou Date: Fri, 21 Jul 2023 11:06:13 +0200 Subject: [PATCH 6/6] move tests --- frame/contracts/fixtures/sign_extension.wat | 10 --------- frame/contracts/src/tests.rs | 24 --------------------- frame/contracts/src/wasm/prepare.rs | 16 ++++++++++++++ 3 files changed, 16 insertions(+), 34 deletions(-) delete mode 100644 frame/contracts/fixtures/sign_extension.wat diff --git a/frame/contracts/fixtures/sign_extension.wat b/frame/contracts/fixtures/sign_extension.wat deleted file mode 100644 index e07751a8abfb9..0000000000000 --- a/frame/contracts/fixtures/sign_extension.wat +++ /dev/null @@ -1,10 +0,0 @@ -;; Simple fixture which requires sign_extension proposal to be enabled. -(module - (import "env" "memory" (memory 1 1)) - (func (export "deploy")) - (func (export "call")) - (func (param i32) (result i32) - local.get 0 - i32.extend8_s - ) -) diff --git a/frame/contracts/src/tests.rs b/frame/contracts/src/tests.rs index 76c7240ada525..f67be602695d6 100644 --- a/frame/contracts/src/tests.rs +++ b/frame/contracts/src/tests.rs @@ -5633,27 +5633,3 @@ fn root_cannot_instantiate() { ); }); } - -#[test] -fn sign_extension_works() { - let (code, _) = compile_module::("sign_extension").unwrap(); - - ExtBuilder::default().build().execute_with(|| { - let _ = Balances::deposit_creating(&ALICE, 1_000_000); - - assert_ok!( - Contracts::bare_instantiate( - ALICE, - 0, - GAS_LIMIT, - None, - Code::Upload(code), - vec![], - vec![], - DebugInfo::Skip, - CollectEvents::Skip, - ) - .result - ); - }); -} diff --git a/frame/contracts/src/wasm/prepare.rs b/frame/contracts/src/wasm/prepare.rs index f76c691bbb091..9dcabda127b1a 100644 --- a/frame/contracts/src/wasm/prepare.rs +++ b/frame/contracts/src/wasm/prepare.rs @@ -672,6 +672,22 @@ mod tests { Ok(_) ); + prepare_test!( + signed_extension_works, + r#" + (module + (import "env" "memory" (memory 1 1)) + (func (export "deploy")) + (func (export "call")) + (func (param i32) (result i32) + local.get 0 + i32.extend8_s + ) + ) + "#, + Ok(_) + ); + prepare_test!( omit_memory, r#"