From 3d8c5f4b637b04af3201b588bf6b2be8f7060363 Mon Sep 17 00:00:00 2001 From: Matthew Plant Date: Thu, 14 Mar 2024 14:42:44 -0400 Subject: [PATCH 1/3] More burning stuff --- solana/src/burn.rs | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/solana/src/burn.rs b/solana/src/burn.rs index 7b2ad49c5..364fe8579 100644 --- a/solana/src/burn.rs +++ b/solana/src/burn.rs @@ -13,7 +13,8 @@ use itertools::Itertools; use serde::Deserialize; use sha2::{Digest, Sha256}; use solana_client::{ - client_error::ClientError, nonblocking::rpc_client::RpcClient, rpc_response::Response, + client_error::ClientError, nonblocking::rpc_client::RpcClient, + rpc_response::Response, }; use solana_sdk::{ commitment_config::CommitmentConfig, @@ -59,6 +60,12 @@ pub struct Settings { dnt_mint: String, #[serde(default)] payers_to_monitor: Vec, + #[serde(default = "min_priority_fee")] + min_priority_fee: u64, +} + +fn min_priority_fee() -> u64 { + 1 } impl Settings { @@ -78,6 +85,7 @@ pub struct SolanaRpc { keypair: [u8; 64], payers_to_monitor: Vec, priority_fee: PriorityFee, + min_priority_fee: u64, } impl SolanaRpc { @@ -100,6 +108,7 @@ impl SolanaRpc { keypair: keypair.to_bytes(), payers_to_monitor: settings.payers_to_monitor()?, priority_fee: PriorityFee::default(), + min_priority_fee: settings.min_priority_fee, })) } } @@ -196,7 +205,11 @@ impl SolanaNetwork for SolanaRpc { // Get a new priority fee. Can't be done in Sync land let priority_fee = self .priority_fee - .get_estimate(&self.provider, &priority_fee_accounts) + .get_estimate( + &self.provider, + &priority_fee_accounts, + self.min_priority_fee, + ) .await .map_err(SolanaRpcError::RpcClientError)?; @@ -243,7 +256,17 @@ impl SolanaNetwork for SolanaRpc { } async fn submit_transaction(&self, tx: &Self::Transaction) -> Result<(), Self::Error> { - match send_with_retry!(self.provider.send_and_confirm_transaction(tx)) { + let config = solana_client::rpc_config::RpcSendTransactionConfig { + skip_preflight: true, + ..Default::default() + }; + match send_with_retry!(self + .provider + .send_and_confirm_transaction_with_spinner_and_config( + tx, + CommitmentConfig::finalized(), + config, + )) { Ok(signature) => { tracing::info!( transaction = %signature, @@ -281,7 +304,6 @@ pub struct PriorityFee { last_estimate: Arc>, } -pub const BASE_PRIORITY_FEE: u64 = 1; pub const MAX_RECENT_PRIORITY_FEE_ACCOUNTS: usize = 128; impl PriorityFee { @@ -289,6 +311,7 @@ impl PriorityFee { &self, provider: &RpcClient, accounts: &[Pubkey], + min_priority_fee: u64, ) -> Result { let mut last_estimate = self.last_estimate.lock().await; match last_estimate.time_taken { @@ -315,14 +338,14 @@ impl PriorityFee { let num_recent_fees = max_per_slot.len(); let mid = num_recent_fees / 2; let estimate = if num_recent_fees == 0 { - BASE_PRIORITY_FEE + min_priority_fee } else if num_recent_fees % 2 == 0 { // If the number of samples is even, taken the mean of the two median fees (max_per_slot[mid - 1] + max_per_slot[mid]) / 2 } else { max_per_slot[mid] } - .max(BASE_PRIORITY_FEE); + .max(min_priority_fee); *last_estimate = LastEstimate::new(time_taken, estimate); Ok(estimate) } From 2ce1ec40108ca19978e5338551e8c500203fead5 Mon Sep 17 00:00:00 2001 From: Brian Balser Date: Thu, 14 Mar 2024 14:51:45 -0400 Subject: [PATCH 2/3] Ran formatter --- solana/src/burn.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/solana/src/burn.rs b/solana/src/burn.rs index 364fe8579..226d99a1d 100644 --- a/solana/src/burn.rs +++ b/solana/src/burn.rs @@ -13,8 +13,7 @@ use itertools::Itertools; use serde::Deserialize; use sha2::{Digest, Sha256}; use solana_client::{ - client_error::ClientError, nonblocking::rpc_client::RpcClient, - rpc_response::Response, + client_error::ClientError, nonblocking::rpc_client::RpcClient, rpc_response::Response, }; use solana_sdk::{ commitment_config::CommitmentConfig, From d1c5e61916fbd8764a972adda91109d4dca37678 Mon Sep 17 00:00:00 2001 From: Matthew Plant Date: Thu, 14 Mar 2024 14:59:25 -0400 Subject: [PATCH 3/3] Switch to confirmed --- solana/src/burn.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/solana/src/burn.rs b/solana/src/burn.rs index 226d99a1d..168e96d82 100644 --- a/solana/src/burn.rs +++ b/solana/src/burn.rs @@ -95,7 +95,7 @@ impl SolanaRpc { return Err(SolanaRpcError::FailedToReadKeypairError); }; let provider = - RpcClient::new_with_commitment(settings.rpc_url.clone(), CommitmentConfig::finalized()); + RpcClient::new_with_commitment(settings.rpc_url.clone(), CommitmentConfig::confirmed()); let program_cache = BurnProgramCache::new(&provider, dc_mint, dnt_mint).await?; if program_cache.dc_burn_authority != keypair.pubkey() { return Err(SolanaRpcError::InvalidKeypair); @@ -263,7 +263,7 @@ impl SolanaNetwork for SolanaRpc { .provider .send_and_confirm_transaction_with_spinner_and_config( tx, - CommitmentConfig::finalized(), + CommitmentConfig::confirmed(), config, )) { Ok(signature) => {