Browse Source

Add back the 'to_height' and 'from_height' to onchain_history command

Exclude unconfirmed transactions from --to_height and include them into --from_height.
The reason being that an unconfirmed transaction will end up eventually into the last
block which most of the time will be higher than --from_height
patch-4
Marius Baisan 4 years ago
committed by ThomasV
parent
commit
55fdddb0b8
  1. 6
      electrum/commands.py
  2. 12
      electrum/wallet.py

6
electrum/commands.py

@ -662,10 +662,13 @@ class Commands:
return result
@command('w')
async def onchain_history(self, year=None, show_addresses=False, show_fiat=False, wallet: Abstract_Wallet = None):
async def onchain_history(self, year=None, show_addresses=False, show_fiat=False, wallet: Abstract_Wallet = None,
from_height=None, to_height=None):
"""Wallet onchain history. Returns the transaction history of your wallet."""
kwargs = {
'show_addresses': show_addresses,
'from_height': from_height,
'to_height': to_height,
}
if year:
import time
@ -677,6 +680,7 @@ class Commands:
from .exchange_rate import FxThread
fx = FxThread(self.config, None)
kwargs['fx'] = fx
return json_normalize(wallet.get_detailed_history(**kwargs))
@command('w')

12
electrum/wallet.py

@ -950,9 +950,12 @@ class Abstract_Wallet(AddressSynchronizer, ABC):
@profiler
def get_detailed_history(self, from_timestamp=None, to_timestamp=None,
fx=None, show_addresses=False):
fx=None, show_addresses=False, from_height=None, to_height=None):
# History with capital gains, using utxo pricing
# FIXME: Lightning capital gains would requires FIFO
if (from_timestamp is not None or to_timestamp is not None) \
and (from_height is not None or to_height is not None):
raise Exception('timestamp and block height based filtering cannot be used together')
out = []
income = 0
expenditures = 0
@ -966,6 +969,11 @@ class Abstract_Wallet(AddressSynchronizer, ABC):
continue
if to_timestamp and (timestamp or now) >= to_timestamp:
continue
height = item['height']
if from_height is not None and from_height > height > 0:
continue
if to_height is not None and (height >= to_height or height <= 0):
continue
tx_hash = item['txid']
tx = self.db.get_transaction(tx_hash)
tx_fee = item['fee_sat']
@ -1005,6 +1013,8 @@ class Abstract_Wallet(AddressSynchronizer, ABC):
summary = {
'start_date': start_date,
'end_date': end_date,
'from_height': from_height,
'to_height': to_height,
'start_balance': Satoshis(start_balance),
'end_balance': Satoshis(end_balance),
'incoming': Satoshis(income),

Loading…
Cancel
Save