Skip to content

Commit

Permalink
Set init signers in jumpstart
Browse files Browse the repository at this point in the history
  • Loading branch information
JesseAbram committed Jul 31, 2024
1 parent 425c4dc commit 1b6c2f0
Show file tree
Hide file tree
Showing 16 changed files with 55 additions and 44 deletions.
2 changes: 0 additions & 2 deletions crates/shared/src/constants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,6 @@ lazy_static! {
pub static ref DEVICE_KEY_AUX_DATA_TYPE: Vec<u8> = vec![123, 34, 36, 115, 99, 104, 101, 109, 97, 34, 58, 34, 104, 116, 116, 112, 58, 47, 47, 106, 115, 111, 110, 45, 115, 99, 104, 101, 109, 97, 46, 111, 114, 103, 47, 100, 114, 97, 102, 116, 45, 48, 55, 47, 115, 99, 104, 101, 109, 97, 35, 34, 44, 34, 116, 105, 116, 108, 101, 34, 58, 34, 65, 117, 120, 68, 97, 116, 97, 34, 44, 34, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 34, 74, 83, 79, 78, 32, 114, 101, 112, 114, 101, 115, 101, 110, 116, 97, 116, 105, 111, 110, 32, 111, 102, 32, 116, 104, 101, 32, 97, 117, 120, 105, 108, 105, 97, 114, 121, 32, 100, 97, 116, 97, 34, 44, 34, 116, 121, 112, 101, 34, 58, 34, 111, 98, 106, 101, 99, 116, 34, 44, 34, 114, 101, 113, 117, 105, 114, 101, 100, 34, 58, 91, 34, 99, 111, 110, 116, 101, 120, 116, 34, 44, 34, 112, 117, 98, 108, 105, 99, 95, 107, 101, 121, 34, 44, 34, 112, 117, 98, 108, 105, 99, 95, 107, 101, 121, 95, 116, 121, 112, 101, 34, 44, 34, 115, 105, 103, 110, 97, 116, 117, 114, 101, 34, 93, 44, 34, 112, 114, 111, 112, 101, 114, 116, 105, 101, 115, 34, 58, 123, 34, 99, 111, 110, 116, 101, 120, 116, 34, 58, 123, 34, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 34, 84, 104, 101, 32, 99, 111, 110, 116, 101, 120, 116, 32, 102, 111, 114, 32, 116, 104, 101, 32, 115, 105, 103, 110, 97, 116, 117, 114, 101, 32, 111, 110, 108, 121, 32, 110, 101, 101, 100, 101, 100, 32, 105, 110, 32, 115, 114, 50, 53, 53, 49, 57, 32, 115, 105, 103, 110, 97, 116, 117, 114, 101, 32, 116, 121, 112, 101, 34, 44, 34, 116, 121, 112, 101, 34, 58, 34, 115, 116, 114, 105, 110, 103, 34, 125, 44, 34, 112, 117, 98, 108, 105, 99, 95, 107, 101, 121, 34, 58, 123, 34, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 34, 98, 97, 115, 101, 54, 52, 45, 101, 110, 99, 111, 100, 101, 100, 32, 112, 117, 98, 108, 105, 99, 32, 107, 101, 121, 34, 44, 34, 116, 121, 112, 101, 34, 58, 34, 115, 116, 114, 105, 110, 103, 34, 125, 44, 34, 112, 117, 98, 108, 105, 99, 95, 107, 101, 121, 95, 116, 121, 112, 101, 34, 58, 123, 34, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 34, 92, 34, 101, 99, 100, 115, 97, 92, 34, 44, 32, 92, 34, 101, 100, 50, 53, 53, 49, 57, 92, 34, 44, 32, 92, 34, 115, 114, 50, 53, 53, 49, 57, 92, 34, 34, 44, 34, 116, 121, 112, 101, 34, 58, 34, 115, 116, 114, 105, 110, 103, 34, 125, 44, 34, 115, 105, 103, 110, 97, 116, 117, 114, 101, 34, 58, 123, 34, 100, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 34, 98, 97, 115, 101, 54, 52, 45, 101, 110, 99, 111, 100, 101, 100, 32, 115, 105, 103, 110, 97, 116, 117, 114, 101, 34, 44, 34, 116, 121, 112, 101, 34, 58, 34, 115, 116, 114, 105, 110, 103, 34, 125, 125, 125];
}

