Transaction

Bitcoin transaction in blockchain network.

class shuttle.providers.bitcoin.transaction.Transaction(version=2, network='testnet')

Bitcoin Transaction class.

Parameters
  • version (int) – Bitcoin transaction version, defaults to 2.

  • network (str) – Bitcoin network, defaults to testnet.

Returns

Transaction – Bitcoin transaction instance.

Note

Bitcoin has only two networks, mainnet and testnet.

fee()

Get Bitcoin transaction fee.

Returns

int – Bitcoin transaction fee.

>>> from shuttle.providers.bitcoin.transaction import ClaimTransaction
>>> from shuttle.providers.bitcoin.wallet import Wallet
>>> recipient_wallet = Wallet(network="testnet").from_passphrase("meherett")
>>> claim_transaction = ClaimTransaction(network="testnet")
>>> claim_transaction.build_transaction("1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", recipient_wallet, 10000)
>>> claim_transaction.fee()
576
hash()

Get Bitcoin transaction hash.

Returns

str – Bitcoin transaction hash or transaction id.

>>> from shuttle.providers.bitcoin.htlc import HTLC
>>> from shuttle.providers.bitcoin.transaction import FundTransaction
>>> from shuttle.providers.bitcoin.wallet import Wallet
>>> htlc = HTLC(network="testnet").init("821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e0158", "muTnffLDR5LtFeLR2i3WsKVfdyvzfyPnVB", "mphBPZf15cRFcL5tUq6mCbE84XobZ1vg7Q", 1000)
>>> sender_wallet = Wallet(network="testnet").from_passphrase("meherett")
>>> fund_transaction = FundTransaction(network="testnet")
>>> fund_transaction.build_transaction(sender_wallet, htlc, 10000)
>>> fund_transaction.hash()
"9cc0524fb8e7b2c5fecaee4eb91d43a3dc5cc18e9906abcb35a5732ff52efcc7"
json()

Get Bitcoin transaction json format.

Returns

dict – Bitcoin transaction json format.

>>> from shuttle.providers.bitcoin.transaction import RefundTransaction
>>> from shuttle.providers.bitcoin.wallet import Wallet
>>> wallet = Wallet(network="testnet").from_passphrase("meherett")
>>> refund_transaction = RefundTransaction(network="testnet")
>>> refund_transaction.build_transaction("1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", wallet, 10000)
>>> refund_transaction.json()
{"hex": "02000000012c392217483906f902e73c4bc132864de58153772d79268960998162266634be0100000000ffffffff02e80300000000000017a914971894c58d85981c16c2059d422bcde0b156d04487a6290000000000001976a9146bce65e58a50b97989930e9a4ff1ac1a77515ef188ac00000000", "txid": "9cc0524fb8e7b2c5fecaee4eb91d43a3dc5cc18e9906abcb35a5732ff52efcc7", "hash": "9cc0524fb8e7b2c5fecaee4eb91d43a3dc5cc18e9906abcb35a5732ff52efcc7", "size": 117, "vsize": 117, "version": 2, "locktime": 0, "vin": [{"txid": "be346626628199608926792d775381e54d8632c14b3ce702f90639481722392c", "vout": 1, "scriptSig": {"asm": "", "hex": ""}, "sequence": "4294967295"}], "vout": [{"value": "0.00001000", "n": 0, "scriptPubKey": {"asm": "OP_HASH160 971894c58d85981c16c2059d422bcde0b156d044 OP_EQUAL", "hex": "a914971894c58d85981c16c2059d422bcde0b156d04487", "type": "p2sh", "address": "2N729UBGZB3xjsGFRgKivy4bSjkaJGMVSpB"}}, {"value": "0.00010662", "n": 1, "scriptPubKey": {"asm": "OP_DUP OP_HASH160 6bce65e58a50b97989930e9a4ff1ac1a77515ef1 OP_EQUALVERIFY OP_CHECKSIG", "hex": "76a9146bce65e58a50b97989930e9a4ff1ac1a77515ef188ac", "type": "p2pkh", "address": "mqLyrNDjpENRMZAoDpspH7kR9RtgvhWzYE"}}]}
raw()

Get Bitcoin transaction raw.

Returns

str – Bitcoin transaction raw.

>>> from shuttle.providers.bitcoin.transaction import ClaimTransaction
>>> from shuttle.providers.bitcoin.wallet import Wallet
>>> recipient_wallet = Wallet(network="testnet").from_passphrase("meherett")
>>> claim_transaction = ClaimTransaction(network="testnet")
>>> claim_transaction.build_transaction("1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", recipient_wallet, 10000)
>>> claim_transaction.raw()
"02000000012c392217483906f902e73c4bc132864de58153772d79268960998162266634be0100000000ffffffff02e80300000000000017a914971894c58d85981c16c2059d422bcde0b156d04487a6290000000000001976a9146bce65e58a50b97989930e9a4ff1ac1a77515ef188ac00000000"
type()

Get Bitcoin signature transaction type.

Returns

str – Bitcoin signature transaction type.

>>> from shuttle.providers.bitcoin.transaction import ClaimTransaction
>>> from shuttle.providers.bitcoin.wallet import Wallet
>>> recipient_wallet = Wallet(network="testnet").from_passphrase("meherett")
>>> claim_transaction = ClaimTransaction(network="testnet")
>>> claim_transaction.build_transaction("1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", recipient_wallet, 10000)
>>> claim_transaction.type()
"bitcoin_claim_unsigned"

FundTransaction

class shuttle.providers.bitcoin.transaction.FundTransaction(version=2, network='testnet')

Bitcoin FundTransaction class.

Parameters
  • version (int) – Bitcoin transaction version, defaults to 2.

  • network (str) – Bitcoin network, defaults to testnet.

Returns

FundTransaction – Bitcoin fund transaction instance.

Warning

Do not forget to build transaction after initialize fund transaction.

build_transaction(wallet, htlc, amount, locktime=0)

Build Bitcoin fund transaction.

Parameters
  • wallet (bitcoin.wallet.Wallet) – Bitcoin sender wallet.

  • htlc (bitcoin.htlc.HTLC) – Bitcoin hash time lock contract (HTLC).

  • amount (int) – Bitcoin amount to fund.

  • locktime (int) – Bitcoin transaction lock time, defaults to 0.

Returns

FundTransaction – Bitcoin fund transaction instance.

>>> from shuttle.providers.bitcoin.htlc import HTLC
>>> from shuttle.providers.bitcoin.transaction import FundTransaction
>>> from shuttle.providers.bitcoin.wallet import Wallet
>>> htlc = HTLC(network="testnet").init("821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e0158", "muTnffLDR5LtFeLR2i3WsKVfdyvzfyPnVB", "mphBPZf15cRFcL5tUq6mCbE84XobZ1vg7Q", 1000)
>>> sender_wallet = Wallet(network="testnet").from_passphrase("meherett")
>>> fund_transaction = FundTransaction(network="testnet")
>>> fund_transaction.build_transaction(wallet=sender_wallet, htlc=htlc, amount=10000)
<shuttle.providers.bitcoin.transaction.FundTransaction object at 0x0409DAF0>
sign(solver)

Sign Bitcoin fund transaction.

Parameters

solver (bitcoin.solver.FundSolver) – Bitcoin fund solver.

Returns

FundTransaction – Bitcoin fund transaction instance.

>>> from shuttle.providers.bitcoin.htlc import HTLC
>>> from shuttle.providers.bitcoin.transaction import FundTransaction
>>> from shuttle.providers.bitcoin.solver import FundSolver
>>> from shuttle.providers.bitcoin.wallet import Wallet
>>> htlc = HTLC(network="testnet").init("821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e0158", "muTnffLDR5LtFeLR2i3WsKVfdyvzfyPnVB", "mphBPZf15cRFcL5tUq6mCbE84XobZ1vg7Q", 1000)
>>> sender_wallet = Wallet(network="testnet").from_passphrase("meherett")
>>> fund_solver = FundSolver("92cbbc5990cb5090326a76feeb321cad01048635afe5756523bbf9f7a75bf38b")
>>> fund_transaction = FundTransaction(network="testnet")
>>> fund_transaction.build_transaction(sender_wallet, htlc, 10000)
>>> fund_transaction.sign(solver=fund_solver)
<shuttle.providers.bitcoin.transaction.FundTransaction object at 0x0409DAF0>
unsigned_raw()

Get Bitcoin unsigned fund transaction raw.

Returns

str – Bitcoin unsigned fund transaction raw.

