find_pay_to_pubkey_address

This commit is contained in:
ThomasV 2015-03-28 20:53:49 +01:00
parent 66f7a6d28e
commit 3d1fa1e27f
2 changed files with 22 additions and 19 deletions

View File

@ -216,10 +216,15 @@ class TxDialog(QDialog):
if x.get('is_coinbase'):
cursor.insertText('coinbase')
else:
_hash = x.get('prevout_hash')
cursor.insertText(_hash[0:8] + '...' + _hash[-8:] + ":%d"%x.get('prevout_n'), ext)
prevout_hash = x.get('prevout_hash')
prevout_n = x.get('prevout_n')
cursor.insertText(prevout_hash[0:8] + '...' + prevout_hash[-8:] + ":%d"%prevout_n, ext)
cursor.insertText('\t')
addr = x.get('address')
if addr == "(pubkey)":
_addr = self.wallet.find_pay_to_pubkey_address(prevout_hash, prevout_n)
if _addr:
addr = _addr
cursor.insertText(addr, own if self.wallet.is_mine(addr) else ext)
cursor.insertBlock()

View File

@ -588,6 +588,13 @@ class Abstract_Wallet(object):
status += tx_hash + ':%d:' % height
return hashlib.sha256( status ).digest().encode('hex')
def find_pay_to_pubkey_address(self, prevout_hash, prevout_n):
dd = self.txo.get(prevout_hash, {})
for addr, l in dd.items():
for n, v, is_cb in l:
if n == prevout_n:
return addr
def add_transaction(self, tx_hash, tx, tx_height):
is_coinbase = tx.inputs[0].get('prevout_hash') == '0'*64
with self.transaction_lock:
@ -595,10 +602,17 @@ class Abstract_Wallet(object):
self.txi[tx_hash] = d = {}
for txi in tx.inputs:
addr = txi.get('address')
if addr and self.is_mine(addr):
if not txi.get('is_coinbase'):
prevout_hash = txi['prevout_hash']
prevout_n = txi['prevout_n']
ser = prevout_hash + ':%d'%prevout_n
if addr == "(pubkey)":
addr = self.find_pay_to_pubkey_address(prevout_hash, prevout_n)
if addr:
print_error("found pay-to-pubkey address:", addr)
else:
self.reverse_txo[ser] = tx_hash
if addr and self.is_mine(addr):
dd = self.txo.get(prevout_hash, {})
for n, v, is_cb in dd.get(addr, []):
if n == prevout_n:
@ -608,22 +622,6 @@ class Abstract_Wallet(object):
break
else:
self.reverse_txo[ser] = tx_hash
elif addr == "(pubkey)":
prevout_hash = txi['prevout_hash']
prevout_n = txi['prevout_n']
ser = prevout_hash + ':%d'%prevout_n
dd = self.txo.get(prevout_hash, {})
found = False
for _addr, l in dd.items():
for n, v, is_cb in l:
if n == prevout_n:
print_error("found pay-to-pubkey address:", _addr)
if d.get(_addr) is None:
d[_addr] = []
d[_addr].append((ser, v))
found = True
if not found:
self.reverse_txo[ser] = tx_hash
# add outputs
self.txo[tx_hash] = d = {}