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