>>> from shuttle.providers.bitcoin.htlc import HTLC
>>> from shuttle.providers.bitcoin.transaction import FundTransaction
>>> from shuttle.providers.bitcoin.wallet import Wallet
>>> htlc = HTLC(network="testnet").init("821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e0158", "muTnffLDR5LtFeLR2i3WsKVfdyvzfyPnVB", "mphBPZf15cRFcL5tUq6mCbE84XobZ1vg7Q", 1000)
>>> sender_wallet = Wallet(network="testnet").from_passphrase("meherett")
>>> fund_transaction = FundTransaction(network="testnet")
>>> fund_transaction.build_transaction(sender_wallet, htlc, 10000)
>>> fund_transaction.unsigned_raw()
"eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTJjMzkyMjE3NDgzOTA2ZjkwMmU3M2M0YmMxMzI4NjRkZTU4MTUzNzcyZDc5MjY4OTYwOTk4MTYyMjY2NjM0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmU4MDMwMDAwMDAwMDAwMDAxN2E5MTQ5NzE4OTRjNThkODU5ODFjMTZjMjA1OWQ0MjJiY2RlMGIxNTZkMDQ0ODdhNjI5MDAwMDAwMDAwMDAwMTk3NmE5MTQ2YmNlNjVlNThhNTBiOTc5ODk5MzBlOWE0ZmYxYWMxYTc3NTE1ZWYxODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiAxMjM0MCwgIm4iOiAxLCAic2NyaXB0IjogIjc2YTkxNDZiY2U2NWU1OGE1MGI5Nzk4OTkzMGU5YTRmZjFhYzFhNzc1MTVlZjE4OGFjIn1dLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfdW5zaWduZWQifQ"

ClaimTransaction

class shuttle.providers.bitcoin.transaction.ClaimTransaction(network='testnet', version=2)

Bitcoin ClaimTransaction class.

Parameters
  • version (int) – Bitcoin transaction version, defaults to 2.

  • network (str) – Bitcoin network, defaults to testnet.

Returns

Transaction – Bitcoin transaction instance.

Warning

Do not forget to build transaction after initialize claim transaction.

build_transaction(transaction_id, wallet, amount, locktime=0)

Build Bitcoin claim transaction.

Parameters
  • transaction_id (str) – Bitcoin fund transaction id to redeem.

  • wallet (bitcoin.wallet.Wallet) – Bitcoin recipient wallet.

  • amount (int) – Bitcoin amount to withdraw.

  • locktime (int) – Bitcoin transaction lock time, defaults to 0.

Returns

ClaimTransaction – Bitcoin claim transaction instance.

>>> from shuttle.providers.bitcoin.transaction import ClaimTransaction
>>> from shuttle.providers.bitcoin.wallet import Wallet
>>> recipient_wallet = Wallet(network="testnet").from_passphrase("meherett")
>>> claim_transaction = ClaimTransaction(network="testnet")
>>> claim_transaction.build_transaction(transaction_id="1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", wallet=recipient_wallet, amount=10000)
<shuttle.providers.bitcoin.transaction.ClaimTransaction object at 0x0409DAF0>
sign(solver)

Sign Bitcoin claim transaction.

Parameters

solver (bitcoin.solver.ClaimSolver) – Bitcoin claim solver.

Returns

ClaimTransaction – Bitcoin claim transaction instance.

>>> from shuttle.providers.bitcoin.transaction import ClaimTransaction
>>> from shuttle.providers.bitcoin.solver import ClaimSolver
>>> from shuttle.providers.bitcoin.wallet import Wallet
>>> recipient_wallet = Wallet(network="testnet").from_passphrase("meherett")
>>> claim_solver = ClaimSolver(recipient_wallet.private_key(), "Hello Meheret!", "3a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb", recipient_wallet.address(), "mphBPZf15cRFcL5tUq6mCbE84XobZ1vg7Q", 1000)
>>> claim_transaction = ClaimTransaction(network="testnet")
>>> claim_transaction.build_transaction("1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", recipient_wallet, 10000)
>>> claim_transaction.sign(solver=claim_solver)
<shuttle.providers.bitcoin.transaction.ClaimTransaction object at 0x0409DAF0>
unsigned_raw()

Get Bitcoin unsigned claim transaction raw.

Returns

str – Bitcoin unsigned claim transaction raw.

>>> from shuttle.providers.bitcoin.transaction import ClaimTransaction
>>> from shuttle.providers.bitcoin.wallet import Wallet
>>> recipient_wallet = Wallet(network="testnet").from_passphrase("meherett")
>>> claim_transaction = ClaimTransaction(network="testnet")
>>> claim_transaction.build_transaction("1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", recipient_wallet, 10000)
>>> claim_transaction.unsigned_raw()
"eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTJjMzkyMjE3NDgzOTA2ZjkwMmU3M2M0YmMxMzI4NjRkZTU4MTUzNzcyZDc5MjY4OTYwOTk4MTYyMjY2NjM0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmU4MDMwMDAwMDAwMDAwMDAxN2E5MTQ5NzE4OTRjNThkODU5ODFjMTZjMjA1OWQ0MjJiY2RlMGIxNTZkMDQ0ODdhNjI5MDAwMDAwMDAwMDAwMTk3NmE5MTQ2YmNlNjVlNThhNTBiOTc5ODk5MzBlOWE0ZmYxYWMxYTc3NTE1ZWYxODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiAxMjM0MCwgIm4iOiAxLCAic2NyaXB0IjogIjc2YTkxNDZiY2U2NWU1OGE1MGI5Nzk4OTkzMGU5YTRmZjFhYzFhNzc1MTVlZjE4OGFjIn1dLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfdW5zaWduZWQifQ"

