stake-pool-cli: Fix sol deposit for private pool (#2399)
* stake-pool-cli: Fix sol deposit for private pool * cargo fmt
This commit is contained in:
parent
b3684bbfe9
commit
864b7eff0b
|
@ -3800,7 +3800,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "spl-stake-pool-cli"
|
name = "spl-stake-pool-cli"
|
||||||
version = "0.5.0"
|
version = "0.5.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode",
|
"bincode",
|
||||||
"borsh",
|
"borsh",
|
||||||
|
|
|
@ -6,7 +6,7 @@ homepage = "https://spl.solana.com/stake-pool"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
name = "spl-stake-pool-cli"
|
name = "spl-stake-pool-cli"
|
||||||
repository = "https://github.com/solana-labs/solana-program-library"
|
repository = "https://github.com/solana-labs/solana-program-library"
|
||||||
version = "0.5.0"
|
version = "0.5.1"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
borsh = "0.9"
|
borsh = "0.9"
|
||||||
|
|
|
@ -50,7 +50,6 @@ struct Config {
|
||||||
manager: Box<dyn Signer>,
|
manager: Box<dyn Signer>,
|
||||||
staker: Box<dyn Signer>,
|
staker: Box<dyn Signer>,
|
||||||
depositor: Option<Box<dyn Signer>>,
|
depositor: Option<Box<dyn Signer>>,
|
||||||
sol_depositor: Option<Box<dyn Signer>>,
|
|
||||||
token_owner: Box<dyn Signer>,
|
token_owner: Box<dyn Signer>,
|
||||||
fee_payer: Box<dyn Signer>,
|
fee_payer: Box<dyn Signer>,
|
||||||
dry_run: bool,
|
dry_run: bool,
|
||||||
|
@ -737,10 +736,9 @@ fn command_deposit_sol(
|
||||||
let amount = native_token::sol_to_lamports(amount);
|
let amount = native_token::sol_to_lamports(amount);
|
||||||
|
|
||||||
// Check withdraw_from balance
|
// Check withdraw_from balance
|
||||||
let from_pubkey = from.as_ref().map_or_else(
|
let from_pubkey = from
|
||||||
|| config.fee_payer.try_pubkey().unwrap(),
|
.as_ref()
|
||||||
|keypair| keypair.try_pubkey().unwrap(),
|
.map_or_else(|| config.fee_payer.pubkey(), |keypair| keypair.pubkey());
|
||||||
);
|
|
||||||
let from_balance = config.rpc_client.get_balance(&from_pubkey)?;
|
let from_balance = config.rpc_client.get_balance(&from_pubkey)?;
|
||||||
if from_balance < amount {
|
if from_balance < amount {
|
||||||
return Err(format!(
|
return Err(format!(
|
||||||
|
@ -757,11 +755,7 @@ fn command_deposit_sol(
|
||||||
|
|
||||||
// ephemeral SOL account just to do the transfer
|
// ephemeral SOL account just to do the transfer
|
||||||
let user_sol_transfer = Keypair::new();
|
let user_sol_transfer = Keypair::new();
|
||||||
let mut signers = vec![
|
let mut signers = vec![config.fee_payer.as_ref(), &user_sol_transfer];
|
||||||
config.fee_payer.as_ref(),
|
|
||||||
config.staker.as_ref(),
|
|
||||||
&user_sol_transfer,
|
|
||||||
];
|
|
||||||
if let Some(keypair) = from.as_ref() {
|
if let Some(keypair) = from.as_ref() {
|
||||||
signers.push(keypair)
|
signers.push(keypair)
|
||||||
}
|
}
|
||||||
|
@ -790,18 +784,16 @@ fn command_deposit_sol(
|
||||||
let pool_withdraw_authority =
|
let pool_withdraw_authority =
|
||||||
find_withdraw_authority_program_address(&spl_stake_pool::id(), stake_pool_address).0;
|
find_withdraw_authority_program_address(&spl_stake_pool::id(), stake_pool_address).0;
|
||||||
|
|
||||||
let mut deposit_instructions = if let Some(sol_deposit_authority) =
|
let mut deposit_instructions = if let Some(deposit_authority) = config.depositor.as_ref() {
|
||||||
config.sol_depositor.as_ref()
|
|
||||||
{
|
|
||||||
let expected_sol_deposit_authority = stake_pool.sol_deposit_authority.ok_or_else(|| {
|
let expected_sol_deposit_authority = stake_pool.sol_deposit_authority.ok_or_else(|| {
|
||||||
"SOL deposit authority specified in arguments but stake pool has none".to_string()
|
"SOL deposit authority specified in arguments but stake pool has none".to_string()
|
||||||
})?;
|
})?;
|
||||||
signers.push(sol_deposit_authority.as_ref());
|
signers.push(deposit_authority.as_ref());
|
||||||
if sol_deposit_authority.pubkey() != expected_sol_deposit_authority {
|
if deposit_authority.pubkey() != expected_sol_deposit_authority {
|
||||||
let error = format!(
|
let error = format!(
|
||||||
"Invalid deposit authority specified, expected {}, received {}",
|
"Invalid deposit authority specified, expected {}, received {}",
|
||||||
expected_sol_deposit_authority,
|
expected_sol_deposit_authority,
|
||||||
sol_deposit_authority.pubkey()
|
deposit_authority.pubkey()
|
||||||
);
|
);
|
||||||
return Err(error.into());
|
return Err(error.into());
|
||||||
}
|
}
|
||||||
|
@ -809,7 +801,7 @@ fn command_deposit_sol(
|
||||||
spl_stake_pool::instruction::deposit_sol_with_authority(
|
spl_stake_pool::instruction::deposit_sol_with_authority(
|
||||||
&spl_stake_pool::id(),
|
&spl_stake_pool::id(),
|
||||||
stake_pool_address,
|
stake_pool_address,
|
||||||
&sol_deposit_authority.pubkey(),
|
&deposit_authority.pubkey(),
|
||||||
&pool_withdraw_authority,
|
&pool_withdraw_authority,
|
||||||
&stake_pool.reserve_stake,
|
&stake_pool.reserve_stake,
|
||||||
&user_sol_transfer.pubkey(),
|
&user_sol_transfer.pubkey(),
|
||||||
|
@ -2199,16 +2191,6 @@ fn main() {
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
let sol_depositor = if matches.is_present("sol_depositor") {
|
|
||||||
Some(get_signer(
|
|
||||||
&matches,
|
|
||||||
"sol_depositor",
|
|
||||||
&cli_config.keypair_path,
|
|
||||||
&mut wallet_manager,
|
|
||||||
))
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
};
|
|
||||||
let manager = get_signer(
|
let manager = get_signer(
|
||||||
&matches,
|
&matches,
|
||||||
"manager",
|
"manager",
|
||||||
|
@ -2237,7 +2219,6 @@ fn main() {
|
||||||
manager,
|
manager,
|
||||||
staker,
|
staker,
|
||||||
depositor,
|
depositor,
|
||||||
sol_depositor,
|
|
||||||
token_owner,
|
token_owner,
|
||||||
fee_payer,
|
fee_payer,
|
||||||
dry_run,
|
dry_run,
|
||||||
|
|
Loading…
Reference in New Issue