Skip to content
Merged
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
27 changes: 18 additions & 9 deletions cli/src/command/config_transaction_create.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ pub struct ConfigTransactionCreate {
#[arg(long)]
keypair: String,

/// Path to the Fee Payer Keypair
#[arg(long)]
fee_payer_keypair: Option<String>,

/// The multisig where the transaction has been proposed
#[arg(long)]
multisig_pubkey: String,
Expand All @@ -63,6 +67,7 @@ impl ConfigTransactionCreate {
rpc_url,
program_id,
keypair,
fee_payer_keypair,
multisig_pubkey,
action,
memo,
Expand All @@ -75,8 +80,9 @@ impl ConfigTransactionCreate {
let program_id = Pubkey::from_str(&program_id).expect("Invalid program ID");

let transaction_creator_keypair = create_signer_from_path(keypair).unwrap();

let transaction_creator = transaction_creator_keypair.pubkey();
let fee_payer_keypair = fee_payer_keypair.map(|path| create_signer_from_path(path).unwrap());
let fee_payer = fee_payer_keypair.as_ref().map(|kp| kp.pubkey());

let rpc_url = rpc_url.unwrap_or_else(|| "https://api.mainnet-beta.solana.com".to_string());
let rpc_url_clone = rpc_url.clone();
Expand Down Expand Up @@ -128,8 +134,9 @@ impl ConfigTransactionCreate {
.await
.expect("Failed to get blockhash");

let payer = fee_payer.unwrap_or(transaction_creator);
let message = Message::try_compile(
&transaction_creator,
&payer,
&[
ComputeBudgetInstruction::set_compute_unit_price(
priority_fee_lamports.unwrap_or(5000),
Expand All @@ -138,7 +145,7 @@ impl ConfigTransactionCreate {
accounts: ConfigTransactionCreateAccounts {
creator: transaction_creator,
multisig,
rent_payer: transaction_creator,
rent_payer: fee_payer.unwrap_or(transaction_creator),
transaction: transaction_pda.0,
system_program: solana_sdk::system_program::id(),
}
Expand All @@ -156,7 +163,7 @@ impl ConfigTransactionCreate {
accounts: ProposalCreateAccounts {
creator: transaction_creator,
multisig,
rent_payer: transaction_creator,
rent_payer: fee_payer.unwrap_or(transaction_creator),
proposal: proposal_pda.0,
system_program: solana_sdk::system_program::id(),
}
Expand All @@ -176,11 +183,13 @@ impl ConfigTransactionCreate {
)
.unwrap();

let transaction = VersionedTransaction::try_new(
VersionedMessage::V0(message),
&[&*transaction_creator_keypair],
)
.expect("Failed to create transaction");
let mut signers = vec![&*transaction_creator_keypair];
if let Some(ref fee_payer_kp) = fee_payer_keypair {
signers.push(&**fee_payer_kp);
}

let transaction = VersionedTransaction::try_new(VersionedMessage::V0(message), &signers)
.expect("Failed to create transaction");

let signature = send_and_confirm_transaction(&transaction, &rpc_client).await?;

Expand Down
25 changes: 17 additions & 8 deletions cli/src/command/config_transaction_execute.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ pub struct ConfigTransactionExecute {
#[arg(long)]
keypair: String,

/// Path to the Fee Payer Keypair
#[arg(long)]
fee_payer_keypair: Option<String>,

/// The multisig where the transaction has been proposed
#[arg(long)]
multisig_pubkey: String,
Expand All @@ -52,6 +56,7 @@ impl ConfigTransactionExecute {
rpc_url,
program_id,
keypair,
fee_payer_keypair,
multisig_pubkey,
transaction_index,
priority_fee_lamports,
Expand All @@ -63,8 +68,9 @@ impl ConfigTransactionExecute {
let program_id = Pubkey::from_str(&program_id).expect("Invalid program ID");

let transaction_creator_keypair = create_signer_from_path(keypair).unwrap();

let transaction_creator = transaction_creator_keypair.pubkey();
let fee_payer_keypair = fee_payer_keypair.map(|path| create_signer_from_path(path).unwrap());
let fee_payer = fee_payer_keypair.as_ref().map(|kp| kp.pubkey());

let rpc_url = rpc_url.unwrap_or_else(|| "https://api.mainnet-beta.solana.com".to_string());
let rpc_url_clone = rpc_url.clone();
Expand Down Expand Up @@ -109,8 +115,9 @@ impl ConfigTransactionExecute {
.await
.expect("Failed to get blockhash");

let payer = fee_payer.unwrap_or(transaction_creator);
let message = Message::try_compile(
&transaction_creator,
&payer,
&[
ComputeBudgetInstruction::set_compute_unit_price(
priority_fee_lamports.unwrap_or(5000),
Expand All @@ -119,7 +126,7 @@ impl ConfigTransactionExecute {
accounts: ConfigTransactionExecuteAccounts {
member: transaction_creator,
transaction: transaction_pda.0,
rent_payer: Some(transaction_creator),
rent_payer: Some(fee_payer.unwrap_or(transaction_creator)),
multisig,
proposal: proposal_pda.0,
system_program: Some(solana_sdk::system_program::id()),
Expand All @@ -134,11 +141,13 @@ impl ConfigTransactionExecute {
)
.unwrap();

let transaction = VersionedTransaction::try_new(
VersionedMessage::V0(message),
&[&*transaction_creator_keypair],
)
.expect("Failed to create transaction");
let mut signers = vec![&*transaction_creator_keypair];
if let Some(ref fee_payer_kp) = fee_payer_keypair {
signers.push(&**fee_payer_kp);
}

let transaction = VersionedTransaction::try_new(VersionedMessage::V0(message), &signers)
.expect("Failed to create transaction");

let signature = send_and_confirm_transaction(&transaction, &rpc_client).await?;

Expand Down
27 changes: 18 additions & 9 deletions cli/src/command/initiate_program_upgrade.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ pub struct InitiateProgramUpgrade {
#[arg(long)]
keypair: String,

/// Path to the Fee Payer Keypair
#[arg(long)]
fee_payer_keypair: Option<String>,

/// The multisig where the transaction has been proposed
#[arg(long)]
multisig_pubkey: String,
Expand Down Expand Up @@ -74,6 +78,7 @@ impl InitiateProgramUpgrade {
rpc_url,
squads_program_id,
keypair,
fee_payer_keypair,
multisig_pubkey,
memo,
vault_index,
Expand All @@ -89,8 +94,9 @@ impl InitiateProgramUpgrade {
let program_id = Pubkey::from_str(&program_id).expect("Invalid program ID");

let transaction_creator_keypair = create_signer_from_path(keypair).unwrap();

let transaction_creator = transaction_creator_keypair.pubkey();
let fee_payer_keypair = fee_payer_keypair.map(|path| create_signer_from_path(path).unwrap());
let fee_payer = fee_payer_keypair.as_ref().map(|kp| kp.pubkey());

let program_to_upgrade =
Pubkey::from_str(&program_to_upgrade_id).expect("Invalid to upgrade program ID");
Expand Down Expand Up @@ -158,16 +164,17 @@ impl InitiateProgramUpgrade {
let upgrade_program_message =
Message::try_compile(&vault_pda.0, &[instruction], &[], blockhash).unwrap();

let payer = fee_payer.unwrap_or(transaction_creator);
let message = Message::try_compile(
&transaction_creator,
&payer,
&[
ComputeBudgetInstruction::set_compute_unit_price(
priority_fee_lamports.unwrap_or(200_000),
),
Instruction {
accounts: VaultTransactionCreateAccounts {
creator: transaction_creator,
rent_payer: transaction_creator,
rent_payer: fee_payer.unwrap_or(transaction_creator),
transaction: transaction_pda.0,
multisig,
system_program: solana_sdk::system_program::id(),
Expand All @@ -187,7 +194,7 @@ impl InitiateProgramUpgrade {
Instruction {
accounts: ProposalCreateAccounts {
creator: transaction_creator,
rent_payer: transaction_creator,
rent_payer: fee_payer.unwrap_or(transaction_creator),
proposal: proposal_pda.0,
multisig,
system_program: solana_sdk::system_program::id(),
Expand All @@ -208,11 +215,13 @@ impl InitiateProgramUpgrade {
)
.unwrap();

let transaction = VersionedTransaction::try_new(
VersionedMessage::V0(message),
&[&*transaction_creator_keypair],
)
.expect("Failed to create transaction");
let mut signers = vec![&*transaction_creator_keypair];
if let Some(ref fee_payer_kp) = fee_payer_keypair {
signers.push(&**fee_payer_kp);
}

let transaction = VersionedTransaction::try_new(VersionedMessage::V0(message), &signers)
.expect("Failed to create transaction");

let signature = send_and_confirm_transaction(&transaction, &rpc_client).await?;

Expand Down
27 changes: 18 additions & 9 deletions cli/src/command/initiate_transfer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ pub struct InitiateTransfer {
#[arg(long)]
keypair: String,

/// Path to the Fee Payer Keypair
#[arg(long)]
fee_payer_keypair: Option<String>,

/// The multisig where the transaction has been proposed
#[arg(long)]
multisig_pubkey: String,
Expand All @@ -81,6 +85,7 @@ impl InitiateTransfer {
program_id,
token_program_id,
keypair,
fee_payer_keypair,
multisig_pubkey,
memo,
vault_index,
Expand All @@ -100,8 +105,9 @@ impl InitiateTransfer {
let token_program_id = Pubkey::from_str(&token_program_id).expect("Invalid program ID");

let transaction_creator_keypair = create_signer_from_path(keypair).unwrap();

let transaction_creator = transaction_creator_keypair.pubkey();
let fee_payer_keypair = fee_payer_keypair.map(|path| create_signer_from_path(path).unwrap());
let fee_payer = fee_payer_keypair.as_ref().map(|kp| kp.pubkey());

let rpc_url = rpc_url.unwrap_or_else(|| "https://api.mainnet-beta.solana.com".to_string());
let rpc_url_clone = rpc_url.clone();
Expand Down Expand Up @@ -182,16 +188,17 @@ impl InitiateTransfer {
)
.unwrap();

let payer = fee_payer.unwrap_or(transaction_creator);
let message = Message::try_compile(
&transaction_creator,
&payer,
&[
ComputeBudgetInstruction::set_compute_unit_price(
priority_fee_lamports.unwrap_or(200_000),
),
Instruction {
accounts: VaultTransactionCreateAccounts {
creator: transaction_creator,
rent_payer: transaction_creator,
rent_payer: fee_payer.unwrap_or(transaction_creator),
transaction: transaction_pda.0,
multisig,
system_program: solana_sdk::system_program::id(),
Expand All @@ -211,7 +218,7 @@ impl InitiateTransfer {
Instruction {
accounts: ProposalCreateAccounts {
creator: transaction_creator,
rent_payer: transaction_creator,
rent_payer: fee_payer.unwrap_or(transaction_creator),
proposal: proposal_pda.0,
multisig,
system_program: solana_sdk::system_program::id(),
Expand All @@ -232,11 +239,13 @@ impl InitiateTransfer {
)
.unwrap();

let transaction = VersionedTransaction::try_new(
VersionedMessage::V0(message),
&[&*transaction_creator_keypair],
)
.expect("Failed to create transaction");
let mut signers = vec![&*transaction_creator_keypair];
if let Some(ref fee_payer_kp) = fee_payer_keypair {
signers.push(&**fee_payer_kp);
}

let transaction = VersionedTransaction::try_new(VersionedMessage::V0(message), &signers)
.expect("Failed to create transaction");

let signature = send_and_confirm_transaction(&transaction, &rpc_client).await?;

Expand Down
29 changes: 19 additions & 10 deletions cli/src/command/multisig_create.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ pub struct MultisigCreate {
#[arg(long)]
keypair: String,

/// Path to the Fee Payer Keypair
#[arg(long)]
fee_payer_keypair: Option<String>,

/// Address of the Program Config Authority that will be set to control the Program Config
#[arg(long)]
config_authority: Option<String>,
Expand Down Expand Up @@ -67,6 +71,7 @@ impl MultisigCreate {
rpc_url,
program_id,
keypair,
fee_payer_keypair,
config_authority,
members,
threshold,
Expand All @@ -81,8 +86,9 @@ impl MultisigCreate {
let program_id = Pubkey::from_str(&program_id).expect("Invalid program ID");

let transaction_creator_keypair = create_signer_from_path(keypair).unwrap();

let transaction_creator = transaction_creator_keypair.pubkey();
let fee_payer_keypair = fee_payer_keypair.map(|path| create_signer_from_path(path).unwrap());
let fee_payer = fee_payer_keypair.as_ref().map(|kp| kp.pubkey());

let rpc_url = rpc_url.unwrap_or_else(|| "https://api.mainnet-beta.solana.com".to_string());

Expand Down Expand Up @@ -160,8 +166,9 @@ impl MultisigCreate {
.unwrap()
.treasury;

let payer = fee_payer.unwrap_or(transaction_creator);
let message = Message::try_compile(
&transaction_creator,
&payer,
&[
ComputeBudgetInstruction::set_compute_unit_price(
priority_fee_lamports.unwrap_or(5000),
Expand Down Expand Up @@ -195,14 +202,16 @@ impl MultisigCreate {
)
.unwrap();

let transaction = VersionedTransaction::try_new(
VersionedMessage::V0(message),
&[
&*transaction_creator_keypair,
&seed_keypair as &dyn Signer,
],
)
.expect("Failed to create transaction");
let mut signers: Vec<&dyn Signer> = vec![
&*transaction_creator_keypair,
&seed_keypair as &dyn Signer,
];
if let Some(ref fee_payer_kp) = fee_payer_keypair {
signers.push(&**fee_payer_kp);
}

let transaction = VersionedTransaction::try_new(VersionedMessage::V0(message), &signers)
.expect("Failed to create transaction");

let signature = send_and_confirm_transaction(&transaction, &rpc_client).await?;

Expand Down
Loading
Loading