@@ -9,6 +9,7 @@ enum FeeStrategy {
9
9
Helius ,
10
10
Triton ,
11
11
Alchemy ,
12
+ Quicknode ,
12
13
}
13
14
14
15
impl Miner {
@@ -29,8 +30,8 @@ impl Miner {
29
30
FeeStrategy :: Helius
30
31
} else if host. contains ( "alchemy.com" ) {
31
32
FeeStrategy :: Alchemy
32
- } else if host. contains ( "pandaever.host " ) {
33
- FeeStrategy :: Alchemy
33
+ } else if host. contains ( "quiknode.pro " ) {
34
+ FeeStrategy :: Quicknode
34
35
} else if host. contains ( "rpcpool.com" ) {
35
36
FeeStrategy :: Triton
36
37
} else {
@@ -66,6 +67,17 @@ impl Miner {
66
67
]
67
68
} )
68
69
}
70
+ FeeStrategy :: Quicknode => {
71
+ json ! ( {
72
+ "jsonrpc" : "2.0" ,
73
+ "id" : "1" ,
74
+ "method" : "qn_estimatePriorityFees" ,
75
+ "params" : {
76
+ "account" : "oreV2ZymfyeXgNgBdqMkumTqqAprVqgBWQfoYkrtKWQ" ,
77
+ "last_n_blocks" : 100
78
+ }
79
+ } )
80
+ }
69
81
FeeStrategy :: Triton => {
70
82
json ! ( {
71
83
"jsonrpc" : "2.0" ,
@@ -99,23 +111,30 @@ impl Miner {
99
111
. map ( |fee| fee as u64 )
100
112
. ok_or_else ( || format ! ( "Failed to parse priority fee. Response: {:?}" , response) )
101
113
. unwrap ( ) ,
114
+ FeeStrategy :: Quicknode => 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 ( ) ,
102
121
FeeStrategy :: Alchemy => response[ "result" ]
103
- . as_array ( )
122
+ . as_array ( )
104
123
. and_then ( |arr| {
105
- Some (
106
- arr. into_iter ( )
107
- . map ( |v| v[ "prioritizationFee" ] . as_u64 ( ) . unwrap ( ) )
108
- . collect :: < Vec < u64 > > ( ) ,
109
- )
110
- } )
111
- . and_then ( |fees| {
112
- Some ( ( fees. iter ( ) . sum :: < u64 > ( ) as f32 / fees. len ( ) as f32 ) . ceil ( )
113
- as u64 )
114
- } )
115
- . ok_or_else ( || {
116
- format ! ( "Failed to parse priority fee. Response: {:?}" , response)
117
- } )
118
- . unwrap ( ) ,
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 ( ) ,
119
138
FeeStrategy :: Triton => response[ "result" ]
120
139
. as_array ( )
121
140
. and_then ( |arr| arr. last ( ) )
0 commit comments