Browse Source

Merge #366: Restarting tumbler waits on gettransaction not gettxout

3602b93 Restarting tumbler waits on gettransaction not gettxout (AdamISZ)
master
AdamISZ 6 years ago
parent
commit
948390fb30
No known key found for this signature in database
GPG Key ID: 141001A1AF77F20B
  1. 26
      jmclient/jmclient/taker_utils.py
  2. 2
      scripts/joinmarket-qt.py
  3. 2
      scripts/tumbler.py

26
jmclient/jmclient/taker_utils.py

@ -134,16 +134,28 @@ def get_tumble_log(logsdir):
return tumble_log
def restart_wait(txid):
"""Here txid is of form txid:N for direct utxo query.
Returns true only if the utxo is reported to have at least 1
confirm by the blockchain interface.
""" Returns true only if the transaction txid is seen in the wallet,
and confirmed (it must be an in-wallet transaction since it always
spends coins from the wallet).
"""
res = jm_single().bc_interface.query_utxo_set(txid, includeconf=True)
if not res[0]:
try:
res = jm_single().bc_interface.rpc('gettransaction', [txid, True])
except JsonRpcError as e:
return False
if res[0]['confirms'] > 0:
if not res:
return False
if "confirmations" not in res:
log.debug("Malformed gettx result: " + str(res))
return False
if res["confirmations"] == 0:
return False
if res["confirmations"] < 0:
log.warn("Tx: " + txid + " has a conflict, abandoning.")
sys.exit(0)
else:
log.debug("Tx: " + str(txid) + " has " + str(
res["confirmations"]) + " confirmations.")
return True
return False
def restart_waiter(txid):
"""Given a txid, wait for confirmation by polling the blockchain

2
scripts/joinmarket-qt.py

@ -582,7 +582,7 @@ class SpendTab(QWidget):
#since we already updated state to running, user cannot
#start another transactions while waiting. Also, use :0 because
#it always exists
self.waitingtxid=txid+":0"
self.waitingtxid=txid
self.restartTimer.timeout.connect(self.restartWaitWrap)
self.restartTimer.start(5000)
return

2
scripts/tumbler.py

@ -84,7 +84,7 @@ def main():
#ensure last transaction is confirmed before restart
tumble_log.info("WAITING TO RESTART...")
txid = schedule[0][5]
restart_waiter(txid + ":0") #add 0 index because all have it
restart_waiter(txid)
#remove the already-done entry (this connects to the other TODO,
#probably better *not* to truncate the done-already txs from file,
#but simplest for now.

Loading…
Cancel
Save