diff --git a/contracts/src/contracts/isms/multisig/merkleroot_multisig_ism.cairo b/contracts/src/contracts/isms/multisig/merkleroot_multisig_ism.cairo index b15316a..dfcba87 100644 --- a/contracts/src/contracts/isms/multisig/merkleroot_multisig_ism.cairo +++ b/contracts/src/contracts/isms/multisig/merkleroot_multisig_ism.cairo @@ -36,6 +36,7 @@ pub mod merkleroot_multisig_ism { pub const EMPTY_METADATA: felt252 = 'Empty metadata'; pub const VALIDATOR_ADDRESS_CANNOT_BE_NULL: felt252 = 'Validator address cannot be 0'; pub const NO_VALIDATORS_PROVIDED: felt252 = 'No validators provided'; + pub const THRESHOLD_TOO_HIGH: felt252 = 'Threshold too high'; } #[event] @@ -46,8 +47,15 @@ pub mod merkleroot_multisig_ism { } #[constructor] - fn constructor(ref self: ContractState, _owner: ContractAddress, _validators: Span) { + fn constructor( + ref self: ContractState, + _owner: ContractAddress, + _validators: Span, + _threshold: u32 + ) { self.ownable.initializer(_owner); + assert(_threshold <= 0xffffffff, Errors::THRESHOLD_TOO_HIGH); + self.threshold.write(_threshold); self.set_validators(_validators); } @@ -113,17 +121,6 @@ pub mod merkleroot_multisig_ism { self.threshold.read() } - /// Sets the threshold, the number of validator signatures needed to verify a message - /// Dev: callable only by the admin - /// - /// # Arguments - /// - /// * - `_threshold` - the number of validator signature needed - fn set_threshold(ref self: ContractState, _threshold: u32) { - self.ownable.assert_only_owner(); - self.threshold.write(_threshold); - } - /// Returns the set of validators responsible for verifying _message and the number of signatures required /// Dev: Can change based on the content of _message /// diff --git a/contracts/src/contracts/isms/multisig/messageid_multisig_ism.cairo b/contracts/src/contracts/isms/multisig/messageid_multisig_ism.cairo index c177338..2c7febe 100644 --- a/contracts/src/contracts/isms/multisig/messageid_multisig_ism.cairo +++ b/contracts/src/contracts/isms/multisig/messageid_multisig_ism.cairo @@ -36,6 +36,7 @@ pub mod messageid_multisig_ism { pub const EMPTY_METADATA: felt252 = 'Empty metadata'; pub const VALIDATOR_ADDRESS_CANNOT_BE_NULL: felt252 = 'Validator address cannot be 0'; pub const NO_VALIDATORS_PROVIDED: felt252 = 'No validators provided'; + pub const THRESHOLD_TOO_HIGH: felt252 = 'Threshold too high'; } #[event] @@ -49,8 +50,15 @@ pub mod messageid_multisig_ism { #[constructor] - fn constructor(ref self: ContractState, _owner: ContractAddress, _validators: Span) { + fn constructor( + ref self: ContractState, + _owner: ContractAddress, + _validators: Span, + _threshold: u32 + ) { self.ownable.initializer(_owner); + assert(_threshold <= 0xffffffff, Errors::THRESHOLD_TOO_HIGH); + self.threshold.write(_threshold); self.set_validators(_validators); } @@ -116,18 +124,6 @@ pub mod messageid_multisig_ism { self.threshold.read() } - - /// Set the threshold for validation - /// Dev: callable only by the owner - /// - /// # Arguments - /// - /// * - `_threshold` - The number of validator signatures needed - fn set_threshold(ref self: ContractState, _threshold: u32) { - self.ownable.assert_only_owner(); - self.threshold.write(_threshold); - } - /// Returns the set of validators responsible for verifying _message and the number of signatures required /// Dev: Can change based on the content of _message /// diff --git a/contracts/src/interfaces.cairo b/contracts/src/interfaces.cairo index 499ee30..8bc5b5f 100644 --- a/contracts/src/interfaces.cairo +++ b/contracts/src/interfaces.cairo @@ -105,8 +105,6 @@ pub trait IValidatorConfiguration { fn get_validators(self: @TContractState) -> Span; fn get_threshold(self: @TContractState) -> u32; - - fn set_threshold(ref self: TContractState, _threshold: u32); } #[starknet::interface] diff --git a/contracts/src/tests/isms/test_aggregation.cairo b/contracts/src/tests/isms/test_aggregation.cairo index b9c52c3..2bc140d 100644 --- a/contracts/src/tests/isms/test_aggregation.cairo +++ b/contracts/src/tests/isms/test_aggregation.cairo @@ -28,7 +28,6 @@ fn test_aggregation_module_type() { ); } - #[test] #[should_panic] fn test_aggregation_initialize_with_too_many_modules() { @@ -86,23 +85,16 @@ fn test_aggregation_verify() { body: message_body.clone() }; let (_, validators_address, _) = get_message_and_signature(); - let (messageid, messageid_validator_configuration) = setup_messageid_multisig_ism( - validators_address.span() - ); + let (messageid, _) = setup_messageid_multisig_ism(validators_address.span(), threshold); let origin_merkle_tree: u256 = 'origin_merkle_tree_hook'.try_into().unwrap(); let root: u256 = 'root'.try_into().unwrap(); let index = 1; let message_id_metadata = build_messageid_metadata(origin_merkle_tree, root, index); - let ownable = IOwnableDispatcher { - contract_address: messageid_validator_configuration.contract_address - }; - start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); - messageid_validator_configuration.set_threshold(5); // Noop ism let noop_ism = setup_noop_ism(); let aggregation = setup_aggregation( array![messageid.contract_address.into(), noop_ism.contract_address.into(),].span(), - threshold + threshold.try_into().unwrap() ); let ownable = IOwnableDispatcher { contract_address: aggregation.contract_address }; start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); diff --git a/contracts/src/tests/isms/test_merkleroot_multisig.cairo b/contracts/src/tests/isms/test_merkleroot_multisig.cairo index efd4ddc..9fa8478 100644 --- a/contracts/src/tests/isms/test_merkleroot_multisig.cairo +++ b/contracts/src/tests/isms/test_merkleroot_multisig.cairo @@ -24,10 +24,11 @@ use snforge_std::{start_prank, CheatTarget}; #[test] fn test_set_validators() { + let threshold = 2; let new_validators: Array = array![ VALIDATOR_ADDRESS_1().into(), VALIDATOR_ADDRESS_2().into() ]; - let (_, validators) = setup_merkleroot_multisig_ism(new_validators.span()); + let (_, validators) = setup_merkleroot_multisig_ism(new_validators.span(), threshold); let ownable = IOwnableDispatcher { contract_address: validators.contract_address }; start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); let validators_span = validators.get_validators(); @@ -38,30 +39,20 @@ fn test_set_validators() { #[test] fn test_set_threshold() { - let new_threshold = 3; - let (_, validators) = setup_merkleroot_multisig_ism(array!['validator_1'].span()); + let threshold = 3; + let (_, validators) = setup_merkleroot_multisig_ism(array!['validator_1'].span(), threshold); let ownable = IOwnableDispatcher { contract_address: validators.contract_address }; start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); - validators.set_threshold(new_threshold); - assert(validators.get_threshold() == new_threshold, 'wrong validator threshold'); + assert(validators.get_threshold() == threshold, 'wrong validator threshold'); } #[test] #[should_panic] fn test_set_validators_fails_if_null_validator() { + let threshold = 2; let new_validators = array![VALIDATOR_ADDRESS_1().into(), 0].span(); - setup_merkleroot_multisig_ism(new_validators); -} - -#[test] -#[should_panic(expected: ('Caller is not the owner',))] -fn test_set_threshold_fails_if_caller_not_owner() { - let new_threshold = 3; - let (_, validators) = setup_merkleroot_multisig_ism(array!['validator_1'].span()); - let ownable = IOwnableDispatcher { contract_address: validators.contract_address }; - start_prank(CheatTarget::One(ownable.contract_address), NEW_OWNER().try_into().unwrap()); - validators.set_threshold(new_threshold); + setup_merkleroot_multisig_ism(new_validators, threshold); } @@ -111,7 +102,10 @@ fn test_merkleroot_ism_metadata() { #[test] fn test_merkle_root_multisig_module_type() { - let (merkleroot_ism, _) = setup_merkleroot_multisig_ism(array!['validator_1'].span()); + let threshold = 2; + let (merkleroot_ism, _) = setup_merkleroot_multisig_ism( + array!['validator_1'].span(), threshold + ); assert( merkleroot_ism .module_type() == ModuleType::MERKLE_ROOT_MULTISIG(merkleroot_ism.contract_address), @@ -122,6 +116,7 @@ fn test_merkle_root_multisig_module_type() { #[test] fn test_merkle_root_multisig_verify_with_4_valid_signatures() { + let threshold = 4; let array = array![ 0x01020304050607080910111213141516, 0x01020304050607080910111213141516, @@ -138,9 +133,7 @@ fn test_merkle_root_multisig_verify_with_4_valid_signatures() { body: message_body.clone() }; let (_, validators_address, _) = get_merkle_message_and_signature(); - let (merkleroot_ism, merkleroot_validator_configuration) = setup_merkleroot_multisig_ism( - validators_address.span() - ); + let (merkleroot_ism, _) = setup_merkleroot_multisig_ism(validators_address.span(), threshold); let origin_merkle_tree_hook: u256 = 'origin_merkle_tree_hook'.try_into().unwrap(); let message_index: u32 = 1; let signed_index: u32 = 2; @@ -148,11 +141,6 @@ fn test_merkle_root_multisig_verify_with_4_valid_signatures() { let metadata = build_merkle_metadata( origin_merkle_tree_hook, message_index, signed_index, signed_message_id ); - let ownable = IOwnableDispatcher { - contract_address: merkleroot_validator_configuration.contract_address - }; - start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); - merkleroot_validator_configuration.set_threshold(4); assert(merkleroot_ism.verify(metadata, message) == true, 'verification failed'); } @@ -160,6 +148,7 @@ fn test_merkle_root_multisig_verify_with_4_valid_signatures() { #[test] #[should_panic(expected: ('No match for given signature',))] fn test_merkle_root_multisig_verify_with_insufficient_valid_signatures() { + let threshold = 4; let array = array![ 0x01020304050607080910111213141516, 0x01020304050607080910111213141516, @@ -176,9 +165,7 @@ fn test_merkle_root_multisig_verify_with_insufficient_valid_signatures() { body: message_body.clone() }; let (_, validators_address, _) = get_merkle_message_and_signature(); - let (merkleroot_ism, merkleroot_validator_config) = setup_merkleroot_multisig_ism( - validators_address.span() - ); + let (merkleroot_ism, _) = setup_merkleroot_multisig_ism(validators_address.span(), threshold); let origin_merkle_tree_hook: u256 = 'origin_merkle_tree_hook'.try_into().unwrap(); let message_index: u32 = 1; let signed_index: u32 = 2; @@ -187,9 +174,6 @@ fn test_merkle_root_multisig_verify_with_insufficient_valid_signatures() { origin_merkle_tree_hook, message_index, signed_index, signed_message_id ); metadata.update_at(1100, 0); - let ownable = IOwnableDispatcher { contract_address: merkleroot_ism.contract_address }; - start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); - merkleroot_validator_config.set_threshold(4); assert(merkleroot_ism.verify(metadata, message) == true, 'verification failed'); } @@ -197,6 +181,7 @@ fn test_merkle_root_multisig_verify_with_insufficient_valid_signatures() { #[test] #[should_panic(expected: ('Empty metadata',))] fn test_merkle_root_multisig_verify_with_empty_metadata() { + let threshold = 4; let array = array![ 0x01020304050607080910111213141516, 0x01020304050607080910111213141516, @@ -213,12 +198,7 @@ fn test_merkle_root_multisig_verify_with_empty_metadata() { body: message_body.clone() }; let (_, validators_address, _) = get_merkle_message_and_signature(); - let (merkle_root_ism, merkleroot_validator_config) = setup_merkleroot_multisig_ism( - validators_address.span() - ); - let ownable = IOwnableDispatcher { contract_address: merkle_root_ism.contract_address }; - start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); - merkleroot_validator_config.set_threshold(4); + let (merkle_root_ism, _) = setup_merkleroot_multisig_ism(validators_address.span(), threshold); let bytes_metadata = BytesTrait::new_empty(); assert(merkle_root_ism.verify(bytes_metadata, message) == true, 'verification failed'); } @@ -227,6 +207,8 @@ fn test_merkle_root_multisig_verify_with_empty_metadata() { #[test] #[should_panic(expected: ('No match for given signature',))] fn test_merkle_root_multisig_verify_with_4_valid_signatures_fails_if_duplicate_signatures() { + let threshold = 4; + let array = array![ 0x01020304050607080910111213141516, 0x01020304050607080910111213141516, @@ -243,9 +225,7 @@ fn test_merkle_root_multisig_verify_with_4_valid_signatures_fails_if_duplicate_s body: message_body.clone() }; let (_, validators_address, _) = get_merkle_message_and_signature(); - let (merkleroot_ism, merkleroot_validator_configuration) = setup_merkleroot_multisig_ism( - validators_address.span() - ); + let (merkleroot_ism, _) = setup_merkleroot_multisig_ism(validators_address.span(), threshold); let origin_merkle_tree_hook: u256 = 'origin_merkle_tree_hook'.try_into().unwrap(); let message_index: u32 = 1; let signed_index: u32 = 2; @@ -253,10 +233,5 @@ fn test_merkle_root_multisig_verify_with_4_valid_signatures_fails_if_duplicate_s let metadata = build_fake_merkle_metadata( origin_merkle_tree_hook, message_index, signed_index, signed_message_id ); - let ownable = IOwnableDispatcher { - contract_address: merkleroot_validator_configuration.contract_address - }; - start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); - merkleroot_validator_configuration.set_threshold(4); assert(merkleroot_ism.verify(metadata, message) == true, 'verification failed'); } diff --git a/contracts/src/tests/isms/test_messageid_multisig.cairo b/contracts/src/tests/isms/test_messageid_multisig.cairo index 7760f67..eac2e90 100644 --- a/contracts/src/tests/isms/test_messageid_multisig.cairo +++ b/contracts/src/tests/isms/test_messageid_multisig.cairo @@ -25,10 +25,11 @@ use snforge_std::{start_prank, CheatTarget}; #[test] fn test_set_validators() { + let threshold = 2; let new_validators: Array = array![ VALIDATOR_ADDRESS_1().into(), VALIDATOR_ADDRESS_2().into() ]; - let (_, validators) = setup_messageid_multisig_ism(new_validators.span()); + let (_, validators) = setup_messageid_multisig_ism(new_validators.span(), threshold); let ownable = IOwnableDispatcher { contract_address: validators.contract_address }; start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); let validators_span = validators.get_validators(); @@ -38,30 +39,18 @@ fn test_set_validators() { #[test] fn test_set_threshold() { - let new_threshold = 3; - let (_, validators) = setup_messageid_multisig_ism(array!['validator_1'].span()); - let ownable = IOwnableDispatcher { contract_address: validators.contract_address }; - start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); - validators.set_threshold(new_threshold); - assert(validators.get_threshold() == new_threshold, 'wrong validator threshold'); + let threshold = 3; + let (_, validators) = setup_messageid_multisig_ism(array!['validator_1'].span(), threshold); + assert(validators.get_threshold() == threshold, 'wrong validator threshold'); } #[test] #[should_panic] fn test_set_validators_fails_if_null_validator() { + let threshold = 2; let new_validators: Span = array![VALIDATOR_ADDRESS_1().try_into().unwrap(), 0].span(); - setup_messageid_multisig_ism(new_validators); -} - -#[test] -#[should_panic(expected: ('Caller is not the owner',))] -fn test_set_threshold_fails_if_caller_not_owner() { - let new_threshold = 3; - let (_, validators) = setup_messageid_multisig_ism(array!['validator_1'].span()); - let ownable = IOwnableDispatcher { contract_address: validators.contract_address }; - start_prank(CheatTarget::One(ownable.contract_address), NEW_OWNER().try_into().unwrap()); - validators.set_threshold(new_threshold); + setup_messageid_multisig_ism(new_validators, threshold); } @@ -97,7 +86,8 @@ fn test_message_id_ism_metadata() { #[test] fn test_message_id_multisig_module_type() { - let (messageid, _) = setup_messageid_multisig_ism(array!['validator_1'].span()); + let threshold = 4; + let (messageid, _) = setup_messageid_multisig_ism(array!['validator_1'].span(), threshold); assert( messageid.module_type() == ModuleType::MESSAGE_ID_MULTISIG(messageid.contract_address), 'Wrong module type' @@ -107,6 +97,7 @@ fn test_message_id_multisig_module_type() { #[test] fn test_message_id_multisig_verify_with_4_valid_signatures() { + let threshold = 4; let array = array![ 0x01020304050607080910111213141516, 0x01020304050607080910111213141516, @@ -123,18 +114,11 @@ fn test_message_id_multisig_verify_with_4_valid_signatures() { body: message_body.clone() }; let (_, validators_address, _) = get_message_and_signature(); - let (messageid, messageid_validator_configuration) = setup_messageid_multisig_ism( - validators_address.span() - ); + let (messageid, _) = setup_messageid_multisig_ism(validators_address.span(), threshold); let origin_merkle_tree: u256 = 'origin_merkle_tree_hook'.try_into().unwrap(); let root: u256 = 'root'.try_into().unwrap(); let index = 1; let metadata = build_messageid_metadata(origin_merkle_tree, root, index); - let ownable = IOwnableDispatcher { - contract_address: messageid_validator_configuration.contract_address - }; - start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); - messageid_validator_configuration.set_threshold(4); assert(messageid.verify(metadata, message) == true, 'verification failed'); } @@ -142,6 +126,7 @@ fn test_message_id_multisig_verify_with_4_valid_signatures() { #[test] #[should_panic(expected: ('No match for given signature',))] fn test_message_id_multisig_verify_with_insufficient_valid_signatures() { + let threshold = 4; let array = array![ 0x01020304050607080910111213141516, 0x01020304050607080910111213141516, @@ -158,18 +143,13 @@ fn test_message_id_multisig_verify_with_insufficient_valid_signatures() { body: message_body.clone() }; let (_, validators_address, _) = get_message_and_signature(); - let (messageid, messageid_validator_config) = setup_messageid_multisig_ism( - validators_address.span() - ); + let (messageid, _) = setup_messageid_multisig_ism(validators_address.span(), threshold); let origin_merkle_tree: u256 = 'origin_merkle_tree_hook'.try_into().unwrap(); let root: u256 = 'root'.try_into().unwrap(); let index = 1; let mut metadata = build_messageid_metadata(origin_merkle_tree, root, index); // introduce an error for the signature metadata.update_at(80, 0); - let ownable = IOwnableDispatcher { contract_address: messageid.contract_address }; - start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); - messageid_validator_config.set_threshold(4); assert(messageid.verify(metadata, message) == true, 'verification failed'); } @@ -177,6 +157,7 @@ fn test_message_id_multisig_verify_with_insufficient_valid_signatures() { #[test] #[should_panic(expected: ('Empty metadata',))] fn test_message_id_multisig_verify_with_empty_metadata() { + let threshold = 4; let array = array![ 0x01020304050607080910111213141516, 0x01020304050607080910111213141516, @@ -193,12 +174,7 @@ fn test_message_id_multisig_verify_with_empty_metadata() { body: message_body.clone() }; let (_, validators_address, _) = get_message_and_signature(); - let (messageid, messageid_validator_config) = setup_messageid_multisig_ism( - validators_address.span() - ); - let ownable = IOwnableDispatcher { contract_address: messageid.contract_address }; - start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); - messageid_validator_config.set_threshold(4); + let (messageid, _) = setup_messageid_multisig_ism(validators_address.span(), threshold); let bytes_metadata = BytesTrait::new_empty(); assert(messageid.verify(bytes_metadata, message) == true, 'verification failed'); } @@ -207,6 +183,7 @@ fn test_message_id_multisig_verify_with_empty_metadata() { #[test] #[should_panic(expected: ('No match for given signature',))] fn test_message_id_multisig_verify_with_4_valid_signatures_fails_if_duplicate_signatures() { + let threshold = 4; let array = array![ 0x01020304050607080910111213141516, 0x01020304050607080910111213141516, @@ -223,17 +200,10 @@ fn test_message_id_multisig_verify_with_4_valid_signatures_fails_if_duplicate_si body: message_body.clone() }; let (_, validators_address, _) = get_message_and_signature(); - let (messageid, messageid_validator_configuration) = setup_messageid_multisig_ism( - validators_address.span() - ); + let (messageid, _) = setup_messageid_multisig_ism(validators_address.span(), threshold); let origin_merkle_tree: u256 = 'origin_merkle_tree_hook'.try_into().unwrap(); let root: u256 = 'root'.try_into().unwrap(); let index = 1; let metadata = build_fake_messageid_metadata(origin_merkle_tree, root, index); - let ownable = IOwnableDispatcher { - contract_address: messageid_validator_configuration.contract_address - }; - start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); - messageid_validator_configuration.set_threshold(4); assert(messageid.verify(metadata, message) == true, 'verification failed'); } diff --git a/contracts/src/tests/routing/test_default_fallback_routing_ism.cairo b/contracts/src/tests/routing/test_default_fallback_routing_ism.cairo index 178e5cb..7f0756b 100644 --- a/contracts/src/tests/routing/test_default_fallback_routing_ism.cairo +++ b/contracts/src/tests/routing/test_default_fallback_routing_ism.cairo @@ -283,6 +283,7 @@ fn test_module_type() { // for this test, we will reuse existing tests #[test] fn test_verify() { + let threshold = 4; // ISM MESSAGE AND METADATA CONFIGURATION let array = array![ 0x01020304050607080910111213141516, @@ -300,21 +301,12 @@ fn test_verify() { body: message_body.clone() }; let (_, validators_address, _) = get_message_and_signature(); - let (messageid, messageid_validator_configuration) = setup_messageid_multisig_ism( - validators_address.span() - ); + let (messageid, _) = setup_messageid_multisig_ism(validators_address.span(), threshold); let origin_merkle_tree: u256 = 'origin_merkle_tree_hook'.try_into().unwrap(); let root: u256 = 'root'.try_into().unwrap(); let index = 1; let metadata = build_messageid_metadata(origin_merkle_tree, root, index); - // ISM CONFIGURATION - let ownable = IOwnableDispatcher { - contract_address: messageid_validator_configuration.contract_address - }; - start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); - messageid_validator_configuration.set_threshold(4); - // ROUTING TESTING let mut _domains = array![LOCAL_DOMAIN, 1123322, 312441]; let mut _modules: Array = array![ diff --git a/contracts/src/tests/routing/test_domain_routing_ism.cairo b/contracts/src/tests/routing/test_domain_routing_ism.cairo index c38073e..4b51c8b 100644 --- a/contracts/src/tests/routing/test_domain_routing_ism.cairo +++ b/contracts/src/tests/routing/test_domain_routing_ism.cairo @@ -283,6 +283,7 @@ fn test_module_type() { // for this test, we will reuse existing tests #[test] fn test_verify() { + let threshold = 4; // ISM MESSAGE AND METADATA CONFIGURATION let array = array![ 0x01020304050607080910111213141516, @@ -300,21 +301,12 @@ fn test_verify() { body: message_body.clone() }; let (_, validators_address, _) = get_message_and_signature(); - let (messageid, messageid_validator_configuration) = setup_messageid_multisig_ism( - validators_address.span() - ); + let (messageid, _) = setup_messageid_multisig_ism(validators_address.span(), threshold); let origin_merkle_tree: u256 = 'origin_merkle_tree_hook'.try_into().unwrap(); let root: u256 = 'root'.try_into().unwrap(); let index = 1; let metadata = build_messageid_metadata(origin_merkle_tree, root, index); - // ISM CONFIGURATION - let ownable = IOwnableDispatcher { - contract_address: messageid_validator_configuration.contract_address - }; - start_prank(CheatTarget::One(ownable.contract_address), OWNER().try_into().unwrap()); - messageid_validator_configuration.set_threshold(4); - // ROUTING TESTING let mut _domains = array![LOCAL_DOMAIN, 1123322, 312441]; let mut _modules: Array = array![ diff --git a/contracts/src/tests/setup.cairo b/contracts/src/tests/setup.cairo index feeaf1d..b1bccc5 100644 --- a/contracts/src/tests/setup.cairo +++ b/contracts/src/tests/setup.cairo @@ -203,13 +203,14 @@ pub fn setup_mock_ism() -> IInterchainSecurityModuleDispatcher { IInterchainSecurityModuleDispatcher { contract_address: mock_ism_addr } } pub fn setup_messageid_multisig_ism( - validators: Span + validators: Span, threshold: u32 ) -> (IInterchainSecurityModuleDispatcher, IValidatorConfigurationDispatcher) { let messageid_multisig_class = declare("messageid_multisig_ism").unwrap(); let mut parameters = Default::default(); let owner: felt252 = OWNER().try_into().unwrap(); Serde::serialize(@owner, ref parameters); Serde::serialize(@validators, ref parameters); + Serde::serialize(@threshold, ref parameters); let (messageid_multisig_addr, _) = messageid_multisig_class.deploy(@parameters).unwrap(); ( IInterchainSecurityModuleDispatcher { contract_address: messageid_multisig_addr }, @@ -219,13 +220,14 @@ pub fn setup_messageid_multisig_ism( pub fn setup_merkleroot_multisig_ism( - validators: Span + validators: Span, threshold: u32 ) -> (IInterchainSecurityModuleDispatcher, IValidatorConfigurationDispatcher) { let merkleroot_multisig_class = declare("merkleroot_multisig_ism").unwrap(); let mut parameters = Default::default(); let owner: felt252 = OWNER().try_into().unwrap(); Serde::serialize(@owner, ref parameters); Serde::serialize(@validators, ref parameters); + Serde::serialize(@threshold, ref parameters); let (merkleroot_multisig_addr, _) = merkleroot_multisig_class.deploy(@parameters).unwrap(); ( IInterchainSecurityModuleDispatcher { contract_address: merkleroot_multisig_addr },