Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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

```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
58 changes: 34 additions & 24 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 @@ -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