electrum

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

commit 6c3b57abbdb8497a4f4bb9a0e6af053151dafdc0
parent 8b252a7971202554553c2e4a3646723e18994a8f
Author: ThomasV <thomasv@gitorious>
Date:   Fri, 16 Mar 2012 23:45:37 +0300

overload import_block

Diffstat:
Mserver/server.py | 35++++++++++++++++++++---------------
1 file changed, 20 insertions(+), 15 deletions(-)

diff --git a/server/server.py b/server/server.py @@ -90,9 +90,20 @@ address_queue = Queue() class MyStore(Datastore_class): - def import_tx(self, tx, is_coinbase): - tx_id = super(MyStore, self).import_tx(tx, is_coinbase) - self.update_tx_cache(tx_id) + def import_block(self, b, chain_ids=frozenset()): + block_id = super(MyStore, self).import_block(b, chain_ids) + print "import block", block_id + for pos in xrange(len(b['transactions'])): + tx = b['transactions'][pos] + if 'hash' not in tx: + tx['hash'] = util.double_sha256(tx['tx']) + tx_id = store.tx_find_id_and_value(tx) + if tx_id: + self.update_tx_cache(tx_id) + else: + print "error: import_block: no tx_id" + return block_id + def update_tx_cache(self, txid): inrows = self.get_tx_inputs(txid, False) @@ -715,8 +726,8 @@ def tcp_client_thread(ipaddr,conn): print "json error", repr(c) continue try: - cmd = c['method'] - data = c['params'] + cmd = c.get('method') + data = c.get('params') except: print "syntax error", repr(c), ipaddr continue @@ -774,7 +785,6 @@ def process_output_queue(): def memorypool_update(store): - """ when a tx is removed from memory pool, I need to notify subscribers""" ds = BCDataStream.BCDataStream() previous_transactions = store.mempool_keys @@ -798,15 +808,10 @@ def memorypool_update(store): if store.tx_find_id_and_value(tx): pass else: - store.import_tx(tx, False) - store.commit() + tx_id = store.import_tx(tx, False) + store.update_tx_cache(tx_id) - for tx_hash in previous_transactions: - if tx_hash not in store.mempool_keys: - tx = { 'hash':store.hashout(tx_hash) } - tx_id = store.tx_find_id_and_value(tx) - if tx_id: - store.update_tx_cache(tx_id) + store.commit() def clean_session_thread(): @@ -945,8 +950,8 @@ if __name__ == '__main__': dblock.acquire() store.catch_up() memorypool_update(store) - block_number = store.get_block_number(1) + block_number = store.get_block_number(1) if block_number != old_block_number: old_block_number = block_number for session_id in sessions_sub_numblocks: