diff --git a/scripts/sendpayment.py b/scripts/sendpayment.py index e2969bc..c377f69 100644 --- a/scripts/sendpayment.py +++ b/scripts/sendpayment.py @@ -4,7 +4,7 @@ from __future__ import absolute_import, print_function """ A sample implementation of a single coinjoin script, adapted from `sendpayment.py` in Joinmarket-Org/joinmarket. -This is primitive and not yet well tested, but it is designed +This is designed to illustrate the main functionality of the new architecture: this code can be run in a separate environment (but not safely over the internet, better on one machine) to the joinmarketdaemon. @@ -17,11 +17,13 @@ a port for the daemon: `python sendpayment.py -p 12345 -N 3 -m 1 walletseed amount address`; -TODO: schedule can be read from file. +Schedule can be read from a file with the -S option, in which case no need to +provide amount, mixdepth, number of counterparties or destination from command line. The idea is that the "backend" (daemon) will keep its orderbook and stay connected on the message channel between runs, only shutting down -after all are complete. +after all are complete. Joins are sequenced using the wallet-notify function as +previously for Joinmarket. It should be very easy to extend this further, of course. @@ -52,7 +54,7 @@ from jmclient import (Taker, load_program_config, get_schedule, validate_address, jm_single, choose_orders, choose_sweep_orders, pick_order, cheapest_order_choose, weighted_order_choose, - Wallet, BitcoinCoreWallet, + Wallet, BitcoinCoreWallet, sync_wallet, RegtestBitcoinCoreInterface, estimate_tx_fee) from jmbase.support import get_log, debug_dump_object @@ -159,6 +161,12 @@ def main(): help=('Use the Bitcoin Core wallet through json rpc, instead ' 'of the internal joinmarket wallet. Requires ' 'blockchain_source=json-rpc')) + parser.add_option('--fast', + action='store_true', + dest='fastsync', + default=False, + help=('choose to do fast wallet sync, only for Core and ' + 'only for previously synced wallet')) (options, args) = parser.parse_args() load_program_config() @@ -226,12 +234,12 @@ def main(): wallet = Wallet(wallet_name, max_mix_depth, options.gaplimit) else: wallet = BitcoinCoreWallet(fromaccount=wallet_name) - jm_single().bc_interface.sync_wallet(wallet) + sync_wallet(wallet, fast=options.fastsync) def taker_finished(res, fromtx=False): if fromtx: if res: - jm_single().bc_interface.sync_wallet(wallet) + sync_wallet(wallet, fast=options.fastsync) clientfactory.getClient().clientStart() else: #a transaction failed; just stop