Introduction
Introduction Statistics Contact Development Disclaimer Help
tfix and simplify tx serialization - electrum - Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log
Files
Refs
Submodules
---
commit 02c3bc131e5427aa06edc8ac39a774a391b67a5d
parent 8e644a4dc8bbb7b3e10bda0ad1c474c279cade35
Author: ThomasV <thomasv@gitorious>
Date: Thu, 3 Apr 2014 21:23:35 +0200
fix and simplify tx serialization
Diffstat:
M lib/transaction.py | 32 ++++++++++++++---------------…
1 file changed, 14 insertions(+), 18 deletions(-)
---
diff --git a/lib/transaction.py b/lib/transaction.py
t@@ -421,6 +421,7 @@ class Transaction:
@classmethod
def serialize( klass, inputs, outputs, for_sig = None ):
+ push_script = lambda x: op_push(len(x)/2) + x
s = int_to_hex(1,4) # version
s += var_int( len(inputs) ) # number …
for i in range(len(inputs)):
t@@ -431,28 +432,23 @@ class Transaction:
if for_sig is None:
signatures = txin['signatures']
pubkeys = txin['pubkeys']
+ sig_list = ''
+ for pubkey in pubkeys:
+ sig = signatures.get(pubkey)
+ if not sig:
+ continue
+ sig = sig + '01'
+ sig_list += push_script(sig)
+
if not txin.get('redeemScript'):
- pubkey = pubkeys[0]
- script = ''
- if signatures:
- sig = signatures[0]
- sig = sig + '01' # has…
- script += op_push(len(sig)/2)
- script += sig
- script += op_push(len(pubkey)/2)
- script += pubkey
+ script = sig_list
+ script += push_script(pubkeys[0])
else:
script = '00' # op_0
- for pubkey in pubkeys:
- sig = signatures.get(pubkey)
- if not sig: continue
- sig = sig + '01'
- script += op_push(len(sig)/2)
- script += sig
-
+ script += sig_list
redeem_script = klass.multisig_script(pubkeys,2)
- script += op_push(len(redeem_script)/2)
- script += redeem_script
+ assert redeem_script == txin.get('redeemScript')
+ script += push_script(redeem_script)
elif for_sig==i:
if txin.get('redeemScript'):
You are viewing proxied material from parazyd.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.