def test_segwit_transaction(self):
     outputs = [
         ("2NEcbT1xeB7488HqpmXeC2u5zqYFQ5n4x5Q", 50000000),
         ("2N21Gzex7WJCzzsA5D33nofcnm1dYSKuJzT", 149990000),
     ]
     private_key = PrivateKeyTestnet(WALLET_FORMAT_TEST_1)
     tx = create_new_transaction(private_key, UNSPENTS_SEGWIT, outputs)
     assert tx == FINAL_TX_SEGWIT
Exemple #2
0
 def test_multisig_tx_many_inputs(self):
     key1 = PrivateKeyTestnet(WALLET_FORMAT_TEST_1)
     key2 = PrivateKeyTestnet(WALLET_FORMAT_TEST_2)
     p = [key1.public_key.hex(), key2.public_key.hex()]
     multi1 = MultiSigTestnet(key1, p, 2)
     multi2 = MultiSigTestnet(key2, p, 2)
     tx0 = create_new_transaction(
         multi1, UNSPENTS_MULTISIG_MANY,
         [("bcrt1qpm3x3jrdqhefptw3hlymmlpejttct08zgzzd2t", 4000000000),
          ("2NCWeVbWmaUp92dSFP3RddPk6r3GTd6cDd6", 999971920)])
     tx1 = multi2.sign_transaction(tx0, unspents=UNSPENTS_MULTISIG_MANY)
     assert tx1 == FINAL_TX_MULTISIG_MANY
Exemple #3
0
 def test_batch_and_multisig_tx(self):
     key1 = PrivateKeyTestnet(WALLET_FORMAT_TEST_1)
     key2 = PrivateKeyTestnet(WALLET_FORMAT_TEST_2)
     p = [key1.public_key.hex(), key2.public_key.hex()]
     multi1 = MultiSigTestnet(key1, p, 2)
     multi2 = MultiSigTestnet(key2, p, 2)
     tx0 = create_new_transaction(
         multi2, UNSPENTS_BATCH,
         [("bcrt1qpm3x3jrdqhefptw3hlymmlpejttct08zgzzd2t", 4000000000),
          ("2NCWeVbWmaUp92dSFP3RddPk6r3GTd6cDd6", 999971920)])
     tx1 = key1.sign_transaction(tx0, unspents=UNSPENTS_BATCH)
     tx2 = multi1.sign_transaction(tx1, unspents=UNSPENTS_BATCH[::-1])
     assert tx2 == FINAL_TX_BATCH
Exemple #4
0
    def test_dont_overwrite_relative_locktime(self):
        # opting in for RBF shouldn't overwrite a relative locktime
        unspents = []
        for unspent in UNSPENTS_RBF:
            locked_unspent = Unspent.from_dict(unspent.to_dict())
            locked_unspent.sequence = 50000
            locked_unspent.opt_in_for_RBF()
            unspents.append(locked_unspent)

        rbf_tx = create_new_transaction(PrivateKey(), unspents, OUTPUTS_RBF)
        START = 8  # exclude transaction version
        END = len(
            rbf_tx) - 12  # exlude locktime and 2x one byte of empty witness
        assert rbf_tx[START:END] != FINAL_TX_RBF[START:END]
Exemple #5
0
    def test_opt_in_for_RBF(self):
        # test based on tx 4162a41175658e76ae5d22f02739932c9997caaeaeaa1e1db30f352f926aa97a, mined in block 640001

        unspents = []
        for unspent in UNSPENTS_RBF:
            replaceable_unspent = Unspent.from_dict(unspent.to_dict())
            replaceable_unspent.opt_in_for_RBF()
            unspents.append(replaceable_unspent)

        rbf_tx = create_new_transaction(PrivateKey(), unspents, OUTPUTS_RBF)
        START = 8  # exclude transaction version
        END = len(
            rbf_tx) - 12  # exlude locktime and 2x one byte of empty witness
        assert rbf_tx[START:END] == FINAL_TX_RBF[START:END]
Exemple #6
0
 def test_matching(self):
     private_key = PrivateKey(WALLET_FORMAT_MAIN)
     tx = create_new_transaction(private_key, UNSPENTS, OUTPUTS)
     assert tx[-288:] == FINAL_TX_1[-288:]