Skip to content

Commit 5e6ef7e

Browse files
committed
cleanup fees and logs
1 parent 723ca52 commit 5e6ef7e

File tree

3 files changed

+55
-44
lines changed

3 files changed

+55
-44
lines changed

src/dynamic_fee.rs

Lines changed: 29 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ enum FeeStrategy {
1313
}
1414

1515
impl Miner {
16-
pub async fn dynamic_fee(&self) -> Option<u64> {
16+
pub async fn dynamic_fee(&self) -> Result<u64, String> {
1717
// Get url
1818
let rpc_url = self
1919
.dynamic_fee_url
@@ -35,7 +35,7 @@ impl Miner {
3535
} else if host.contains("rpcpool.com") {
3636
FeeStrategy::Triton
3737
} else {
38-
return None;
38+
return Err("Dynamic fees not supported by this RPC.".to_string());
3939
};
4040

4141
// Build fee estimate request
@@ -109,45 +109,43 @@ impl Miner {
109109
FeeStrategy::Helius => response["result"]["priorityFeeEstimate"]
110110
.as_f64()
111111
.map(|fee| fee as u64)
112-
.ok_or_else(|| format!("Failed to parse priority fee. Response: {:?}", response))
113-
.unwrap(),
112+
.ok_or_else(|| format!("Failed to parse priority fee response: {:?}", response)),
114113
FeeStrategy::Quiknode => response["result"]["per_compute_unit"]["medium"]
115-
.as_f64()
116-
.map(|fee| fee as u64)
117-
.ok_or_else(|| {
118-
format!("Failed to parse priority fee. Response: {:?}", response)
119-
})
120-
.unwrap(),
114+
.as_f64()
115+
.map(|fee| fee as u64)
116+
.ok_or_else(|| format!("Please enable the Solana Priority Fee API add-on in your QuickNode account.")),
121117
FeeStrategy::Alchemy => response["result"]
122-
.as_array()
118+
.as_array()
123119
.and_then(|arr| {
124-
Some(
125-
arr.into_iter()
126-
.map(|v| v["prioritizationFee"].as_u64().unwrap())
127-
.collect::<Vec<u64>>(),
128-
)
129-
})
130-
.and_then(|fees| {
131-
Some(((fees.iter().sum::<u64>() as f32 / fees.len() as f32).ceil() * 1.2)
132-
as u64)
133-
})
134-
.ok_or_else(|| {
135-
format!("Failed to parse priority fee. Response: {:?}", response)
136-
})
137-
.unwrap(),
120+
Some(
121+
arr.into_iter()
122+
.map(|v| v["prioritizationFee"].as_u64().unwrap())
123+
.collect::<Vec<u64>>(),
124+
)
125+
})
126+
.and_then(|fees| {
127+
Some(
128+
((fees.iter().sum::<u64>() as f32 / fees.len() as f32).ceil() * 1.2) as u64,
129+
)
130+
})
131+
.ok_or_else(|| format!("Failed to parse priority fee response: {:?}", response)),
138132
FeeStrategy::Triton => response["result"]
139133
.as_array()
140134
.and_then(|arr| arr.last())
141135
.and_then(|last| last["prioritizationFee"].as_u64())
142-
.ok_or_else(|| format!("Failed to parse priority fee. Response: {:?}", response))
143-
.unwrap(),
136+
.ok_or_else(|| format!("Failed to parse priority fee response: {:?}", response)),
144137
};
145138

146139
// Check if the calculated fee is higher than max
147-
if let Some(max_fee) = self.priority_fee {
148-
Some(calculated_fee.min(max_fee))
149-
} else {
150-
Some(calculated_fee)
140+
match calculated_fee {
141+
Err(err) => Err(err),
142+
Ok(fee) => {
143+
if let Some(max_fee) = self.priority_fee {
144+
Ok(fee.min(max_fee))
145+
} else {
146+
Ok(fee)
147+
}
148+
}
151149
}
152150
}
153151
}

src/mine.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,13 @@ impl Miner {
4545
println!(
4646
"\nStake: {} ORE\n{} Multiplier: {:12}x",
4747
amount_u64_to_string(proof.balance),
48-
if last_hash_at.gt(&0) {
49-
format!(" Change: {} ORE\n", amount_u64_to_string(proof.balance.saturating_sub(last_balance)))
48+
if last_hash_at.gt(&0) {
49+
format!(
50+
" Change: {} ORE\n",
51+
amount_u64_to_string(proof.balance.saturating_sub(last_balance))
52+
)
5053
} else {
51-
""
54+
"".to_string()
5255
},
5356
calculate_multiplier(proof.balance, config.top_balance)
5457
);
@@ -133,7 +136,8 @@ impl Miner {
133136
best_difficulty = difficulty;
134137
best_hash = hx;
135138
// {{ edit_1 }}
136-
if best_difficulty.gt(&*global_best_difficulty.read().unwrap()) {
139+
if best_difficulty.gt(&*global_best_difficulty.read().unwrap())
140+
{
137141
*global_best_difficulty.write().unwrap() = best_difficulty;
138142
}
139143
// {{ edit_1 }}
@@ -142,7 +146,8 @@ impl Miner {
142146

143147
// Exit if time has elapsed
144148
if nonce % 100 == 0 {
145-
let global_best_difficulty = *global_best_difficulty.read().unwrap();
149+
let global_best_difficulty =
150+
*global_best_difficulty.read().unwrap();
146151
if timer.elapsed().as_secs().ge(&cutoff_time) {
147152
if i.id == 0 {
148153
progress_bar.set_message(format!(
@@ -162,7 +167,7 @@ impl Miner {
162167
));
163168
}
164169
}
165-
170+
166171
// Increment nonce
167172
nonce += 1;
168173
}

src/send_and_confirm.rs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,21 @@ impl Miner {
8989
if attempts % 10 == 0 {
9090
// Reset the compute unit price
9191
if self.dynamic_fee {
92-
let fee = if let Some(fee) = self.dynamic_fee().await {
93-
progress_bar.println(format!(" Priority fee: {} microlamports", fee));
94-
fee
95-
} else {
96-
let fee = self.priority_fee.unwrap_or(0);
97-
progress_bar.println(format!(" {} Dynamic fees not supported by this RPC. Falling back to static value: {} microlamports", "WARNING".bold().yellow(), fee));
98-
fee
92+
let fee = match self.dynamic_fee().await {
93+
Ok(fee) => {
94+
progress_bar.println(format!(" Priority fee: {} microlamports", fee));
95+
fee
96+
}
97+
Err(err) => {
98+
let fee = self.priority_fee.unwrap_or(0);
99+
progress_bar.println(format!(
100+
" {} {} Falling back to static value: {} microlamports",
101+
"WARNING".bold().yellow(),
102+
err,
103+
fee
104+
));
105+
fee
106+
}
99107
};
100108
final_ixs.remove(1);
101109
final_ixs.insert(1, ComputeBudgetInstruction::set_compute_unit_price(fee));

0 commit comments

Comments
 (0)