[repl] Add broadcast command
This commit is contained in:
		
							parent
							
								
									f605f4b34d
								
							
						
					
					
						commit
						3895b30083
					
				@ -160,6 +160,18 @@ fn main() {
 | 
				
			|||||||
                        .takes_value(true)
 | 
					                        .takes_value(true)
 | 
				
			||||||
                        .number_of_values(1)
 | 
					                        .number_of_values(1)
 | 
				
			||||||
                        .required(true),
 | 
					                        .required(true),
 | 
				
			||||||
 | 
					                ))
 | 
				
			||||||
 | 
					        .subcommand(
 | 
				
			||||||
 | 
					            SubCommand::with_name("broadcast")
 | 
				
			||||||
 | 
					                .about("Extracts the finalized transaction from a PSBT and broadcasts it to the network")
 | 
				
			||||||
 | 
					                .arg(
 | 
				
			||||||
 | 
					                    Arg::with_name("psbt")
 | 
				
			||||||
 | 
					                        .long("psbt")
 | 
				
			||||||
 | 
					                        .value_name("BASE64_PSBT")
 | 
				
			||||||
 | 
					                        .help("Sets the PSBT to broadcast")
 | 
				
			||||||
 | 
					                        .takes_value(true)
 | 
				
			||||||
 | 
					                        .number_of_values(1)
 | 
				
			||||||
 | 
					                        .required(true),
 | 
				
			||||||
                ));
 | 
					                ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let mut repl_app = app.clone().setting(AppSettings::NoBinaryName);
 | 
					    let mut repl_app = app.clone().setting(AppSettings::NoBinaryName);
 | 
				
			||||||
@ -309,6 +321,12 @@ fn main() {
 | 
				
			|||||||
            if finalized {
 | 
					            if finalized {
 | 
				
			||||||
                println!("Extracted: {}", serialize_hex(&psbt.extract_tx()));
 | 
					                println!("Extracted: {}", serialize_hex(&psbt.extract_tx()));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        } else if let Some(sub_matches) = matches.subcommand_matches("broadcast") {
 | 
				
			||||||
 | 
					            let psbt = base64::decode(sub_matches.value_of("psbt").unwrap()).unwrap();
 | 
				
			||||||
 | 
					            let psbt: PartiallySignedTransaction = deserialize(&psbt).unwrap();
 | 
				
			||||||
 | 
					            let (txid, _) = wallet.broadcast(psbt).unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            println!("TXID: {}", txid);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1062,7 +1062,7 @@ where
 | 
				
			|||||||
        Ok(())
 | 
					        Ok(())
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pub fn broadcast(&mut self, psbt: PSBT) -> Result<Transaction, Error> {
 | 
					    pub fn broadcast(&self, psbt: PSBT) -> Result<(Txid, Transaction), Error> {
 | 
				
			||||||
        let extracted = psbt.extract_tx();
 | 
					        let extracted = psbt.extract_tx();
 | 
				
			||||||
        self.client
 | 
					        self.client
 | 
				
			||||||
            .as_ref()
 | 
					            .as_ref()
 | 
				
			||||||
@ -1070,6 +1070,6 @@ where
 | 
				
			|||||||
            .borrow_mut()
 | 
					            .borrow_mut()
 | 
				
			||||||
            .transaction_broadcast(&extracted)?;
 | 
					            .transaction_broadcast(&extracted)?;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Ok(extracted)
 | 
					        Ok((extracted.txid(), extracted))
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user