pub const TOTAL_SIGNERSZE: usize = 2;

// min balance 10 decimal chain = 1
pub const MIN_BALANCE: u128 = 10_000_000_000;

Expand Down
2 changes: 1 addition & 1 deletion crates/threshold-signature-server/src/user/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ use entropy_kvdb::kv_manager::{
use entropy_programs_runtime::{Config as ProgramConfig, Runtime, SignatureRequest};
use entropy_protocol::{KeyParams, PartyId, SigningSessionInfo, ValidatorInfo};
use entropy_shared::{
HashingAlgorithm, OcwMessageDkg, X25519PublicKey, NETWORK_PARENT_KEY, TOTAL_SIGNERSZE,
HashingAlgorithm, OcwMessageDkg, X25519PublicKey, NETWORK_PARENT_KEY, TOTAL_SIGNERS,
};
use futures::{
channel::mpsc,
Expand Down
4 changes: 1 addition & 3 deletions crates/threshold-signature-server/src/validator/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,20 +62,17 @@ pub async fn new_reshare(
) -> Result<StatusCode, ValidatorErr> {
let data = OcwMessageReshare::decode(&mut encoded_data.as_ref())?;
// TODO: validate message came from chain (check reshare block # against current block number) see #941

let api = get_api(&app_state.configuration.endpoint).await?;
let rpc = get_rpc(&app_state.configuration.endpoint).await?;
validate_new_reshare(&api, &rpc, &data, &app_state.kv_store).await?;
let signers_query = entropy::storage().staking_extension().signers();
let signers = query_chain(&api, &rpc, signers_query, None)
.await?
.ok_or_else(|| ValidatorErr::ChainFetch("Error getting signers"))?;

let next_signers_query = entropy::storage().staking_extension().signers();
let next_signers = query_chain(&api, &rpc, next_signers_query, None)
.await?
.ok_or_else(|| ValidatorErr::ChainFetch("Error getting next signers"))?;

let validators_info = get_validators_info(&api, &rpc, next_signers)
.await
.map_err(|e| ValidatorErr::UserError(e.to_string()))?;
Expand Down Expand Up @@ -104,6 +101,7 @@ pub async fn new_reshare(
.any(|validator_info| validator_info.tss_account == *signer.account_id());

if !is_proper_signer {
dbg!("not proper");
return Ok(StatusCode::MISDIRECTED_REQUEST);
}
// get old key if have it
Expand Down
2 changes: 1 addition & 1 deletion crates/threshold-signature-server/src/validator/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ async fn setup_for_reshare(
let jump_start_request = entropy::tx().registry().jump_start_network();
let _result = submit_transaction(api, rpc, &signer, &jump_start_request, None).await.unwrap();

let validators_names = vec![ValidatorName::Alice, ValidatorName::Bob];
let validators_names = vec![ValidatorName::Alice, ValidatorName::Bob, ValidatorName::Charlie];
for validator_name in validators_names {
let mnemonic = development_mnemonic(&Some(validator_name));
let (tss_signer, _static_secret) =
Expand Down
2 changes: 1 addition & 1 deletion node/cli/src/chain_spec/dev.rs
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ pub fn development_genesis_config(
})
.collect::<Vec<_>>(),
proactive_refresh_data: (vec![], vec![]),
mock_signer_rotate: (false, vec![]),
mock_signer_rotate: (false, vec![], vec![]),
},
"elections": ElectionsConfig {
members: endowed_accounts
Expand Down
2 changes: 1 addition & 1 deletion node/cli/src/chain_spec/integration_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ pub fn integration_tests_genesis_config(
),
mock_signer_rotate: (true, initial_authorities.iter().map(|auth| {
auth.0.clone()
}).collect::<Vec<_>>()),
}).collect::<Vec<_>>(), vec![get_account_id_from_seed::<sr25519::Public>("Alice")],),
},
"elections": ElectionsConfig {
members: endowed_accounts
Expand Down
2 changes: 1 addition & 1 deletion node/cli/src/chain_spec/testnet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -414,7 +414,7 @@ pub fn testnet_genesis_config(
})
.collect::<Vec<_>>(),
proactive_refresh_data: (vec![], vec![]),
mock_signer_rotate: (false, vec![]),
mock_signer_rotate: (false, vec![], vec![]),
},
"elections": ElectionsConfig {
members: endowed_accounts
Expand Down
2 changes: 1 addition & 1 deletion pallets/propagation/src/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@ pub fn new_test_ext() -> sp_io::TestExternalities {
(2, (4, NULL_ARR, vec![11])),
],
proactive_refresh_data: (vec![], vec![]),
mock_signer_rotate: (false, vec![]),
mock_signer_rotate: (false, vec![], vec![]),
};

