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.

hash()

Get bitcoin transaction hash.

Returns

str – bitcoin transaction hash or transaction id.

>>> transaction.hash()
"9cc0524fb8e7b2c5fecaee4eb91d43a3dc5cc18e9906abcb35a5732ff52efcc7"
json()

Get bitcoin transaction json format.

Returns

dict – bitcoin transaction json format.

>>> 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.

>>> transaction.raw()
"02000000012c392217483906f902e73c4bc132864de58153772d79268960998162266634be0100000000ffffffff02e80300000000000017a914971894c58d85981c16c2059d422bcde0b156d04487a6290000000000001976a9146bce65e58a50b97989930e9a4ff1ac1a77515ef188ac00000000"

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.

Fee

Get bitcoin fund transaction fee.

>>> fund_transaction.fee
675
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.transaction import FundTransaction
>>> fund_transaction = FundTransaction(network="testnet")
>>> fund_transaction.build_transaction(sender_wallet, htlc, 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.transaction import FundTransaction
>>> fund_transaction = FundTransaction(network="testnet")
>>> fund_transaction.build_transaction(sender_wallet, htlc, 10000)
>>> fund_transaction.sign(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.transaction import FundTransaction
>>> 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.

Fee

Get bitcoin claim transaction fee.

>>> claim_transaction.fee
675
build_transaction(transaction_id, wallet, amount, secret=None, 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.

  • secret (str) – secret key.

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

Returns

ClaimTransaction – bitcoin claim transaction instance.

>>> from shuttle.providers.bitcoin.transaction import ClaimTransaction
>>> claim_transaction = ClaimTransaction(network="testnet")
>>> claim_transaction.build_transaction(fund_transaction_id, recipient_wallet, 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
>>> claim_transaction = ClaimTransaction(network="testnet")
>>> claim_transaction.build_transaction(fund_transaction_id, recipient_wallet, 10000)
>>> claim_transaction.sign(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
>>> claim_transaction = ClaimTransaction(network="testnet")
>>> claim_transaction.build_transaction(fund_transaction_id, 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.

Fee

Get bitcoin refund transaction fee.

>>> refund_transaction.fee
675
build_transaction(transaction_id, wallet, amount, secret=None, 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.

  • secret (str) – secret passphrase.

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

Returns

RefundTransaction – bitcoin refund transaction instance.

>>> from shuttle.providers.bitcoin.transaction import RefundTransaction
>>> refund_transaction = RefundTransaction(network="testnet")
>>> refund_transaction.build_transaction(fund_transaction_id, sender_wallet, 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
>>> refund_transaction = RefundTransaction(network="testnet")
>>> refund_transaction.build_transaction(fund_transaction_id, sender_wallet, 10000)
>>> refund_transaction.sign(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
>>> refund_transaction = RefundTransaction(network="testnet")
>>> refund_transaction.build_transaction(fund_transaction_id, sender_wallet, 10000)
>>> refund_transaction.unsigned_raw()
"eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTJjMzkyMjE3NDgzOTA2ZjkwMmU3M2M0YmMxMzI4NjRkZTU4MTUzNzcyZDc5MjY4OTYwOTk4MTYyMjY2NjM0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmU4MDMwMDAwMDAwMDAwMDAxN2E5MTQ5NzE4OTRjNThkODU5ODFjMTZjMjA1OWQ0MjJiY2RlMGIxNTZkMDQ0ODdhNjI5MDAwMDAwMDAwMDAwMTk3NmE5MTQ2YmNlNjVlNThhNTBiOTc5ODk5MzBlOWE0ZmYxYWMxYTc3NTE1ZWYxODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiAxMjM0MCwgIm4iOiAxLCAic2NyaXB0IjogIjc2YTkxNDZiY2U2NWU1OGE1MGI5Nzk4OTkzMGU5YTRmZjFhYzFhNzc1MTVlZjE4OGFjIn1dLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfdW5zaWduZWQifQ"