test: Fix ZIP 244 implementation
Script codes must be serialized in their field encoding, which includes the CompactSize length prefix. Co-authored-by: Jack Grigg <jack@z.cash>
This commit is contained in:
parent
dfefab2f55
commit
97a76f1b61
|
@ -15,7 +15,7 @@ import struct
|
||||||
|
|
||||||
from pyblake2 import blake2b
|
from pyblake2 import blake2b
|
||||||
|
|
||||||
from .mininode import ser_uint256
|
from .mininode import ser_string, ser_uint256
|
||||||
from .script import (
|
from .script import (
|
||||||
SIGHASH_ANYONECANPAY,
|
SIGHASH_ANYONECANPAY,
|
||||||
SIGHASH_NONE,
|
SIGHASH_NONE,
|
||||||
|
@ -41,7 +41,7 @@ def transparent_digest(tx):
|
||||||
def transparent_scripts_digest(tx):
|
def transparent_scripts_digest(tx):
|
||||||
digest = blake2b(digest_size=32, person=b'ZTxAuthTransHash')
|
digest = blake2b(digest_size=32, person=b'ZTxAuthTransHash')
|
||||||
for x in tx.vin:
|
for x in tx.vin:
|
||||||
digest.update(bytes(x.scriptSig))
|
digest.update(ser_string(x.scriptSig))
|
||||||
return digest.digest()
|
return digest.digest()
|
||||||
|
|
||||||
# Sapling
|
# Sapling
|
||||||
|
@ -288,7 +288,7 @@ def outputs_sig_digest(tx, nHashType, txin):
|
||||||
def txin_sig_digest(tx, txin):
|
def txin_sig_digest(tx, txin):
|
||||||
digest = blake2b(digest_size=32, person=b'Zcash___TxInHash')
|
digest = blake2b(digest_size=32, person=b'Zcash___TxInHash')
|
||||||
digest.update(bytes(tx.vin[txin.nIn].prevout))
|
digest.update(bytes(tx.vin[txin.nIn].prevout))
|
||||||
digest.update(bytes(txin.scriptCode))
|
digest.update(ser_string(txin.scriptCode))
|
||||||
digest.update(struct.pack('<Q', txin.amount))
|
digest.update(struct.pack('<Q', txin.amount))
|
||||||
digest.update(struct.pack('<I', tx.vin[txin.nIn].nSequence))
|
digest.update(struct.pack('<I', tx.vin[txin.nIn].nSequence))
|
||||||
return digest.digest()
|
return digest.digest()
|
||||||
|
|
Loading…
Reference in New Issue