RefundTransaction

class shuttle.providers.bitcoin.transaction.RefundTransaction(version=2, network='testnet')

Bitcoin RefundTransaction class.

Parameters
  • version (int) – Bitcoin transaction version, defaults to 2.

  • network (str) – Bitcoin network, defaults to testnet.

Returns

Transaction – Bitcoin transaction instance.

Warning

Do not forget to build transaction after initialize refund transaction.

build_transaction(transaction_id, wallet, amount, locktime=0)

Build Bitcoin refund transaction.

Parameters
  • transaction_id (str) – Bitcoin fund transaction id to redeem.

  • wallet (bitcoin.wallet.Wallet) – Bitcoin sender wallet.

  • amount (int) – Bitcoin amount to withdraw.

  • locktime (int) – Bitcoin transaction lock time, defaults to 0.

Returns

RefundTransaction – Bitcoin refund transaction instance.

>>> from shuttle.providers.bitcoin.transaction import RefundTransaction
>>> from shuttle.providers.bitcoin.wallet import Wallet
>>> sender_wallet = Wallet(network="testnet").from_passphrase("meherett")
>>> refund_transaction = RefundTransaction(network="testnet")
>>> refund_transaction.build_transaction(transaction_id="1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", wallet=sender_wallet, amount=10000)
<shuttle.providers.bitcoin.transaction.RefundTransaction object at 0x0409DAF0>
sign(solver)

Sign Bitcoin refund transaction.

Parameters

solver (bitcoin.solver.RefundSolver) – Bitcoin refund solver.

Returns

RefundTransaction – Bitcoin refund transaction instance.

>>> from shuttle.providers.bitcoin.transaction import RefundTransaction
>>> from shuttle.providers.bitcoin.solver import RefundSolver
>>> from shuttle.providers.bitcoin.wallet import Wallet
>>> sender_wallet = Wallet(network="testnet").from_passphrase("meherett1234")
>>> refund_solver = RefundSolver(sender_wallet.private_key(), "3a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb",  "muTnffLDR5LtFeLR2i3WsKVfdyvzfyPnVB", sender_wallet.address(), 1000)
>>> refund_transaction = RefundTransaction(network="testnet")
>>> refund_transaction.build_transaction("1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", sender_wallet, 10000)
>>> refund_transaction.sign(solver=refund_solver)
<shuttle.providers.bitcoin.transaction.RefundTransaction object at 0x0409DAF0>
unsigned_raw()

Get Bitcoin unsigned refund transaction raw.

Returns

str – Bitcoin unsigned refund transaction raw.

>>> from shuttle.providers.bitcoin.transaction import RefundTransaction
>>> from shuttle.providers.bitcoin.wallet import Wallet
>>> sender_wallet = Wallet(network="testnet").from_passphrase("meherett1234")
>>> refund_transaction = RefundTransaction(network="testnet")
>>> refund_transaction.build_transaction("1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", sender_wallet, 10000)
>>> refund_transaction.unsigned_raw()
"eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTJjMzkyMjE3NDgzOTA2ZjkwMmU3M2M0YmMxMzI4NjRkZTU4MTUzNzcyZDc5MjY4OTYwOTk4MTYyMjY2NjM0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmU4MDMwMDAwMDAwMDAwMDAxN2E5MTQ5NzE4OTRjNThkODU5ODFjMTZjMjA1OWQ0MjJiY2RlMGIxNTZkMDQ0ODdhNjI5MDAwMDAwMDAwMDAwMTk3NmE5MTQ2YmNlNjVlNThhNTBiOTc5ODk5MzBlOWE0ZmYxYWMxYTc3NTE1ZWYxODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiAxMjM0MCwgIm4iOiAxLCAic2NyaXB0IjogIjc2YTkxNDZiY2U2NWU1OGE1MGI5Nzk4OTkzMGU5YTRmZjFhYzFhNzc1MTVlZjE4OGFjIn1dLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfdW5zaWduZWQifQ"