pallet_staking_extension.assimilate_storage(&mut t).unwrap();
Expand Down
16 changes: 8 additions & 8 deletions pallets/registry/src/benchmarking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.

//! Benchmarking setup for pallet-propgation
use entropy_shared::{TOTAL_SIGNERSZE, VERIFICATION_KEY_LENGTH};
use entropy_shared::{TOTAL_SIGNERS, VERIFICATION_KEY_LENGTH};
use frame_benchmarking::{account, benchmarks, impl_benchmark_test_suite, whitelisted_caller};
use frame_support::{
traits::{Currency, Get},
Expand Down Expand Up @@ -79,20 +79,20 @@ benchmarks! {
}

confirm_jump_start_done {
let c in 0 .. TOTAL_SIGNERSZE as u32;
let c in 0 .. TOTAL_SIGNERS as u32;
let sig_req_account: T::AccountId = whitelisted_caller();
let validator_account: T::AccountId = whitelisted_caller();
let expected_verifying_key = BoundedVec::default();

let mut accounts = vec![];
for i in 0..TOTAL_SIGNERSZE {
for i in 0..TOTAL_SIGNERS {
accounts.push(account::<T::AccountId>("ts_account", i as u32, SEED));
}

let validators = add_non_syncing_validators::<T>(TOTAL_SIGNERSZE as u32, 0);
let validators = add_non_syncing_validators::<T>(TOTAL_SIGNERS as u32, 0);
<Validators<T>>::set(validators.clone());

for i in 0..TOTAL_SIGNERSZE {
for i in 0..TOTAL_SIGNERS {
<ThresholdToStash<T>>::insert(accounts[i].clone(), &validators[i]);
}

Expand All @@ -111,15 +111,15 @@ benchmarks! {
}

confirm_jump_start_confirm {
let c in 0 .. TOTAL_SIGNERSZE as u32;
let c in 0 .. TOTAL_SIGNERS as u32;
let sig_req_account: T::AccountId = whitelisted_caller();
let validator_account: T::AccountId = whitelisted_caller();
let threshold_account: T::AccountId = whitelisted_caller();
let expected_verifying_key = BoundedVec::default();

// add validators and a registering user
for i in 0..TOTAL_SIGNERSZE {
let validators = add_non_syncing_validators::<T>(TOTAL_SIGNERSZE as u32, 0);
for i in 0..TOTAL_SIGNERS {
let validators = add_non_syncing_validators::<T>(TOTAL_SIGNERS as u32, 0);
<Validators<T>>::set(validators.clone());
<ThresholdToStash<T>>::insert(&threshold_account, &validators[i]);
}
Expand Down
8 changes: 4 additions & 4 deletions pallets/registry/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ pub mod weights;

#[frame_support::pallet]
pub mod pallet {
use entropy_shared::{NETWORK_PARENT_KEY, TOTAL_SIGNERSZE, VERIFICATION_KEY_LENGTH};
use entropy_shared::{NETWORK_PARENT_KEY, TOTAL_SIGNERS, VERIFICATION_KEY_LENGTH};
use frame_support::{
dispatch::{DispatchResultWithPostInfo, Pays},
pallet_prelude::*,
Expand Down Expand Up @@ -316,8 +316,8 @@ pub mod pallet {
/// Allows validators to signal a successful network jumpstart
#[pallet::call_index(1)]
#[pallet::weight({
<T as Config>::WeightInfo::confirm_jump_start_confirm(TOTAL_SIGNERSZE as u32)
.max(<T as Config>::WeightInfo::confirm_jump_start_done(TOTAL_SIGNERSZE as u32))
<T as Config>::WeightInfo::confirm_jump_start_confirm(TOTAL_SIGNERS as u32)
.max(<T as Config>::WeightInfo::confirm_jump_start_done(TOTAL_SIGNERS as u32))
})]
pub fn confirm_jump_start(
origin: OriginFor<T>,
Expand Down Expand Up @@ -357,7 +357,7 @@ pub mod pallet {
// ensure that registration was indeed successful.
//
// If it fails we'll need to allow another jumpstart.
if jump_start_info.confirmations.len() == (TOTAL_SIGNERSZE - 1) {
if jump_start_info.confirmations.len() == (TOTAL_SIGNERS as usize - 1) {
// registration finished, lock call
jump_start_info.confirmations.push(validator_stash);
let confirmations = jump_start_info.confirmations.len();
Expand Down
4 changes: 2 additions & 2 deletions pallets/registry/src/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -365,12 +365,12 @@ pub fn new_test_ext() -> sp_io::TestExternalities {
(7, (4, NULL_ARR, vec![50])),
],
proactive_refresh_data: (vec![], vec![]),
mock_signer_rotate: (false, vec![]),
mock_signer_rotate: (false, vec![], vec![]),
};

pallet_staking_extension.assimilate_storage(&mut t).unwrap();

let stakers = vec![1, 2];
let stakers = vec![1, 2, 5];
let keys: Vec<_> = stakers.iter().cloned().map(|i| (i, i, UintAuthorityId(i).into())).collect();

pallet_session::GenesisConfig::<Test> { keys }.assimilate_storage(&mut t).unwrap();
Expand Down
21 changes: 17 additions & 4 deletions pallets/registry/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,10 @@ fn it_tests_get_validators_info() {
ServerInfo { tss_account: 3, x25519_public_key: NULL_ARR, endpoint: vec![10] };
let server_info_2 =
ServerInfo { tss_account: 4, x25519_public_key: NULL_ARR, endpoint: vec![11] };
let server_info_3 =
ServerInfo { tss_account: 7, x25519_public_key: NULL_ARR, endpoint: vec![20] };

assert_eq!(result_1, vec![server_info_1, server_info_2]);
assert_eq!(result_1, vec![server_info_1, server_info_2, server_info_3]);
});
}

Expand Down Expand Up @@ -184,10 +186,15 @@ fn it_tests_jump_start_result() {
);

pallet_staking_extension::ThresholdToStash::<Test>::insert(2, 2);
pallet_staking_extension::ThresholdToStash::<Test>::insert(5, 5);
assert_ok!(Registry::confirm_jump_start(
RuntimeOrigin::signed(2),
expected_verifying_key.clone()
));
assert_ok!(Registry::confirm_jump_start(
RuntimeOrigin::signed(5),
expected_verifying_key.clone()
));
assert_eq!(
Registry::jump_start_progress(),
JumpStartDetails {
Expand All @@ -199,7 +206,7 @@ fn it_tests_jump_start_result() {
);
assert_eq!(
pallet_staking_extension::Signers::<Test>::get(),
vec![1, 2],
vec![1, 2, 5],
"Jumpstart sets inital signers"
);
});
Expand Down Expand Up @@ -263,7 +270,7 @@ fn it_confirms_registers_a_user() {
);

assert_noop!(
Registry::confirm_register(RuntimeOrigin::signed(7), 1, expected_verifying_key.clone()),
Registry::confirm_register(RuntimeOrigin::signed(8), 1, expected_verifying_key.clone()),
Error::<Test>::NotValidator
);

Expand All @@ -283,6 +290,12 @@ fn it_confirms_registers_a_user() {
expected_verifying_key.clone()
));

assert_ok!(Registry::confirm_register(
RuntimeOrigin::signed(7),
1,
expected_verifying_key.clone()
));

assert_eq!(Registry::registering(1), None);
assert_eq!(
Registry::registered(expected_verifying_key.clone()).unwrap(),
Expand Down Expand Up @@ -799,7 +812,7 @@ fn it_provides_free_txs_confirm_done_fails_4() {
});
let di = c.get_dispatch_info();
assert_eq!(di.pays_fee, Pays::No);
let r = p.validate(&7, &c, &di, 20);
let r = p.validate(&8, &c, &di, 20);
assert_eq!(r, TransactionValidity::Ok(ValidTransaction::default()));
});
}
8 changes: 4 additions & 4 deletions pallets/staking/src/benchmarking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

//! Benchmarking setup for pallet-propgation
#![allow(unused_imports)]
use entropy_shared::TOTAL_SIGNERSZE;
use entropy_shared::TOTAL_SIGNERS;
use frame_benchmarking::{account, benchmarks, impl_benchmark_test_suite, whitelisted_caller};
use frame_support::{
assert_ok, ensure,
Expand Down Expand Up @@ -178,10 +178,10 @@ benchmarks! {
}

confirm_key_reshare_confirmed {
let c in 0 .. TOTAL_SIGNERSZE as u32;
let c in 0 .. TOTAL_SIGNERS as u32;
// leave a space for two as not to rotate and only confirm rotation
let confirmation_num = c.checked_sub(2).unwrap_or(0);
let signer_num = TOTAL_SIGNERSZE - 1;
let signer_num = TOTAL_SIGNERS - 1;
let caller: T::AccountId = whitelisted_caller();
let validator_id_res = <T as pallet_session::Config>::ValidatorId::try_from(caller.clone()).or(Err(Error::<T>::InvalidValidatorId)).unwrap();
let second_signer: T::AccountId = account("second_signer", 0, SEED);
Expand All @@ -205,7 +205,7 @@ benchmarks! {

confirm_key_reshare_completed {
// once less confirmation to always flip to rotate
let confirmation_num = TOTAL_SIGNERSZE - 1;
let confirmation_num = TOTAL_SIGNERS as usize - 1;

let caller: T::AccountId = whitelisted_caller();
let validator_id_res = <T as pallet_session::Config>::ValidatorId::try_from(caller.clone()).or(Err(Error::<T>::InvalidValidatorId)).unwrap();
Expand Down
15 changes: 8 additions & 7 deletions pallets/staking/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ use sp_staking::SessionIndex;
#[frame_support::pallet]
pub mod pallet {
use entropy_shared::{
ValidatorInfo, X25519PublicKey, TOTAL_SIGNERSZE, TEST_RESHARE_BLOCK_NUMBER,
ValidatorInfo, X25519PublicKey, TEST_RESHARE_BLOCK_NUMBER, TOTAL_SIGNERS,
};
use frame_support::{
dispatch::{DispatchResult, DispatchResultWithPostInfo},
Expand Down Expand Up @@ -202,7 +202,7 @@ pub mod pallet {
/// validator info and accounts to take part in proactive refresh
pub proactive_refresh_data: (Vec<ValidatorInfo>, Vec<Vec<u8>>),
/// validator info and account to take part in a reshare
pub mock_signer_rotate: (bool, Vec<T::ValidatorId>),
pub mock_signer_rotate: (bool, Vec<T::ValidatorId>, Vec<T::ValidatorId>),
}

#[pallet::genesis_build]
Expand Down Expand Up @@ -233,6 +233,10 @@ pub mod pallet {
ProactiveRefresh::<T>::put(refresh_info);
// mocks a signer rotation for tss new_reshare tests
if self.mock_signer_rotate.0 {
self.mock_signer_rotate
.clone()
.1
.push(self.mock_signer_rotate.clone().2[0].clone());
NextSigners::<T>::put(NextSignerInfo {
next_signers: self.mock_signer_rotate.clone().1,
confirmations: vec![],
Expand All @@ -242,10 +246,7 @@ pub mod pallet {
// To give enough time for test_reshare setup
block_number: TEST_RESHARE_BLOCK_NUMBER.into(),
// Alice signer public key
new_signer: vec![
212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214,
130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125,
],
new_signer: self.mock_signer_rotate.clone().2[0].encode(),
})
}
}
Expand Down Expand Up @@ -439,7 +440,7 @@ pub mod pallet {

#[pallet::call_index(5)]
#[pallet::weight(({
<T as Config>::WeightInfo::confirm_key_reshare_confirmed(TOTAL_SIGNERSZE as u32)
<T as Config>::WeightInfo::confirm_key_reshare_confirmed(TOTAL_SIGNERS as u32)
.max(<T as Config>::WeightInfo::confirm_key_reshare_completed())
}, DispatchClass::Operational))]
pub fn confirm_key_reshare(origin: OriginFor<T>) -> DispatchResultWithPostInfo {
Expand Down
3 changes: 1 addition & 2 deletions pallets/staking/src/mock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -395,9 +395,8 @@ pub fn new_test_ext() -> sp_io::TestExternalities {
// (ValidatorID, (AccountId, X25519PublicKey, TssServerURL))
threshold_servers: vec![(5, (7, NULL_ARR, vec![20])), (6, (8, NULL_ARR, vec![40]))],
proactive_refresh_data: (vec![], vec![]),
mock_signer_rotate: (false, vec![]),
mock_signer_rotate: (false, vec![], vec![]),
};

pallet_balances.assimilate_storage(&mut t).unwrap();
pallet_staking_extension.assimilate_storage(&mut t).unwrap();

Expand Down
6 changes: 4 additions & 2 deletions pallets/staking/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

use crate::{
mock::*, tests::RuntimeEvent, Error, IsValidatorSynced, NextSignerInfo, NextSigners,
ServerInfo, ThresholdToStash,
ServerInfo, Signers, ThresholdToStash,
};
use codec::Encode;
use frame_support::{assert_noop, assert_ok};
Expand Down Expand Up @@ -241,6 +241,7 @@ fn it_will_not_allow_existing_tss_account_when_changing_threshold_account() {
#[test]
fn it_deletes_when_no_bond_left() {
new_test_ext().execute_with(|| {
Signers::<Test>::put(vec![5, 6]);
start_active_era(1);
assert_ok!(FrameStaking::bond(
RuntimeOrigin::signed(2),
Expand Down Expand Up @@ -331,7 +332,7 @@ fn it_declares_synced() {
fn it_tests_new_session_handler() {
new_test_ext().execute_with(|| {
// Start with current validators as 5 and 6 based off the Mock `GenesisConfig`.

Signers::<Test>::put(vec![5, 6]);
// no next signers at start
assert_eq!(Staking::next_signers(), None);
assert_eq!(Staking::reshare_data().block_number, 0, "Check reshare block start at zero");
Expand Down Expand Up @@ -376,6 +377,7 @@ fn it_tests_new_session_handler() {
#[test]
fn it_confirms_keyshare() {
new_test_ext().execute_with(|| {
Signers::<Test>::put(vec![5, 6]);
assert_noop!(
Staking::confirm_key_reshare(RuntimeOrigin::signed(10)),
Error::<Test>::NoThresholdKey
Expand Down

0 comments on commit 1b6c2f0

Please sign in to comment.