Skip to content

Commit 44274e8

Browse files
authored
Merge pull request summa-tx#46 from prestwich/master
Tests for transaction builder
2 parents f33cf6e + b09e419 commit 44274e8

File tree

10 files changed

+243
-57
lines changed

10 files changed

+243
-57
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ dist/
55

66
# Virtual environment
77
venv/
8+
.venv/
89

910
# Unit test / coverage reports
1011
.tox/

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
## Riemann: Multi-coin transaction generation toolbox.
22

33
[![Build Status](https://travis-ci.org/summa-tx/riemann.svg?branch=master)](https://travis-ci.org/summa-tx/riemann)
4-
[![Coverage Status](https://coveralls.io/repos/github/summa-tx/riemann/badge.svg?branch=master)](https://coveralls.io/github/summa-tx/riemann?branch=master)
4+
[![Coverage Status](https://coveralls.io/repos/github/summa-tx/riemann/badge.svg)](https://coveralls.io/github/summa-tx/riemann)
55

66

77
### Contributing

riemann/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import riemann.networks as networks
1+
from . import networks
22

33
network = networks.get_network('bitcoin_main')
44

riemann/encoding/addresses.py

-1
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,6 @@ def parse_hash(address):
221221
# Cash addresses
222222
try:
223223
if address.find(riemann.network.CASHADDR_PREFIX) == 0:
224-
print(raw)
225224
if raw.find(riemann.network.CASHADDR_P2SH) == 0:
226225
return raw[len(riemann.network.CASHADDR_P2SH):]
227226
if raw.find(riemann.network.CASHADDR_P2PKH) == 0:

riemann/tests/helpers.py

+15-2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
sequence_int = 0xFFFFFFFE
1717
num_outputs = bytes.fromhex('02')
1818
output_value_0 = bytes.fromhex('a135ef0100000000')
19+
output_value_0_int = 32454049
1920
output_script_0 = bytes.fromhex('76a914bc3b654dca7e56b04dca18f2566cdaf02e8d9ada88ac')
2021
output_value_1 = bytes.fromhex('99c3980000000000')
2122
output_script_1 = bytes.fromhex('76a9141c4bc762dd5423e332166702cb75f40df79fea1288ac')
@@ -98,6 +99,7 @@
9899
OP_IF_CASHADDR = 'bitcoincash:prwv474e2d35xuf77ju6r4zr5xmv4ryd6ynr4c5mld'
99100
OP_IF_SCRIPT_HASH = bytes.fromhex('dccafab9536343713ef4b9a1d443a1b6ca8c8dd1')
100101
OP_IF_OUTPUT_SCRIPT = b'\xa9\x14' + OP_IF_SCRIPT_HASH + b'\x87'
102+
OP_IF_OUTPUT = output_value_0 + b'\x17' + OP_IF_OUTPUT_SCRIPT
101103

102104
CASHADDR_PUBKEY = bytes.fromhex('02f0899f0bbd104a12efa06d10eece1584887a6cfaf31cd168c78d0c15d8357aa7')
103105
LEGACY_P2PKH_ADDRESS = '1NWdP6dqMUjK5VCDELo6vFhaGkJFLEY5Gw'
@@ -106,11 +108,17 @@
106108
# Use '00' * 65 and '11' * 65 as pubkeys
107109
PK_0 = '00' * 65
108110
PK_1 = '11' * 65
111+
PK_0_BYTES = bytes.fromhex(PK_0)
112+
PK_1_BYTES = bytes.fromhex(PK_1)
109113
PKH_0 = bytes.fromhex('1b60c31dba9403c74d81af255f0c300bfed5faa3')
110114
PKH_1 = bytes.fromhex('e723a0f62396b8b03dbd9e48e9b9efe2eb704aab')
111115
PKH_0_OUTPUT_SCRIPT = b'\x76\xa9\x14' + PKH_0 + b'\x88\xac'
116+
PKH_0_P2WPKH_OUTPUT_SCRIPT = b'\x00\x14' + PKH_0
117+
PK_0_P2PKH_OUTPUT = output_value_0 + b'\x19' + PKH_0_OUTPUT_SCRIPT
118+
PK_0_P2WPKH_OUTPUT = output_value_0 + b'\x16' + PKH_0_P2WPKH_OUTPUT_SCRIPT
112119
P2PKH_0 = '13VmALKHkCdSN1JULkP6RqW3LcbpWvgryV'
113120
P2PKH_0_CASHADDR = 'bitcoincash:qqdkpscah22q836dsxhj2hcvxq9la4065v92pm9f84'
121+
P2WPKH_0 = 'bc1qrdsvx8d6jspuwnvp4uj47rpsp0ldt74r72cx4u'
114122
P2PKH_1 = '1N59mqr5yg38K11PTY2HdZTN7KmAHeCyHE'
115123

116124
MSIG_TWO_TWO_SCRIPT = examples.msig_two_two.format(pk0=PK_0, pk1=PK_1)
@@ -155,6 +163,7 @@
155163
]
156164
P2WSH_WITNESS_STACK_STRING = 'NONE 304402201b1c2fc7d58870004c379575a47db60c3833174033f891ad5030cbf0c37c50c302206087d3ddc6f38da40e7eaf8c2af3f934a577de10e6ca75e00b4cdfbb34f5d40601 3045022100a7ecde342ccacd1159e385bcd41c947723a7ae3fcea66c76b5b09d02fee310f7022058ca21324fcd0c90e69630f13975d993e11f62ec8d7aa1a9a49036b9607e58fe01'
157165

166+
P2WSH_OUTPUT_3_VALUE_INT = 290819
158167
P2WSH_OUTPUT_0 = bytes.fromhex('40548900000000001976a9146199463742d1359a505881821d82f5d4148e3fc588ac')
159168
P2WSH_OUTPUT_1 = bytes.fromhex('60361e000000000017a9140df9a2a3c14a223733908e3e9127e2f6a9e2878e87')
160169
P2WSH_OUTPUT_2 = bytes.fromhex('502b7000000000001976a914f447146b86373c781a946d7ebd88cbbb79ec810288ac')
@@ -209,14 +218,17 @@
209218
DCR_OUTPOINT_INDEX = bytes.fromhex('00000000')
210219
DCR_OUTPOINT_TREE = bytes.fromhex('00')
211220
DCR_SEQUNCE = bytes.fromhex('ffffffff')
221+
DCR_SEQUNCE_INT = 0xFFFFFFFF
212222
DCR_NUM_OUTPUTS = bytes.fromhex('01')
213223
DCR_OUTPUT = bytes.fromhex('a8ab570e0000000000001976a9145688f515dcf3453ca9b7a2a93aa441158a0b482c88ac')
214224
DCR_OUTPUT_VALUE = bytes.fromhex('a8ab570e00000000')
215225
DCR_OUTPUT_VERSION = bytes.fromhex('0000')
216226
DCR_OUTPUT_SCRIPT_LEN = bytes.fromhex('19')
217227
DCR_OUTPUT_SCRIPT = bytes.fromhex('76a9145688f515dcf3453ca9b7a2a93aa441158a0b482c88ac')
218228
DCR_LOCKTIME = bytes.fromhex('cde2c259')
229+
DCR_LOCKTIME_INT = 0x59c2e2cd
219230
DCR_EXPIRY = bytes.fromhex('00000000')
231+
DCR_EXPIRY_INT = 0
220232
DCR_NUM_WITNESSES = bytes.fromhex('01')
221233
DCR_WITNESS = bytes.fromhex('202e580e000000009797020006000000e0483045022100d1c4e15834d1c405446d6ed6c05b5969483151b6b0401994a13e5bda5b73c36f022076bb7b6f00586ae8eb4b1590a4c670b13c66d04608a632b9d81da1f66470d7920121033f0306ce76970a7bd4506e0d243f571c7dd2d01d3747d9aa9081d89936cb7c1e20a9fc91d0a774083ba8016cac3254d35a99a815e632a7ee7d7d163b5f6723eed9514c5163a6147c0aef5c26e923e27336b945363f9939b97623598876a91410a35ba5323e7d6ac41d0400a7384d6d0767de3d6704cde2c259b17576a9147b5acb92ad78a9f983baa69c4434aa52499815826888ac')
222234
DCR_WITNESS_VALUE = bytes.fromhex('202e580e00000000')
@@ -247,7 +259,7 @@
247259
DCR_2_OUTPUT_0 = bytes.fromhex('e05d6a2f0000000000001976a9142fc06df75ec010d3ff25c3de77713fca4e731d4088ac')
248260
DCR_2_OUTPUT_1 = bytes.fromhex('e09cede90500000000001976a914c2a65fb57cd570a53ff6cc721d854d5d7549f23f88ac')
249261
DCR_2_LOCKTIME = bytes.fromhex('00000000')
250-
DCR_2_EXPIRTY = bytes.fromhex('00000000')
262+
DCR_2_EXPIRY = bytes.fromhex('00000000')
251263
DCR_2_NUM_WITNESSES = bytes.fromhex('03')
252264
DCR_2_WITNESS_0 = bytes.fromhex('00e40b540200000051010000040000006a47304402203162d5cea243874539bb6e35c9515342fcfa3fc7b8fa77ca9a17cef541c8957302204e00f31091c8f982eff563b805d1909679741c02c851919a709fce40dcd452ad012103ee327661befce7e68046a18aab5d2a566b0425069ad6b7b1951a737d40abd9cb')
253265
DCR_2_WITNESS_0_SCRIPT_SIG = bytes.fromhex('6a47304402203162d5cea243874539bb6e35c9515342fcfa3fc7b8fa77ca9a17cef541c8957302204e00f31091c8f982eff563b805d1909679741c02c851919a709fce40dcd452ad012103ee327661befce7e68046a18aab5d2a566b0425069ad6b7b1951a737d40abd9cb')
@@ -280,7 +292,8 @@
280292
P2SH_PUSHDATA1_REDEEM_SCRIPT = 'OP_2 02975ddf75126ef880d1b56ea194141ea0ceb2d9e12298b74d54432cbd83535854 03c96d495bfdd5ba4145e3e046fee45e84a8a48ad05bd8dbb395c011a32cf9f880 03e5dc75b59e4c67bfea266314d0b1da1e317f5b7d1e4cf1975442b79e542de748 OP_3 OP_CHECKMULTISIG'
281293
P2SH_PUSHDATA1_SERIALIZED_REDEEM_SCRIPT = bytes.fromhex('4c69522102975ddf75126ef880d1b56ea194141ea0ceb2d9e12298b74d54432cbd835358542103c96d495bfdd5ba4145e3e046fee45e84a8a48ad05bd8dbb395c011a32cf9f8802103e5dc75b59e4c67bfea266314d0b1da1e317f5b7d1e4cf1975442b79e542de74853ae')
282294
P2SH_PUSHDATA1_SERIALIZED_STACK_SCRIPT = bytes.fromhex('00473044022024bb241b26586a4c614ba38fec83a50904d5daeed0975e25eae095e5e911989e022073d99364454fc572a189a2dcf11c6b182a45c5177e746b731448abe3d9e4fe50014730440220319dbd5a69bcaa73e569c5e068edb03f6c52344cd9068d248925256463608c8f02201b4f35ee176d85395aa1eb49aa80adc22cad820d26d62cf462889b791b98aaf801')
283-
P2SH_PUSHDATA1_SERIALIZED = '00473044022024bb241b26586a4c614ba38fec83a50904d5daeed0975e25eae095e5e911989e022073d99364454fc572a189a2dcf11c6b182a45c5177e746b731448abe3d9e4fe50014730440220319dbd5a69bcaa73e569c5e068edb03f6c52344cd9068d248925256463608c8f02201b4f35ee176d85395aa1eb49aa80adc22cad820d26d62cf462889b791b98aaf8014c69522102975ddf75126ef880d1b56ea194141ea0ceb2d9e12298b74d54432cbd835358542103c96d495bfdd5ba4145e3e046fee45e84a8a48ad05bd8dbb395c011a32cf9f8802103e5dc75b59e4c67bfea266314d0b1da1e317f5b7d1e4cf1975442b79e542de74853ae'
295+
P2SH_PUSHDATA1_SERIALIZED = bytes.fromhex( '00473044022024bb241b26586a4c614ba38fec83a50904d5daeed0975e25eae095e5e911989e022073d99364454fc572a189a2dcf11c6b182a45c5177e746b731448abe3d9e4fe50014730440220319dbd5a69bcaa73e569c5e068edb03f6c52344cd9068d248925256463608c8f02201b4f35ee176d85395aa1eb49aa80adc22cad820d26d62cf462889b791b98aaf8014c69522102975ddf75126ef880d1b56ea194141ea0ceb2d9e12298b74d54432cbd835358542103c96d495bfdd5ba4145e3e046fee45e84a8a48ad05bd8dbb395c011a32cf9f8802103e5dc75b59e4c67bfea266314d0b1da1e317f5b7d1e4cf1975442b79e542de74853ae')
296+
P2SH_PUSHDATA1_SERIALIZED_HEX = '00473044022024bb241b26586a4c614ba38fec83a50904d5daeed0975e25eae095e5e911989e022073d99364454fc572a189a2dcf11c6b182a45c5177e746b731448abe3d9e4fe50014730440220319dbd5a69bcaa73e569c5e068edb03f6c52344cd9068d248925256463608c8f02201b4f35ee176d85395aa1eb49aa80adc22cad820d26d62cf462889b791b98aaf8014c69522102975ddf75126ef880d1b56ea194141ea0ceb2d9e12298b74d54432cbd835358542103c96d495bfdd5ba4145e3e046fee45e84a8a48ad05bd8dbb395c011a32cf9f8802103e5dc75b59e4c67bfea266314d0b1da1e317f5b7d1e4cf1975442b79e542de74853ae'
284297

285298
# P2SH OP_PUSHDATA2
286299
P2SH_PUSHDATA2_SCRIPT = 'OP_0 3044022024bb241b26586a4c614ba38fec83a50904d5daeed0975e25eae095e5e911989e022073d99364454fc572a189a2dcf11c6b182a45c5177e746b731448abe3d9e4fe5001 30440220319dbd5a69bcaa73e569c5e068edb03f6c52344cd9068d248925256463608c8f02201b4f35ee176d85395aa1eb49aa80adc22cad820d26d62cf462889b791b98aaf801 522102975ddf75126ef880d1b56ea194141ea0ceb2d9e12298b74d54432cbd835358542103c96d495bfdd5ba4145e3e046fee45e84a8a48ad05bd8dbb395c011a32cf9f8802103e5dc75b59e4c67bfea266314d0b1da1e317f5b7d1e4cf1975442b79e542de74853ae2102975ddf75126ef880d1b56ea194141ea0ceb2d9e12298b74d54432cbd835358542103c96d495bfdd5ba4145e3e046fee45e84a8a48ad05bd8dbb395c011a32cf9f8802103e5dc75b59e4c67bfea266314d0b1da1e317f5b7d1e4cf1975442b79e542de74853ae2102975ddf75126ef880d1b56ea194141ea0ceb2d9e12298b74d54432cbd835358542103c96d495bfdd5ba4145e3e046fee45e84a8a48ad05bd8dbb395c011a32cf9f8802103e5dc75b59e4c67bfea266314d0b1da1e317f5b7d1e4cf1975442b79e542de74853ae'

riemann/tests/script/test_serialization.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@ def test_hex_serialize(self):
5454
def test_hex_serialize_OP_PUSHDATA1(self):
5555
self.assertEqual(
5656
ser.hex_serialize(helpers.P2SH_PUSHDATA1_SCRIPT),
57-
helpers.P2SH_PUSHDATA1_SERIALIZED)
57+
helpers.P2SH_PUSHDATA1_SERIALIZED_HEX)
5858

5959
def test_hex_deserialize_OP_PUSHDATA1(self):
6060
self.assertEqual(
61-
ser.hex_deserialize(helpers.P2SH_PUSHDATA1_SERIALIZED),
61+
ser.hex_deserialize(helpers.P2SH_PUSHDATA1_SERIALIZED_HEX),
6262
helpers.P2SH_PUSHDATA1_SCRIPT)
6363

6464
def test_hex_serialize_OP_PUSHDATA2(self):

riemann/tests/tx/test_tx.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1308,7 +1308,7 @@ def test_sighash(self):
13081308
tx_ins=tx_ins,
13091309
tx_outs=tx_outs,
13101310
lock_time=helpers.DCR_2_LOCKTIME,
1311-
expiry=helpers.DCR_2_EXPIRTY,
1311+
expiry=helpers.DCR_2_EXPIRY,
13121312
tx_witnesses=tx_witnesses)
13131313

13141314
# self.assertEqual(

0 commit comments

Comments
 (0)