Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ anchor-lang = { version = "0.32.1" }
anyhow = "1.0.101"
bincode = "1.3.1"
borsh = "1.6.0"
bs58 = "0.5.1"
bytemuck = "1.19.0"
clap = { version = "4.5.58", features = ["derive", "env"] }
env_logger = "0.11.9"
Expand Down
1 change: 1 addition & 0 deletions cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ path = "src/bin/main.rs"
anyhow.workspace = true
bincode.workspace = true
borsh.workspace = true
bs58.workspace = true
clap.workspace = true
env_logger.workspace = true
futures.workspace = true
Expand Down
46 changes: 31 additions & 15 deletions cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,21 @@ cargo r -p stake-deposit-interceptor-cli -- \
--stake-deposit-interceptor-program-id 2KVTQfCi5YfmgmTKyHTZVz8s1G3YHAxuhpW1J65sdwwu
```

##### Update WhiteList Program ID
Comment thread
aoikurokawa marked this conversation as resolved.
Outdated

```bash
cargo r -p stake-deposit-interceptor-cli -- \
stake-deposit-interceptor \
interceptor \
update-stake-deposit-authority \
--stake-deposit-authority 6hg6RMfjn3QSW6MdjH2Dg3dhF9XsVEE8CQXhjYwkRCiK \
--jito-whitelist-management-program-id Wh1tea995dSzf9q4bmUCPM8s6URjT1HWMrp771bLW7G \
--print-tx \
--signer ~/.config/solana/id.json \
--commitment confirmed \
--stake-deposit-interceptor-program-id 5TAiuAh3YGDbwjEruC1ZpXTJWdNDS7Ur7VeqNNiHMmGV
```

#### Get Stake Deposit Authority

```bash
Expand Down Expand Up @@ -137,15 +152,15 @@ cargo r -p stake-deposit-interceptor-cli -- \
stake-deposit-interceptor \
interceptor \
deposit-stake-whitelisted \
--whitelist 7Qh3p1FpSAAeZer9kLXMyT8dS5PZatLgF9dxBd1BEoKV \
--stake-deposit-authority Ne9DQUbAfSuFSfzwgGms3f1AZvGipcmnpj29YRqJqCN \
--deposit-stake 8JWkyisNoErjT28uYahdo9o1GfPxunMSW9Vyj99rtz7F \
--validator-stake 6jDDM4Agc9sKq5JT1phcBSFCxCJPyjbusk6RmG5WEphT \
--spl-stake-pool-program-id DPoo15wWDqpPJJtS2MUZ49aRxqz5ZaaJCJP4z8bLuib \
--rpc-url https://api.devnet.solana.com \
--whitelist 9KsQ7Wj99tz3ZayVXEEGSGCC2ZYb7CAyJn1GF94CyymS \
--stake-deposit-authority 6hg6RMfjn3QSW6MdjH2Dg3dhF9XsVEE8CQXhjYwkRCiK \
--deposit-stake ATtxAZafDD8ZcdfVi6hkbzFH1mEdDnhn4A8imdjDmfDJ \
--validator-stake uLzZmaSUcdcURgGLQWXJdtsUoJPdVA8uwFUdFCpSGfm \
--spl-stake-pool-program-id SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy \
--rpc-url https://api.mainnet-beta.solana.com \
--signer ~/.config/solana/id.json \
--commitment confirmed \
--stake-deposit-interceptor-program-id 2KVTQfCi5YfmgmTKyHTZVz8s1G3YHAxuhpW1J65sdwwu
--stake-deposit-interceptor-program-id 5TAiuAh3YGDbwjEruC1ZpXTJWdNDS7Ur7VeqNNiHMmGV
```

#### Withdraw Stake Whitelisted
Expand All @@ -155,18 +170,19 @@ cargo r -p stake-deposit-interceptor-cli -- \
stake-deposit-interceptor \
interceptor \
withdraw-stake-whitelisted \
--whitelist 7Qh3p1FpSAAeZer9kLXMyT8dS5PZatLgF9dxBd1BEoKV \
--stake-deposit-authority Ne9DQUbAfSuFSfzwgGms3f1AZvGipcmnpj29YRqJqCN \
--stake-split-from 6jDDM4Agc9sKq5JT1phcBSFCxCJPyjbusk6RmG5WEphT \
--stake-split-to ./target/deploy/stake_e.json \
--whitelist 9KsQ7Wj99tz3ZayVXEEGSGCC2ZYb7CAyJn1GF94CyymS \
--stake-deposit-authority 6hg6RMfjn3QSW6MdjH2Dg3dhF9XsVEE8CQXhjYwkRCiK \
--stake-split-from D77n9KwoNAjL3Yw7d27qTXQNkLd5GTYhdT1LQEAR1hCs \
--stake-split-to ./target/deploy/stake_b.json \
--user-stake-authority BBBATax9kikSHQp8UTcyQL3tfU3BmQD9yid5qhC7QEAA \
--fee-rebate-recipient BBBATax9kikSHQp8UTcyQL3tfU3BmQD9yid5qhC7QEAA \
--spl-stake-pool-program-id DPoo15wWDqpPJJtS2MUZ49aRxqz5ZaaJCJP4z8bLuib \
--amount 1 \
--rpc-url https://api.devnet.solana.com \
--spl-stake-pool-program-id SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy \
--pool-tokens-in 10 \
--minimum-lamports-out 0 \
--rpc-url https://api.mainnet-beta.solana.com \
--signer ~/.config/solana/id.json \
--commitment confirmed \
--stake-deposit-interceptor-program-id 2KVTQfCi5YfmgmTKyHTZVz8s1G3YHAxuhpW1J65sdwwu
--stake-deposit-interceptor-program-id 5TAiuAh3YGDbwjEruC1ZpXTJWdNDS7Ur7VeqNNiHMmGV
```

