URI: 
       tsimplify add_transaction - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 06589df812d85597b0dc635f8d4e502cbdcfb5a6
   DIR parent fc85dcead64fbd5c808b72bccd98bf7083bb96d1
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Sat, 23 Nov 2019 12:46:43 +0100
       
       simplify add_transaction
       
       Diffstat:
         M electrum/address_synchronizer.py    |      12 ++++++------
         M electrum/commands.py                |       2 +-
         M electrum/gui/qt/main_window.py      |       2 +-
         M electrum/tests/test_wallet_vertica… |      10 +++++-----
       
       4 files changed, 13 insertions(+), 13 deletions(-)
       ---
   DIR diff --git a/electrum/address_synchronizer.py b/electrum/address_synchronizer.py
       t@@ -207,11 +207,11 @@ class AddressSynchronizer(Logger):
                            conflicting_txns -= {tx_hash}
                    return conflicting_txns
        
       -    def add_transaction(self, tx_hash, tx: Transaction, allow_unrelated=False) -> bool:
       +    def add_transaction(self, tx: Transaction, allow_unrelated=False) -> bool:
                """Returns whether the tx was successfully added to the wallet history."""
       -        assert tx_hash, tx_hash
                assert tx, tx
                assert tx.is_complete()
       +        tx_hash = tx.txid()
                # assert tx_hash == tx.txid()  # disabled as expensive; test done by Synchronizer.
                # we need self.transaction_lock but get_tx_height will take self.lock
                # so we need to take that too here, to enforce order of locks
       t@@ -339,7 +339,7 @@ class AddressSynchronizer(Logger):
        
            def receive_tx_callback(self, tx_hash, tx, tx_height):
                self.add_unverified_tx(tx_hash, tx_height)
       -        self.add_transaction(tx_hash, tx, allow_unrelated=True)
       +        self.add_transaction(tx, allow_unrelated=True)
        
            def receive_history_callback(self, addr: str, hist, tx_fees: Dict[str, int]):
                with self.lock:
       t@@ -360,7 +360,7 @@ class AddressSynchronizer(Logger):
                    tx = self.db.get_transaction(tx_hash)
                    if tx is None:
                        continue
       -            self.add_transaction(tx_hash, tx, allow_unrelated=True)
       +            self.add_transaction(tx, allow_unrelated=True)
        
                # Store fees
                for tx_hash, fee_sat in tx_fees.items():
       t@@ -386,7 +386,7 @@ class AddressSynchronizer(Logger):
                            continue
                        tx = self.db.get_transaction(tx_hash)
                        if tx is not None:
       -                    self.add_transaction(tx_hash, tx, allow_unrelated=True)
       +                    self.add_transaction(tx, allow_unrelated=True)
        
            def remove_local_transactions_we_dont_have(self):
                for txid in itertools.chain(self.db.list_txi(), self.db.list_txo()):
       t@@ -569,7 +569,7 @@ class AddressSynchronizer(Logger):
            def add_future_tx(self, tx: Transaction, num_blocks: int) -> None:
                assert num_blocks > 0, num_blocks
                with self.lock:
       -            self.add_transaction(tx.txid(), tx)
       +            self.add_transaction(tx)
                    self.future_tx[tx.txid()] = num_blocks
        
            def get_tx_height(self, tx_hash: str) -> TxMinedInfo:
   DIR diff --git a/electrum/commands.py b/electrum/commands.py
       t@@ -819,7 +819,7 @@ class Commands:
            async def addtransaction(self, tx, wallet: Abstract_Wallet = None):
                """ Add a transaction to the wallet history """
                tx = Transaction(tx)
       -        if not wallet.add_transaction(tx.txid(), tx):
       +        if not wallet.add_transaction(tx):
                    return False
                wallet.storage.write()
                return tx.txid()
   DIR diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py
       t@@ -2973,7 +2973,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
            def save_transaction_into_wallet(self, tx: Transaction):
                win = self.top_level_window()
                try:
       -            if not self.wallet.add_transaction(tx.txid(), tx):
       +            if not self.wallet.add_transaction(tx):
                        win.show_error(_("Transaction could not be saved.") + "\n" +
                                       _("It conflicts with current history."))
                        return False
   DIR diff --git a/electrum/tests/test_wallet_vertical.py b/electrum/tests/test_wallet_vertical.py
       t@@ -2289,7 +2289,7 @@ class TestWalletHistory_EvilGapLimit(TestCaseForTestnet):
                w.storage.put('stored_height', 1316917 + 100)
                for txid in self.transactions:
                    tx = Transaction(self.transactions[txid])
       -            w.add_transaction(tx.txid(), tx)
       +            w.add_transaction(tx)
                # txn A is an external incoming txn paying to addr (3) and (15)
                # txn B is an external incoming txn paying to addr (4) and (25)
                # txn C is an internal transfer txn from addr (25) -- to -- (1) and (25)
       t@@ -2339,7 +2339,7 @@ class TestWalletHistory_DoubleSpend(TestCaseForTestnet):
                                             config=self.config)['wallet']
                for txid in self.transactions:
                    tx = Transaction(self.transactions[txid])
       -            w.add_transaction(tx.txid(), tx)
       +            w.add_transaction(tx)
                # txn A is an external incoming txn funding the wallet
                # txn B is an outgoing payment to an external address
                # txn C is double-spending txn B, to a wallet address
       t@@ -2353,15 +2353,15 @@ class TestWalletHistory_DoubleSpend(TestCaseForTestnet):
                                             config=self.config)['wallet']
                # txn A is an external incoming txn funding the wallet
                txA = Transaction(self.transactions["a3849040f82705151ba12a4389310b58a17b78025d81116a3338595bdefa1625"])
       -        w.add_transaction(txA.txid(), txA)
       +        w.add_transaction(txA)
                # txn B is an outgoing payment to an external address
                txB = Transaction(self.transactions["0e2182ead6660790290371516cb0b80afa8baebd30dad42b5e58a24ceea17f1c"])
       -        w.add_transaction(txB.txid(), txB)
       +        w.add_transaction(txB)
                # now the user manually deletes txn B to attempt the double spend
                # txn C is double-spending txn B, to a wallet address
                # rationale1: user might do this with opt-in RBF transactions
                # rationale2: this might be a local transaction, in which case the GUI even allows it
                w.remove_transaction(txB)
                txC = Transaction(self.transactions["2c9aa33d9c8ec649f9bfb84af027a5414b760be5231fe9eca4a95b9eb3f8a017"])
       -        w.add_transaction(txC.txid(), txC)
       +        w.add_transaction(txC)
                self.assertEqual(999890, sum(w.get_balance()))