File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -142,6 +142,9 @@ pub async fn cli_command(
142142 amount,
143143 fee_rate,
144144 } => {
145+ if fee_rate > 1000 {
146+ return Err ( anyhow ! ( "Fee rate too high: {} sat/vbyte (max: 1000)" , fee_rate) ) ;
147+ }
145148 let txid = client
146149 . send ( SendRequest {
147150 address,
@@ -330,6 +333,9 @@ async fn interactive_contract_input(
330333 . prompt ( ) ?
331334 . parse ( ) ?;
332335 let fee_rate: u64 = Text :: new ( "Fee rate (sats/vbyte):" ) . prompt ( ) ?. parse ( ) ?;
336+ if fee_rate > 1000 {
337+ return Err ( anyhow ! ( "Fee rate too high: {} sat/vbyte (max: 1000)" , fee_rate) ) ;
338+ }
333339 let min_price: u64 = Text :: new ( "Minimum Bitcoin price:" ) . prompt ( ) ?. parse ( ) ?;
334340 let max_price: u64 = Text :: new ( "Maximum Bitcoin price:" ) . prompt ( ) ?. parse ( ) ?;
335341 let num_steps: u64 = Text :: new ( "Number of rounding steps:" ) . prompt ( ) ?. parse ( ) ?;
@@ -372,6 +378,9 @@ async fn interactive_contract_input(
372378 outcome_payouts. push ( outcome_payout) ;
373379 }
374380 let fee_rate: u64 = Text :: new ( "Fee rate (sats/vbyte):" ) . prompt ( ) ?. parse ( ) ?;
381+ if fee_rate > 1000 {
382+ return Err ( anyhow ! ( "Fee rate too high: {} sat/vbyte (max: 1000)" , fee_rate) ) ;
383+ }
375384 // TODO: list possible events.
376385 ddk_payouts:: enumeration:: create_contract_input (
377386 outcome_payouts,
Original file line number Diff line number Diff line change @@ -144,7 +144,19 @@ impl DdkRpc for DdkNode {
144144 counter_party,
145145 } = request. into_inner ( ) ;
146146 let contract_input: ContractInput =
147- serde_json:: from_slice ( & contract_input) . expect ( "couldn't get bytes correct" ) ;
147+ serde_json:: from_slice ( & contract_input) . map_err ( |e| {
148+ Status :: new (
149+ Code :: InvalidArgument ,
150+ format ! ( "Invalid contract input: {}" , e) ,
151+ )
152+ } ) ?;
153+
154+ if contract_input. fee_rate > 1000 {
155+ return Err ( Status :: new (
156+ Code :: InvalidArgument ,
157+ format ! ( "Fee rate too high: {} sat/vbyte (max: 1000)" , contract_input. fee_rate) ,
158+ ) ) ;
159+ }
148160 let mut oracle_announcements = Vec :: new ( ) ;
149161 for info in & contract_input. contract_infos {
150162 let announcement = self
@@ -336,6 +348,14 @@ impl DdkRpc for DdkNode {
336348 amount,
337349 fee_rate,
338350 } = request. into_inner ( ) ;
351+
352+ if fee_rate > 1000 {
353+ return Err ( Status :: new (
354+ Code :: InvalidArgument ,
355+ format ! ( "Fee rate too high: {} sat/vbyte (max: 1000)" , fee_rate) ,
356+ ) ) ;
357+ }
358+
339359 let address = Address :: from_str ( & address) . unwrap ( ) . assume_checked ( ) ;
340360 let amount = Amount :: from_sat ( amount) ;
341361 let fee_rate = match FeeRate :: from_sat_per_vb ( fee_rate) {
You can’t perform that action at this time.
0 commit comments