#### Fund Hopper
Expand Down
62 changes: 36 additions & 26 deletions cli/src/interceptor_handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -471,22 +471,33 @@ impl StakeDepositInterceptorCliHandler {
stake_deposit_authority_address: &Pubkey,
jito_whitelist_management_program_id: &Pubkey,
) -> anyhow::Result<()> {
let rpc_client = self.get_rpc_client();
let stake_deposit_authority_acc = rpc_client
.get_account(stake_deposit_authority_address)
.await?;
Comment thread
aoikurokawa marked this conversation as resolved.
let stake_deposit_authority = stake_deposit_interceptor_program::state::StakePoolDepositStakeAuthority::try_from_slice_unchecked(stake_deposit_authority_acc.data.as_slice())?;

let mut ix_builder = UpdateStakePoolDepositStakeAuthorityBuilder::new();
ix_builder
.deposit_stake_authority(*stake_deposit_authority_address)
.authority(self.cli_config.signer.pubkey())
.authority(stake_deposit_authority.authority)
.new_authority(Some(stake_deposit_authority.authority))
.jito_whitelist_management_program_id(*jito_whitelist_management_program_id);
let mut ix = ix_builder.instruction();
ix.program_id = self.stake_deposit_interceptor_program_id;

log::info!("Updating Stake Deposit Authority parameters: {ix_builder:?}",);

self.process_transaction(
&[ix],
&self.cli_config.signer.pubkey(),
std::slice::from_ref(&self.cli_config.signer),
)
.await?;
if self.print_tx {
self.print_base58_tx(&[ix]);
} else {
self.process_transaction(
&[ix],
&self.cli_config.signer.pubkey(),
Comment thread
aoikurokawa marked this conversation as resolved.
std::slice::from_ref(&self.cli_config.signer),
)
.await?;
}

Ok(())
}
Expand Down Expand Up @@ -903,7 +914,7 @@ impl StakeDepositInterceptorCliHandler {
.stake_pool(stake_deposit_authority.stake_pool)
.validator_list(stake_pool.validator_list)
.stake_deposit_authority(stake_deposit_authority_address)
.withdraw_authority(pubkey!("8HPpFV5PFqGmDumjRTFw9BhsjrZYjJBDuHX2p6H5nBmd"))
.withdraw_authority(pubkey!("6iQKfEyhr3bZMotVkW6beNZz5CPAkiwvgV2CTje9pVSS"))
.deposit_stake(deposit_stake)
Comment thread
aoikurokawa marked this conversation as resolved.
.validator_stake(validator_stake)
.reserve_stake(stake_pool.reserve_stake)
Expand Down Expand Up @@ -980,7 +991,7 @@ impl StakeDepositInterceptorCliHandler {
.whitelist(whitelist)
.stake_pool(stake_deposit_authority.stake_pool)
.validator_list(stake_pool.validator_list)
.withdraw_authority(pubkey!("8HPpFV5PFqGmDumjRTFw9BhsjrZYjJBDuHX2p6H5nBmd"))
.withdraw_authority(pubkey!("6iQKfEyhr3bZMotVkW6beNZz5CPAkiwvgV2CTje9pVSS"))
.stake_split_from(stake_split_from)
Comment thread
aoikurokawa marked this conversation as resolved.
.stake_split_to(stake_split_to_keypair.pubkey())
.user_stake_authority(user_stake_authority)
Expand Down Expand Up @@ -1063,7 +1074,7 @@ impl StakeDepositInterceptorCliHandler {
.0;
let hopper_acc = rpc_client.get_account(&hopper_pda).await?;

println!("Hopper Balance: {}", hopper_acc.lamports);
println!("Hopper {hopper_pda} Balance: {}", hopper_acc.lamports);

Ok(())
}
Expand Down Expand Up @@ -1152,25 +1163,24 @@ impl StakeDepositInterceptorCliHandler {
Ok(())
}

// #[allow(dead_code)]
// fn print_base58_tx(&self, ixs: &[Instruction]) {
// ixs.iter().for_each(|ix| {
// log::info!("\n------ IX ------\n");
fn print_base58_tx(&self, ixs: &[Instruction]) {
ixs.iter().for_each(|ix| {
log::info!("\n------ IX ------\n");

// println!("{}\n", ix.program_id);
println!("{}\n", ix.program_id);

// ix.accounts.iter().for_each(|account| {
// let pubkey = format!("{}", account.pubkey);
// let writable = if account.is_writable { "W" } else { "" };
// let signer = if account.is_signer { "S" } else { "" };
ix.accounts.iter().for_each(|account| {
let pubkey = format!("{}", account.pubkey);
let writable = if account.is_writable { "W" } else { "" };
let signer = if account.is_signer { "S" } else { "" };

// println!("{:<44} {:>2} {:>1}", pubkey, writable, signer);
// });
println!("{:<44} {:>2} {:>1}", pubkey, writable, signer);
});

// println!("\n");
println!("\n");

// let base58_string = bs58::encode(&ix.data).into_string();
// println!("{}\n", base58_string);
// });
// }
let base58_string = bs58::encode(&ix.data).into_string();
println!("{}\n", base58_string);
});
}
}
Loading