Add TTL Option to command line (#273)

* re-insert v2 slate

* reinstate version conversions

* rustfmt

* add and test versioning checks against 2.0.0 wallets

* rustfmt

* fix to invoice file output

* doctest fix

* remove target slate version from command line options

* add ttl option to send_tx and pay commands

* rustfmt
This commit is contained in:
Yeastplume 2019-12-04 13:04:28 +00:00 committed by GitHub
parent 86e6f511c3
commit e2ad2b3880
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 1 deletions

View file

@ -253,6 +253,7 @@ pub struct SendArgs {
pub max_outputs: usize, pub max_outputs: usize,
pub target_slate_version: Option<u16>, pub target_slate_version: Option<u16>,
pub payment_proof_address: Option<String>, pub payment_proof_address: Option<String>,
pub ttl_blocks: Option<u64>,
} }
pub fn send<L, C, K>( pub fn send<L, C, K>(
@ -302,6 +303,7 @@ where
message: args.message.clone(), message: args.message.clone(),
target_slate_version: args.target_slate_version, target_slate_version: args.target_slate_version,
payment_proof_recipient_address, payment_proof_recipient_address,
ttl_blocks: args.ttl_blocks,
send_args: None, send_args: None,
..Default::default() ..Default::default()
}; };
@ -529,6 +531,7 @@ pub struct ProcessInvoiceArgs {
pub max_outputs: usize, pub max_outputs: usize,
pub input: String, pub input: String,
pub estimate_selection_strategies: bool, pub estimate_selection_strategies: bool,
pub ttl_blocks: Option<u64>,
} }
/// Process invoice /// Process invoice
@ -574,6 +577,7 @@ where
num_change_outputs: 1u32, num_change_outputs: 1u32,
selection_strategy_is_use_all: args.selection_strategy == "all", selection_strategy_is_use_all: args.selection_strategy == "all",
message: args.message.clone(), message: args.message.clone(),
ttl_blocks: args.ttl_blocks,
send_args: None, send_args: None,
..Default::default() ..Default::default()
}; };

View file

@ -751,7 +751,7 @@ where
// Step 5: Cancel any transactions with an expired TTL // Step 5: Cancel any transactions with an expired TTL
for tx in txs { for tx in txs {
if let Some(e) = tx.ttl_cutoff_height { if let Some(e) = tx.ttl_cutoff_height {
if e >= tip.0 { if tip.0 >= e {
wallet_lock!(wallet_inst, w); wallet_lock!(wallet_inst, w);
let parent_key_id = w.parent_key_id(); let parent_key_id = w.parent_key_id();
tx::cancel_tx(&mut **w, keychain_mask, &parent_key_id, Some(tx.id), None)?; tx::cancel_tx(&mut **w, keychain_mask, &parent_key_id, Some(tx.id), None)?;

View file

@ -155,6 +155,11 @@ subcommands:
short: t short: t
long: stored_tx long: stored_tx
takes_value: true takes_value: true
- ttl_blocks:
help: If present, the number of blocks from the current after which wallets should refuse to process transactions further
short: b
long: ttl_blocks
takes_value: true
- receive: - receive:
about: Processes a transaction file to accept a transfer from a sender about: Processes a transaction file to accept a transfer from a sender
args: args:
@ -252,6 +257,11 @@ subcommands:
short: i short: i
long: input long: input
takes_value: true takes_value: true
- ttl_blocks:
help: If present, the number of blocks from the current after which wallets should refuse to process transactions further
short: b
long: ttl_blocks
takes_value: true
- outputs: - outputs:
about: Raw wallet output info (list of outputs) about: Raw wallet output info (list of outputs)
- txs: - txs:

View file

@ -453,6 +453,9 @@ pub fn parse_send_args(args: &ArgMatches) -> Result<command::SendArgs, ParseErro
// fluff // fluff
let fluff = args.is_present("fluff"); let fluff = args.is_present("fluff");
// ttl_blocks
let ttl_blocks = parse_u64_or_none(args.value_of("ttl_blocks"));
// max_outputs // max_outputs
let max_outputs = 500; let max_outputs = 500;
@ -493,6 +496,7 @@ pub fn parse_send_args(args: &ArgMatches) -> Result<command::SendArgs, ParseErro
fluff: fluff, fluff: fluff,
max_outputs: max_outputs, max_outputs: max_outputs,
payment_proof_address, payment_proof_address,
ttl_blocks,
target_slate_version: target_slate_version, target_slate_version: target_slate_version,
}) })
} }
@ -636,6 +640,9 @@ pub fn parse_process_invoice_args(
return Err(ParseError::ArgumentError(msg)); return Err(ParseError::ArgumentError(msg));
} }
// ttl_blocks
let ttl_blocks = parse_u64_or_none(args.value_of("ttl_blocks"));
// max_outputs // max_outputs
let max_outputs = 500; let max_outputs = 500;
@ -663,6 +670,7 @@ pub fn parse_process_invoice_args(
dest: dest.to_owned(), dest: dest.to_owned(),
max_outputs: max_outputs, max_outputs: max_outputs,
input: tx_file.to_owned(), input: tx_file.to_owned(),
ttl_blocks,
}) })
} }