Skip to content

Commit

Permalink
Refactor continued
Browse files Browse the repository at this point in the history
  • Loading branch information
staffik committed May 24, 2024
1 parent ed32d67 commit b9e1b1c
Show file tree
Hide file tree
Showing 54 changed files with 361 additions and 289 deletions.
45 changes: 26 additions & 19 deletions chain/chain/src/runtime/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -434,13 +434,15 @@ fn test_validator_rotation() {
let block_producers: Vec<_> =
validators.iter().map(|id| create_test_signer(id.as_str())).collect();
let signer =
InMemorySigner::from_seed(validators[0].clone(), KeyType::ED25519, validators[0].as_ref());
InMemorySigner::from_seed(validators[0].clone(), KeyType::ED25519, validators[0].as_ref())
.into();
// test1 doubles stake and the new account stakes the same, so test2 will be kicked out.`
let staking_transaction = stake(1, &signer, &block_producers[0], TESTING_INIT_STAKE * 2);
let new_account = AccountId::try_from(format!("test{}", num_nodes + 1)).unwrap();
let new_validator = create_test_signer(new_account.as_str());
let new_signer =
InMemorySigner::from_seed(new_account.clone(), KeyType::ED25519, new_account.as_ref());
let new_signer: Signer =
InMemorySigner::from_seed(new_account.clone(), KeyType::ED25519, new_account.as_ref())
.into();
let create_account_transaction = SignedTransaction::create_account(
2,
block_producers[0].validator_id().clone(),
Expand All @@ -458,7 +460,8 @@ fn test_validator_rotation() {
validators[1].clone(),
KeyType::ED25519,
validators[1].as_ref(),
);
)
.into();
vec![
staking_transaction,
create_account_transaction,
Expand Down Expand Up @@ -520,7 +523,8 @@ fn test_validator_stake_change() {
let block_producers: Vec<_> =
validators.iter().map(|id| create_test_signer(id.as_str())).collect();
let signer =
InMemorySigner::from_seed(validators[0].clone(), KeyType::ED25519, validators[0].as_ref());
InMemorySigner::from_seed(validators[0].clone(), KeyType::ED25519, validators[0].as_ref())
.into();

let desired_stake = 2 * TESTING_INIT_STAKE / 3;
let staking_transaction = stake(1, &signer, &block_producers[0], desired_stake);
Expand Down Expand Up @@ -557,7 +561,7 @@ fn test_validator_stake_change_multiple_times() {
validators.iter().map(|id| create_test_signer(id.as_str())).collect();
let signers: Vec<_> = validators
.iter()
.map(|id| InMemorySigner::from_seed(id.clone(), KeyType::ED25519, id.as_ref()))
.map(|id| InMemorySigner::from_seed(id.clone(), KeyType::ED25519, id.as_ref()).into())
.collect();

let staking_transaction = stake(1, &signers[0], &block_producers[0], TESTING_INIT_STAKE - 1);
Expand Down Expand Up @@ -652,7 +656,7 @@ fn test_stake_in_last_block_of_an_epoch() {
validators.iter().map(|id| create_test_signer(id.as_str())).collect();
let signers: Vec<_> = validators
.iter()
.map(|id| InMemorySigner::from_seed(id.clone(), KeyType::ED25519, id.as_ref()))
.map(|id| InMemorySigner::from_seed(id.clone(), KeyType::ED25519, id.as_ref()).into())
.collect();
let staking_transaction =
stake(1, &signers[0], &block_producers[0], TESTING_INIT_STAKE + TESTING_INIT_STAKE / 6);
Expand Down Expand Up @@ -713,7 +717,8 @@ fn test_state_sync() {
let block_producers: Vec<_> =
validators.iter().map(|id| create_test_signer(id.as_str())).collect();
let signer =
InMemorySigner::from_seed(validators[0].clone(), KeyType::ED25519, validators[0].as_ref());
InMemorySigner::from_seed(validators[0].clone(), KeyType::ED25519, validators[0].as_ref())
.into();
let staking_transaction = stake(1, &signer, &block_producers[0], TESTING_INIT_STAKE + 1);
env.step_default(vec![staking_transaction]);
env.step_default(vec![]);
Expand Down Expand Up @@ -802,7 +807,8 @@ fn test_get_validator_info() {
let block_producers: Vec<_> =
validators.iter().map(|id| create_test_signer(id.as_str())).collect();
let signer =
InMemorySigner::from_seed(validators[0].clone(), KeyType::ED25519, validators[0].as_ref());
InMemorySigner::from_seed(validators[0].clone(), KeyType::ED25519, validators[0].as_ref())
.into();
let staking_transaction = stake(1, &signer, &block_producers[0], 0);
let mut expected_blocks = [0, 0];
let mut expected_chunks = [0, 0];
Expand Down Expand Up @@ -1043,7 +1049,8 @@ fn test_double_sign_challenge_not_all_slashed() {
validators.iter().map(|id| create_test_signer(id.as_str())).collect();

let signer =
InMemorySigner::from_seed(validators[2].clone(), KeyType::ED25519, validators[2].as_ref());
InMemorySigner::from_seed(validators[2].clone(), KeyType::ED25519, validators[2].as_ref())
.into();
let staking_transaction = stake(1, &signer, &block_producers[2], TESTING_INIT_STAKE / 3);
env.step(
vec![vec![staking_transaction]],
Expand Down Expand Up @@ -1219,7 +1226,7 @@ fn test_fishermen_stake() {
validators.iter().map(|id| create_test_signer(id.as_str())).collect();
let signers: Vec<_> = validators
.iter()
.map(|id| InMemorySigner::from_seed(id.clone(), KeyType::ED25519, id.as_ref()))
.map(|id| InMemorySigner::from_seed(id.clone(), KeyType::ED25519, id.as_ref()).into())
.collect();
let fishermen_stake = 3300 * NEAR_BASE + 1;

Expand Down Expand Up @@ -1286,7 +1293,7 @@ fn test_fishermen_unstake() {
validators.iter().map(|id| create_test_signer(id.as_str())).collect();
let signers: Vec<_> = validators
.iter()
.map(|id| InMemorySigner::from_seed(id.clone(), KeyType::ED25519, id.as_ref()))
.map(|id| InMemorySigner::from_seed(id.clone(), KeyType::ED25519, id.as_ref()).into())
.collect();
let fishermen_stake = 3300 * NEAR_BASE + 1;

Expand Down Expand Up @@ -1363,15 +1370,15 @@ fn test_delete_account_after_unstake() {
.map(|id| InMemorySigner::from_seed(id.clone(), KeyType::ED25519, id.as_ref()))
.collect();

let staking_transaction1 = stake(1, &signers[1], &block_producers[1], 0);
let staking_transaction1 = stake(1, &signers[1].clone().into(), &block_producers[1], 0);
env.step_default(vec![staking_transaction1]);
let account = env.view_account(block_producers[1].validator_id());
assert_eq!(account.amount, TESTING_INIT_BALANCE - TESTING_INIT_STAKE);
assert_eq!(account.locked, TESTING_INIT_STAKE);
for _ in 2..=5 {
env.step_default(vec![]);
}
let staking_transaction2 = stake(2, &signers[1], &block_producers[1], 1);
let staking_transaction2 = stake(2, &signers[1].clone().into(), &block_producers[1], 1);
env.step_default(vec![staking_transaction2]);
for _ in 7..=13 {
env.step_default(vec![]);
Expand All @@ -1383,7 +1390,7 @@ fn test_delete_account_after_unstake() {
4,
signers[1].account_id.clone(),
signers[1].account_id.clone(),
&signers[1] as &Signer,
&signers[1].clone().into(),
vec![Action::DeleteAccount(DeleteAccountAction {
beneficiary_id: signers[0].account_id.clone(),
})],
Expand All @@ -1407,7 +1414,7 @@ fn test_proposal_deduped() {
validators.iter().map(|id| create_test_signer(id.as_str())).collect();
let signers: Vec<_> = validators
.iter()
.map(|id| InMemorySigner::from_seed(id.clone(), KeyType::ED25519, id.as_ref()))
.map(|id| InMemorySigner::from_seed(id.clone(), KeyType::ED25519, id.as_ref()).into())
.collect();

let staking_transaction1 = stake(1, &signers[1], &block_producers[1], TESTING_INIT_STAKE - 100);
Expand All @@ -1428,7 +1435,7 @@ fn test_insufficient_stake() {
validators.iter().map(|id| create_test_signer(id.as_str())).collect();
let signers: Vec<_> = validators
.iter()
.map(|id| InMemorySigner::from_seed(id.clone(), KeyType::ED25519, id.as_ref()))
.map(|id| InMemorySigner::from_seed(id.clone(), KeyType::ED25519, id.as_ref()).into())
.collect();

let staking_transaction1 = stake(1, &signers[1], &block_producers[1], 100);
Expand Down Expand Up @@ -1476,7 +1483,7 @@ fn test_trie_and_flat_state_equality() {
4,
signers[0].account_id.clone(),
validators[1].clone(),
&signers[0] as &Signer,
&signers[0].clone().into(),
vec![Action::Transfer(TransferAction { deposit: 10 })],
// runtime does not validate block history
CryptoHash::default(),
Expand Down Expand Up @@ -1563,7 +1570,7 @@ fn generate_transaction_pool(
round.try_into().unwrap(),
signers[i].account_id.clone(),
signers[(i + round) % signer_count].account_id.clone(),
&signers[i] as &Signer,
&signers[i].clone().into(),
round.try_into().unwrap(),
block_hash,
);
Expand Down
4 changes: 2 additions & 2 deletions chain/chain/src/tests/garbage_collection.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ use near_primitives::merkle::PartialMerkleTree;
use near_primitives::shard_layout::ShardUId;
use near_primitives::test_utils::{create_test_signer, TestBlockBuilder};
use near_primitives::types::{BlockHeight, NumBlocks, StateRoot};
use near_primitives::validator_signer::InMemoryValidatorSigner;
use near_primitives::validator_signer::ValidatorSigner;
use near_store::test_utils::gen_changes;
use near_store::{DBCol, ShardTries, Trie, WrappedTrieChanges};

Expand Down Expand Up @@ -730,7 +730,7 @@ fn add_block(
epoch_manager: &dyn EpochManagerAdapter,
prev_block: &mut Block,
blocks: &mut Vec<Block>,
signer: Arc<InMemoryValidatorSigner>,
signer: Arc<ValidatorSigner>,
height: u64,
) {
let next_epoch_id = epoch_manager
Expand Down
2 changes: 1 addition & 1 deletion chain/chain/src/validate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@ mod tests {
nonce,
account_id,
"bob".parse().unwrap(),
&signer,
&signer.into(),
10,
CryptoHash::default(),
)
Expand Down
2 changes: 1 addition & 1 deletion chain/chunks/src/chunk_cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -296,7 +296,7 @@ mod tests {
CryptoHash::default(),
CryptoHash::default(),
vec![],
&signer,
&signer.into(),
))
}

Expand Down
2 changes: 1 addition & 1 deletion chain/chunks/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ mod tests {
nonce,
signer_id.clone(),
receiver_id.clone(),
&signer,
&signer.into(),
deposit,
CryptoHash::default(),
);
Expand Down
2 changes: 1 addition & 1 deletion chain/client/src/chunk_distribution_network.rs
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ mod tests {
hash(&[height.to_le_bytes().as_slice(), shard_id.to_le_bytes().as_slice()].concat());
let mut mock_hashes = MockHashes::new(prev_block_hash);

let signer = ValidatorSigner::EmptyValidatorSigner(EmptyValidatorSigner::default());
let signer = EmptyValidatorSigner::default().into();
let header_inner = ShardChunkHeaderInner::V3(ShardChunkHeaderInnerV3 {
prev_block_hash,
prev_state_root: mock_hashes.next().unwrap(),
Expand Down
21 changes: 11 additions & 10 deletions chain/client/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@ use near_chain::{
BlockProcessingArtifact, BlockStatus, Chain, ChainGenesis, ChainStoreAccess, Doomslug,
DoomslugThresholdMode, Provenance,
};
use near_chain_configs::{ClientConfig, LogSummaryStyle, MutableConfigValue, UpdateableClientConfig};
use near_chain_configs::{
ClientConfig, LogSummaryStyle, MutableConfigValue, UpdateableClientConfig,
};
use near_chunks::adapter::ShardsManagerRequestFromClient;
use near_chunks::client::ShardedTransactionPool;
use near_chunks::logic::{
Expand Down Expand Up @@ -619,10 +621,9 @@ impl Client {
height: BlockHeight,
prev_hash: CryptoHash,
) -> Result<Option<Block>, Error> {
let validator_signer = self
.validator_signer
.get()
.ok_or_else(|| Error::BlockProducer("Called without block producer info.".to_string()))?;
let validator_signer = self.validator_signer.get().ok_or_else(|| {
Error::BlockProducer("Called without block producer info.".to_string())
})?;

// Check that we are were called at the block that we are producer for.
let epoch_id = self.epoch_manager.get_epoch_id_from_prev_block(&prev_hash).unwrap();
Expand Down Expand Up @@ -863,10 +864,9 @@ impl Client {

let prev_block_hash = *prev_block.hash();

let validator_signer = self
.validator_signer
.get()
.ok_or_else(|| Error::ChunkProducer("Called without block producer info.".to_string()))?;
let validator_signer = self.validator_signer.get().ok_or_else(|| {
Error::ChunkProducer("Called without block producer info.".to_string())
})?;

let chunk_proposer =
self.epoch_manager.get_chunk_producer(epoch_id, next_height, shard_id).unwrap();
Expand Down Expand Up @@ -2078,7 +2078,8 @@ impl Client {
Err(_) => false,
Ok(target_block_producer) => {
let validator_signer = self.validator_signer.get();
Some(&target_block_producer) == validator_signer.as_ref().map(|x| x.validator_id())
Some(&target_block_producer)
== validator_signer.as_ref().map(|x| x.validator_id())
}
};

Expand Down
13 changes: 6 additions & 7 deletions chain/client/src/client_actor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ impl ClientActorInner {
info!(target: "client", "Starting validator node: {}", vs.validator_id());
}
let info_helper =
InfoHelper::new(clock.clone(), telemetry_sender, &config, validator_signer.clone());
InfoHelper::new(clock.clone(), telemetry_sender, &config, validator_signer);

let now = clock.now_utc();
Ok(ClientActorInner {
Expand Down Expand Up @@ -709,7 +709,8 @@ impl Handler<Status> for ClientActorInner {
.into_chain_error()?;

let node_public_key = self.node_id.public_key().clone();
let (validator_account_id, validator_public_key) = match &self.client.validator_signer.get() {
let (validator_account_id, validator_public_key) = match &self.client.validator_signer.get()
{
Some(vs) => (Some(vs.validator_id().clone()), Some(vs.public_key())),
None => (None, None),
};
Expand Down Expand Up @@ -1159,11 +1160,9 @@ impl ClientActorInner {
pub(crate) fn check_triggers(&mut self, ctx: &mut dyn DelayedActionRunner<Self>) -> Duration {
let _span = tracing::debug_span!(target: "client", "check_triggers").entered();
if let Some(config_updater) = &mut self.config_updater {
config_updater.try_update(
&|updateable_client_config| {
self.client.update_client_config(updateable_client_config)
},
);
config_updater.try_update(&|updateable_client_config| {
self.client.update_client_config(updateable_client_config)
});
}

// Check block height to trigger expected shutdown
Expand Down
5 changes: 1 addition & 4 deletions chain/client/src/config_updater.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,7 @@ impl ConfigUpdater {

/// Check if any of the configs were updated.
/// If they did, the receiver (rx_config_update) will contain a clone of the new configs.
pub fn try_update(
&mut self,
update_client_config_fn: &dyn Fn(UpdateableClientConfig),
) {
pub fn try_update(&mut self, update_client_config_fn: &dyn Fn(UpdateableClientConfig)) {
while let Ok(maybe_updateable_configs) = self.rx_config_update.try_recv() {
match maybe_updateable_configs {
Ok(updateable_configs) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ impl Client {
return Ok(());
}

let my_signer = self.validator_signer.get().ok_or(Error::NotAValidator)?.clone();
let my_signer = self.validator_signer.get().ok_or(Error::NotAValidator)?;
let state_witness = self.create_state_witness(
my_signer.validator_id().clone(),
prev_block_header,
Expand Down
6 changes: 3 additions & 3 deletions chain/client/src/test_utils/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ pub fn create_chunk(
let parity_parts = total_parts - data_parts;
let rs = ReedSolomon::new(data_parts, parity_parts).unwrap();

let signer = client.validator_signer.get().unwrap().clone();
let signer = client.validator_signer.get().unwrap();
let header = chunk.cloned_header();
let (mut encoded_chunk, mut new_merkle_paths) = EncodedShardChunk::new(
*header.prev_block_hash(),
Expand Down Expand Up @@ -228,7 +228,7 @@ pub fn create_chunk(
client.chain.chain_store().get_block_merkle_tree(last_block.hash()).unwrap();
let mut block_merkle_tree = PartialMerkleTree::clone(&block_merkle_tree);

let signer = client.validator_signer.get().unwrap().clone();
let signer = client.validator_signer.get().unwrap();
let endorsement = ChunkEndorsement::new(chunk.cloned_header().chunk_hash(), signer.as_ref());
block_merkle_tree.insert(*last_block.hash());
let block = Block::produce(
Expand All @@ -249,7 +249,7 @@ pub fn create_chunk(
None,
vec![],
vec![],
&*client.validator_signer.get().unwrap().clone(),
&*client.validator_signer.get().unwrap(),
*last_block.header().next_bp_hash(),
block_merkle_tree.root(),
client.clock.now_utc(),
Expand Down
Loading

0 comments on commit b9e1b1c

Please sign in to comment.