Fix solana-stake-accounts rebase/move (#9199)

automerge
This commit is contained in:
Greg Fitzgerald 2020-03-31 20:07:00 -06:00 committed by GitHub
parent 56667e17c9
commit 3a6cdf02e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 21 additions and 3 deletions

View File

@ -71,6 +71,14 @@ fn resolve_base_pubkey(
pubkey_from_path(&matches, key_url, "base pubkey", wallet_manager)
}
fn resolve_new_base_keypair(
wallet_manager: Option<&Arc<RemoteWalletManager>>,
key_url: &str,
) -> Result<Box<dyn Signer>, Box<dyn Error>> {
let matches = ArgMatches::default();
signer_from_path(&matches, key_url, "new base pubkey", wallet_manager)
}
fn get_balance_at(client: &RpcClient, pubkey: &Pubkey, i: usize) -> Result<u64, ClientError> {
let address = stake_accounts::derive_stake_account_address(pubkey, i);
client.get_balance(&address)
@ -183,6 +191,8 @@ fn process_rebase_stake_accounts(
) -> Result<(), Box<dyn Error>> {
let fee_payer_keypair = resolve_fee_payer(wallet_manager, &rebase_config.fee_payer)?;
let base_pubkey = resolve_base_pubkey(wallet_manager, &rebase_config.base_pubkey)?;
let new_base_keypair =
resolve_new_base_keypair(wallet_manager, &rebase_config.new_base_keypair)?;
let stake_authority_keypair =
resolve_stake_authority(wallet_manager, &rebase_config.stake_authority)?;
let addresses =
@ -191,11 +201,15 @@ fn process_rebase_stake_accounts(
let messages = stake_accounts::rebase_stake_accounts(
&fee_payer_keypair.pubkey(),
&base_pubkey,
&new_base_keypair.pubkey(),
&stake_authority_keypair.pubkey(),
&balances,
);
let signers = vec![&*fee_payer_keypair, &*stake_authority_keypair];
let signers = vec![
&*fee_payer_keypair,
&*new_base_keypair,
&*stake_authority_keypair,
];
for message in messages {
let signature = send_message(client, message, &signers)?;
println!("{}", signature);
@ -209,8 +223,11 @@ fn process_move_stake_accounts(
move_config: &MoveCommandConfig,
) -> Result<(), Box<dyn Error>> {
let authorize_config = &move_config.authorize_config;
let rebase_config = &move_config.rebase_config;
let fee_payer_keypair = resolve_fee_payer(wallet_manager, &authorize_config.fee_payer)?;
let base_pubkey = resolve_base_pubkey(wallet_manager, &authorize_config.base_pubkey)?;
let new_base_keypair =
resolve_new_base_keypair(wallet_manager, &rebase_config.new_base_keypair)?;
let stake_authority_keypair =
resolve_stake_authority(wallet_manager, &authorize_config.stake_authority)?;
let withdraw_authority_keypair =
@ -225,7 +242,7 @@ fn process_move_stake_accounts(
let messages = stake_accounts::move_stake_accounts(
&fee_payer_keypair.pubkey(),
&base_pubkey,
&new_base_keypair.pubkey(),
&stake_authority_keypair.pubkey(),
&withdraw_authority_keypair.pubkey(),
&new_stake_authority_pubkey,
@ -234,6 +251,7 @@ fn process_move_stake_accounts(
);
let signers = vec![
&*fee_payer_keypair,
&*new_base_keypair,
&*stake_authority_keypair,
&*withdraw_authority_keypair,
];