electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 0bb16f083626815ffc6df39b3dcf6e46a625dfc5
parent 8395bfe67f0a8be7219752d3cc84e0d20abc2cbc
Author: ThomasV <thomasv@gitorious>
Date:   Sun, 16 Mar 2014 06:28:16 +0100

add daemon port to config

Diffstat:
Mlib/daemon.py | 8+++++---
Dscripts/get_balance | 91-------------------------------------------------------------------------------
2 files changed, 5 insertions(+), 94 deletions(-)

diff --git a/lib/daemon.py b/lib/daemon.py @@ -39,7 +39,8 @@ class NetworkProxy(threading.Thread): self.config = config self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - self.socket.connect(('', 8000)) + self.daemon_port = config.get('daemon_port', 8000) + self.socket.connect(('', self.daemon_port)) self.message_id = 0 self.unanswered_requests = {} self.subscriptions = {} @@ -272,11 +273,12 @@ class NetworkServer: self.network = network self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - self.server.bind(('', 8000)) + self.daemon_port = config.get('daemon_port', 8000) + self.server.bind(('', self.daemon_port)) self.server.listen(5) self.server.settimeout(1) self.running = False - self.timeout = 60 + self.timeout = config.get('daemon_timeout', 60) def main_loop(self): diff --git a/scripts/get_balance b/scripts/get_balance @@ -1,91 +0,0 @@ -#!/usr/bin/env python - -import sys -from electrum import Interface -from electrum import bitcoin, Transaction, Network - - - -def get_transaction(network, tx_hash, tx_height): - raw_tx = network.synchronous_get([( - 'blockchain.transaction.get', [tx_hash, tx_height])])[0] - tx = Transaction(raw_tx) - return tx - - -def get_history(network, addr): - transactions = network.synchronous_get([( - 'blockchain.address.get_history', [addr])])[0] - transactions.sort(key=lambda x: x["height"]) - return [(i["tx_hash"], i["height"]) for i in transactions] - - -def get_addr_balance(network, address): - prevout_values = {} - h = get_history(network, address) - if h == ['*']: - return 0, 0 - c = u = 0 - received_coins = [] # list of coins received at address - transactions = {} - - # fetch transactions - for tx_hash, tx_height in h: - transactions[(tx_hash, tx_height)] = get_transaction( - network, tx_hash, tx_height) - - for tx_hash, tx_height in h: - tx = transactions[(tx_hash, tx_height)] - if not tx: - continue - update_tx_outputs(tx, prevout_values) - for i, (addr, value) in enumerate(tx.outputs): - if addr == address: - key = tx_hash + ':%d' % i - received_coins.append(key) - - for tx_hash, tx_height in h: - tx = transactions[(tx_hash, tx_height)] - if not tx: - continue - v = 0 - - for item in tx.inputs: - addr = item.get('address') - if addr == address: - key = item['prevout_hash'] + ':%d' % item['prevout_n'] - value = prevout_values.get(key) - if key in received_coins: - v -= value - for i, (addr, value) in enumerate(tx.outputs): - key = tx_hash + ':%d' % i - if addr == address: - v += value - if tx_height: - c += v - else: - u += v - return c, u - - -def update_tx_outputs(tx, prevout_values): - for i, (addr, value) in enumerate(tx.outputs): - key = tx.hash() + ':%d' % i - prevout_values[key] = value - - -def main(address): - network = Network() - network.start(wait=True) - c, u = get_addr_balance(network, address) - - print("Balance - confirmed: %d (%.8f BTC), unconfirmed: %d (%.8f BTC)" % - (c, c / 100000000., u, u / 100000000.)) - -if __name__ == "__main__": - try: - address = sys.argv[1] - except Exception: - print "usage: get_balance <bitcoin_address>" - sys.exit(1) - main(address)