From 7eaec26a1cc7c836dc191a10ef4c1728f313ec58 Mon Sep 17 00:00:00 2001 From: Enrique Fynn Date: Mon, 14 Mar 2022 22:10:31 +0100 Subject: [PATCH] Add space for keys in calculation for rent exempt in `process_set_validator_info` (#23485) * Fix `process_set_validator_info` Add space for keys in calculation for rent exempt in `process_set_validator_info`. The space required for allocating the `(ConfigKeys, ValidatorInfo)` tuple only considered space for `ValidatorInfo`. But `config_instruction::create_account` also requires space for `n` keys. * Remove one clone call from closure --- cli/src/validator_info.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/cli/src/validator_info.rs b/cli/src/validator_info.rs index 79fb640be..64c5a6bb0 100644 --- a/cli/src/validator_info.rs +++ b/cli/src/validator_info.rs @@ -291,8 +291,12 @@ pub fn process_set_validator_info( // Check existence of validator-info account let balance = rpc_client.get_balance(&info_pubkey).unwrap_or(0); - let lamports = - rpc_client.get_minimum_balance_for_rent_exemption(ValidatorInfo::max_space() as usize)?; + let keys = vec![ + (validator_info::id(), false), + (config.signers[0].pubkey(), true), + ]; + let data_len = ValidatorInfo::max_space() + ConfigKeys::serialized_size(keys.clone()); + let lamports = rpc_client.get_minimum_balance_for_rent_exemption(data_len as usize)?; let signers = if balance == 0 { if info_pubkey != info_keypair.pubkey() { @@ -308,10 +312,7 @@ pub fn process_set_validator_info( }; let build_message = |lamports| { - let keys = vec![ - (validator_info::id(), false), - (config.signers[0].pubkey(), true), - ]; + let keys = keys.clone(); if balance == 0 { println!( "Publishing info for Validator {:?}",