def test_calculate_preimages(self): txin = [ TxIn(b'script', b'txid', b'\x04', b'witness', sequence=b'\xff\xff\xff\xff') ] txout = [TxOut(b'\x88\x13\x00\x00\x00\x00\x00\x00', b'script_pubkey')] txobj = TxObj(b'\x01\x00\x00\x00', txin, txout, b'\x00\x00\x00\x00') want = b'yI\x8d\x99H\xcb\xe3\x88\xce\x83}\xc1\xfc\xaf\xf7\xd5\\\xf67\x93\x86\xb5\xc7M\xd1\xdb\xd2LyJ`<' assert calculate_preimages(txobj, [(0, HASH_TYPE, False)])[0] == want want = b'\xed\x85\xc1\x0f\xc2\xb1\xc9\x05\xbf\xa6S\x15\xba$\x84\xad\x14\x8dni\x17\x1eD\xd6\xf7e\xd8\x0e\xfb\x05\x93\x1a' assert calculate_preimages(txobj, [(0, HASH_TYPE, True)])[0] == want
def test_init_segwit(self): txin = [ TxIn(b'script', b'txid', b'\x04', b'witness', sequence=b'\xff\xff\xff\xff') ] txout = [TxOut(b'\x88\x13\x00\x00\x00\x00\x00\x00', b'script_pubkey')] txobj = TxObj(b'\x01\x00\x00\x00', b'\xb0Z\xd1\\', txin, txout, b'\x00\x00\x00\x00') assert txobj.version == b'\x01\x00\x00\x00' assert txobj.timestamp == b'\xb0Z\xd1\\' assert txobj.TxIn == txin assert txobj.TxOut == txout assert txobj.locktime == b'\x00\x00\x00\x00'
def test_bytes_repr_segwit(self): txin = [ TxIn(b'script', b'txid', b'\x04', b'witness', sequence=b'\xff\xff\xff\xff') ] txout = [TxOut(b'\x88\x13\x00\x00\x00\x00\x00\x00', b'script_pubkey')] txobj = TxObj(b'\x01\x00\x00\x00', txin, txout, b'\x00\x00\x00\x00') assert bytes(txobj) == b''.join([ b'\x01\x00\x00\x00', b'\x00\x01', b'\x01txid\x04\x06script\xff\xff\xff\xff', b'\x01\x88\x13\x00\x00\x00\x00\x00\x00\rscript_pubkey', b'witness', b'\x00\x00\x00\x00' ])
def test_calculate_preimages_unsupported_hashtypes(self): txin = [ TxIn(b'script', b'txid', b'\x04', b'witness', sequence=b'\xff\xff\xff\xff') ] txout = [TxOut(b'\x88\x13\x00\x00\x00\x00\x00\x00', b'script_pubkey')] txobj = TxObj(b'\x01\x00\x00\x00', txin, txout, b'\x00\x00\x00\x00') with pytest.raises(ValueError): calculate_preimages(txobj, [(0, b'\x02\x00\x00\x00', False)]) with pytest.raises(ValueError): calculate_preimages(txobj, [(0, b'\x03\x00\x00\x00', False)]) with pytest.raises(ValueError): calculate_preimages(txobj, [(0, b'\x81\x00\x00\x00', False)]) with pytest.raises(ValueError): calculate_preimages(txobj, [(0, b'\x04\x00\x00\x00', False)])
def test_repr(self): txin = TxIn(b'script', b'\x06', b'txid', b'\x04') assert repr(txin) == "TxIn(b'script', {}, b'txid', {})" \ "".format(repr(b'\x06'), repr(b'\x04'))
def test_equality(self): txin1 = TxIn(b'script', b'\x06', b'txid', b'\x04') txin2 = TxIn(b'script', b'\x06', b'txid', b'\x04') txin3 = TxIn(b'script', b'\x06', b'txi', b'\x03') assert txin1 == txin2 assert txin1 != txin3
def test_init(self): txin = TxIn(b'script', b'\x06', b'txid', b'\x04') assert txin.script == b'script' assert txin.script_len == b'\x06' assert txin.txid == b'txid' assert txin.txindex == b'\x04'
FINAL_TX_1 = ( '01000000018878399d83ec25c627cfbf753ff9ca3602373eac437ab2676154a3c2' 'da23adf3010000008a473044022068b8dce776ef1c071f4c516836cdfb358e44ef' '58e0bf29d6776ebdc4a6b719df02204ea4a9b0f4e6afa4c229a3f11108ff66b178' '95015afa0c26c4bbc2b3ba1a1cc60141043d5c2875c9bd116875a71a5db64cffcb' '13396b163d039b1d932782489180433476a4352a2add00ebb0d5c94c515b72eb10' 'f1fd8f3f03b42f4a2b255bfc9aa9e3ffffffff0250c30000000000001976a914e7' 'c1345fc8f87c68170b3aa798a956c2fe6a9eff88ac0888fc04000000001976a914' '92461bde6283b461ece7ddf4dbf1e0a48bd113d888ac00000000') INPUTS = [ TxIn(( b"G0D\x02 E\xb7C\xdb\xaa\xaa,\xd1\xef\x0b\x914oVD\xe3-\xc7\x0c\xde\x05\t" b"\x1b7b\xd4\xca\xbbn\xbdq\x1a\x02 tF\x10V\xc2n\xfe\xac\x0bD\x8e\x7f\xa7" b"iw=\xd6\xe4Cl\xdeP\\\x8fl\xa60>\xfe1\xf0\x95\x01A\x04=\\(u\xc9\xbd\x11" b"hu\xa7\x1a]\xb6L\xff\xcb\x139k\x16=\x03\x9b\x1d\x93'\x82H\x91\x80C4v" b"\xa45**\xdd\x00\xeb\xb0\xd5\xc9LQ[r\xeb\x10\xf1\xfd\x8f?\x03\xb4/J+%[" b"\xfc\x9a\xa9\xe3"), b'\x8a', (b"\x88x9\x9d\x83\xec%\xc6'\xcf\xbfu?\xf9\xca6\x027>" b"\xacCz\xb2gaT\xa3\xc2\xda#\xad\xf3"), b'\x01\x00\x00\x00') ] INPUT_BLOCK = ( '8878399d83ec25c627cfbf753ff9ca3602373eac437ab2676154a3c2da23adf30' '10000008a473044022045b743dbaaaa2cd1ef0b91346f5644e32dc70cde05091b' '3762d4cabb6ebd711a022074461056c26efeac0b448e7fa769773dd6e4436cde5' '05c8f6ca6303efe31f0950141043d5c2875c9bd116875a71a5db64cffcb13396b' '163d039b1d932782489180433476a4352a2add00ebb0d5c94c515b72eb10f1fd8' 'f3f03b42f4a2b255bfc9aa9e3ffffffff') UNSPENTS = [ Unspent( 83727960, 15, '76a91492461bde6283b461ece7ddf4dbf1e0a48bd113d888ac',
def test_bytes_repr(self): txin = TxIn(b'script', b'txid', b'\x04', sequence=b'\xff\xff\xff\xff') assert bytes(txin) == b''.join([b'txid', b'\x04', b'\x06', b'script', b'\xff\xff\xff\xff'])
def test_repr_segwit(self): txin = TxIn(b'script', b'txid', b'\x04', b'witness', sequence=b'\xff\xff\xff\xff') assert repr(txin) == "TxIn(b'script', {}, b'txid', {}, b'witness', {}, {})" \ "".format(repr(b'\x06'), repr(b'\x04'), repr(None), repr(b'\xff\xff\xff\xff'))
def test_equality(self): txin1 = TxIn(b'script', b'txid', b'\x04', sequence=b'\xff\xff\xff\xff') txin2 = TxIn(b'script', b'txid', b'\x04', sequence=b'\xff\xff\xff\xff') txin3 = TxIn(b'script', b'txi', b'\x03', sequence=b'\xff\xff\xff\xff') assert txin1 == txin2 assert txin1 != txin3
def test_repr(self): txin = TxIn(b'script', b'txid', b'\x04', sequence=b'\xff\xff\xff\xff') assert repr(txin) == "TxIn(b'script', {}, b'txid', {}, {})" "".format( repr(b'\x06'), repr(b'\x04'), repr(b'\xff\xff\xff\xff'))