electrum-personal-server

Maximally lightweight electrum server for a single user
git clone https://git.parazyd.org/electrum-personal-server
Log | Files | Refs | README

commit 584002a1643e3366ff8ea36258f54746e3906b95
parent f33934059b084bc80ad1f2e39a0997114104a604
Author: chris-belcher <chris-belcher@users.noreply.github.com>
Date:   Fri, 30 Mar 2018 22:53:49 +0100

handled conflicted transactions, and wrote tests

Diffstat:
Melectrumpersonalserver/transactionmonitor.py | 27+++++++++++++++++++++++++++
1 file changed, 27 insertions(+), 0 deletions(-)

diff --git a/electrumpersonalserver/transactionmonitor.py b/electrumpersonalserver/transactionmonitor.py @@ -106,6 +106,8 @@ class TransactionMonitor(object): continue if tx["category"] not in ("receive", "send"): continue + if tx["confirmations"] == -1: + continue #conflicted if tx["txid"] in obtained_txids: continue self.debug("adding obtained tx=" + str(tx["txid"])) @@ -319,6 +321,8 @@ class TransactionMonitor(object): continue if tx["category"] not in ("receive", "send"): continue + if tx["confirmations"] == -1: + continue #conflicted if tx["txid"] in obtained_txids: continue obtained_txids.add(tx["txid"]) @@ -712,6 +716,29 @@ def test(): assert rpc.get_imported_addresses()[0] == test_spk_to_address( test_spk9_imported) + ###conflicted transaction + test_spk10 = "deadbeefdeadbeefcccc" + test_paying_in_tx10 = { + "txid": "placeholder-test-txid10", + "vin": [{"txid": "placeholder-unknown-input-txid", "vout": 0}], + "vout": [{"value": 1, "scriptPubKey": {"hex": test_spk10}}], + "address": test_spk_to_address(test_spk10), + "category": "receive", + "confirmations": -1, + "hex": "placeholder-test-txhex10" + } + rpc = TestJsonRpc([test_paying_in_tx10], [], {}) + txmonitor10 = TransactionMonitor(rpc, deterministic_wallets, debugf, logf) + assert txmonitor10.build_address_history([test_spk10]) + assert len(txmonitor10.address_history) == 1 + assert len(txmonitor10.get_electrum_history(hashes.script_to_scripthash( + test_spk10))) == 0 #shouldnt show up after build history + rpc.add_transaction(test_paying_in_tx10) + assert len(list(txmonitor10.check_for_updated_txes())) == 0 + assert len(txmonitor10.get_electrum_history(hashes.script_to_scripthash( + test_spk10))) == 0 #shouldnt show up after tx is added + + #other possible stuff to test: #finding confirmed and unconfirmed tx, in that order, then both confirm #finding unconfirmed and confirmed tx, in that order, then both confirm