Transaction¶
Bitcoin transaction in blockchain network.
-
class
swap.providers.bitcoin.transaction.
Transaction
(network: str = 'mainnet', version: int = 2)¶ Bitcoin Transaction.
- Parameters
network (str) – Bitcoin network, defaults to testnet.
version (int) – Bitcoin transaction version, defaults to 2.
- Returns
Transaction – Bitcoin transaction instance.
Note
Bitcoin has only two networks,
mainnet
andtestnet
.-
fee
() → int¶ Get Bitcoin transaction fee.
- Returns
int – Bitcoin transaction fee.
>>> from swap.providers.bitcoin.transaction import ClaimTransaction >>> claim_transaction = ClaimTransaction("testnet") >>> claim_transaction.build_transaction("mgokpSJoX7npmAK1Zj8ze1926CLxYDt1iF", "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000) >>> claim_transaction.fee() 576
-
hash
() → str¶ Get Bitcoin transaction hash.
- Returns
str – Bitcoin transaction id/hash.
>>> from swap.providers.bitcoin.transaction import FundTransaction >>> fund_transaction = FundTransaction("testnet") >>> fund_transaction.build_transaction("mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", "2N6kHwQy6Ph5EdKNgzGrcW2WhGHKGfmP5ae", 10000) >>> fund_transaction.hash() "9cc0524fb8e7b2c5fecaee4eb91d43a3dc5cc18e9906abcb35a5732ff52efcc7"
-
json
() → dict¶ Get Bitcoin transaction json format.
- Returns
dict – Bitcoin transaction json format.
>>> from swap.providers.bitcoin.transaction import RefundTransaction >>> refund_transaction = RefundTransaction("testnet") >>> refund_transaction.build_transaction("mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 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
() → str¶ Get Bitcoin main transaction raw.
- Returns
str – Bitcoin transaction raw.
>>> from swap.providers.bitcoin.transaction import ClaimTransaction >>> claim_transaction = ClaimTransaction("testnet") >>> claim_transaction.build_transaction("mgokpSJoX7npmAK1Zj8ze1926CLxYDt1iF", "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000) >>> claim_transaction.raw() "02000000012c392217483906f902e73c4bc132864de58153772d79268960998162266634be0100000000ffffffff02e80300000000000017a914971894c58d85981c16c2059d422bcde0b156d04487a6290000000000001976a9146bce65e58a50b97989930e9a4ff1ac1a77515ef188ac00000000"
-
type
() → str¶ Get Bitcoin signature transaction type.
- Returns
str – Bitcoin signature transaction type.
>>> from swap.providers.bitcoin.transaction import ClaimTransaction >>> claim_transaction = ClaimTransaction("testnet") >>> claim_transaction.build_transaction("mgokpSJoX7npmAK1Zj8ze1926CLxYDt1iF", "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000) >>> claim_transaction.type() "bitcoin_claim_unsigned"
FundTransaction¶
-
class
swap.providers.bitcoin.transaction.
FundTransaction
(network: str = 'mainnet', version: int = 2)¶ Bitcoin Fund transaction.
- Parameters
network (str) – Bitcoin network, defaults to testnet.
version (int) – Bitcoin transaction version, defaults to 2.
- Returns
FundTransaction – Bitcoin fund transaction instance.
Warning
Do not forget to build transaction after initialize fund transaction.
-
build_transaction
(address: str, htlc_address: str, amount: int, locktime: int = 0) → swap.providers.bitcoin.transaction.FundTransaction¶ Build Bitcoin fund transaction.
- Parameters
address (str) – Bitcoin sender address.
htlc_address (str) – Bitcoin Hash Time Lock Contract (HTLC) address.
amount (int) – Bitcoin amount to fund.
locktime (int) – Bitcoin transaction lock time, defaults to 0.
- Returns
FundTransaction – Bitcoin fund transaction instance.
>>> from swap.providers.bitcoin.transaction import FundTransaction >>> fund_transaction = FundTransaction("testnet") >>> fund_transaction.build_transaction(address="mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", htlc_address="2N6kHwQy6Ph5EdKNgzGrcW2WhGHKGfmP5ae", amount=10000) <swap.providers.bitcoin.transaction.FundTransaction object at 0x0409DAF0>
-
sign
(solver: swap.providers.bitcoin.solver.FundSolver) → swap.providers.bitcoin.transaction.FundTransaction¶ Sign Bitcoin fund transaction.
- Parameters
solver (bitcoin.solver.FundSolver) – Bitcoin fund solver.
- Returns
FundTransaction – Bitcoin fund transaction instance.
>>> from swap.providers.bitcoin.transaction import FundTransaction >>> from swap.providers.bitcoin.solver import FundSolver >>> from swap.providers.bitcoin.wallet import Wallet, DEFAULT_PATH >>> sender_wallet = Wallet("testnet").from_entropy("72fee73846f2d1a5807dc8c953bf79f1").from_path(DEFAULT_PATH) >>> fund_solver = FundSolver(sender_wallet.root_xprivate_key()) >>> fund_transaction = FundTransaction("testnet").build_transaction(sender_wallet.address(), "2N6kHwQy6Ph5EdKNgzGrcW2WhGHKGfmP5ae", 10000) >>> fund_transaction.sign(solver=fund_solver) <swap.providers.bitcoin.transaction.FundTransaction object at 0x0409DAF0>
-
transaction_raw
() → str¶ Get Bitcoin fund transaction raw.
- Returns
str – Bitcoin fund transaction raw.
>>> from swap.providers.bitcoin.transaction import FundTransaction >>> fund_transaction = FundTransaction("testnet") >>> fund_transaction.build_transaction("mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", "2N6kHwQy6Ph5EdKNgzGrcW2WhGHKGfmP5ae", 10000) >>> fund_transaction.transaction_raw() "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTJjMzkyMjE3NDgzOTA2ZjkwMmU3M2M0YmMxMzI4NjRkZTU4MTUzNzcyZDc5MjY4OTYwOTk4MTYyMjY2NjM0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmU4MDMwMDAwMDAwMDAwMDAxN2E5MTQ5NzE4OTRjNThkODU5ODFjMTZjMjA1OWQ0MjJiY2RlMGIxNTZkMDQ0ODdhNjI5MDAwMDAwMDAwMDAwMTk3NmE5MTQ2YmNlNjVlNThhNTBiOTc5ODk5MzBlOWE0ZmYxYWMxYTc3NTE1ZWYxODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiAxMjM0MCwgIm4iOiAxLCAic2NyaXB0IjogIjc2YTkxNDZiY2U2NWU1OGE1MGI5Nzk4OTkzMGU5YTRmZjFhYzFhNzc1MTVlZjE4OGFjIn1dLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfdW5zaWduZWQifQ"
ClaimTransaction¶
-
class
swap.providers.bitcoin.transaction.
ClaimTransaction
(network: str = 'mainnet', version: int = 2)¶ Bitcoin Claim transaction.
- Parameters
network (str) – Bitcoin network, defaults to testnet.
version (int) – Bitcoin transaction version, defaults to 2.
- Returns
ClaimTransaction – Bitcoin claim transaction instance.
Warning
Do not forget to build transaction after initialize claim transaction.
-
build_transaction
(address: str, transaction_id: str, amount: int, locktime: int = 0) → swap.providers.bitcoin.transaction.ClaimTransaction¶ Build Bitcoin claim transaction.
- Parameters
address (str) – Bitcoin recipient address.
transaction_id (str) – Bitcoin fund transaction id to redeem.
amount (int) – Bitcoin amount to withdraw.
locktime (int) – Bitcoin transaction lock time, defaults to 0.
- Returns
ClaimTransaction – Bitcoin claim transaction instance.
>>> from swap.providers.bitcoin.transaction import ClaimTransaction >>> claim_transaction = ClaimTransaction("testnet") >>> claim_transaction.build_transaction(address="mgokpSJoX7npmAK1Zj8ze1926CLxYDt1iF", transaction_id="1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", amount=10000) <swap.providers.bitcoin.transaction.ClaimTransaction object at 0x0409DAF0>
-
sign
(solver: swap.providers.bitcoin.solver.ClaimSolver) → swap.providers.bitcoin.transaction.ClaimTransaction¶ Sign Bitcoin claim transaction.
- Parameters
solver (bitcoin.solver.ClaimSolver) – Bitcoin claim solver.
- Returns
ClaimTransaction – Bitcoin claim transaction instance.
>>> from swap.providers.bitcoin.transaction import ClaimTransaction >>> from swap.providers.bitcoin.solver import ClaimSolver >>> from swap.providers.bitcoin.wallet import Wallet, DEFAULT_PATH >>> recipient_wallet = Wallet("testnet").from_mnemonic("6bc9e3bae5945876931963c2b3a3b040").from_path(DEFAULT_PATH) >>> bytecode = "63aa20821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e01588876a9140e259e08f2ec9fc99a92b6f66fdfcb3c7914fd6888ac6702e803b27576a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac68" >>> claim_solver = ClaimSolver(recipient_wallet.root_xprivate_key(), "Hello Meheret!", bytecode) >>> claim_transaction = ClaimTransaction("testnet") >>> claim_transaction.build_transaction(recipient_wallet.address(), "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000) >>> claim_transaction.sign(solver=claim_solver) <swap.providers.bitcoin.transaction.ClaimTransaction object at 0x0409DAF0>
-
transaction_raw
() → str¶ Get Bitcoin claim transaction raw.
- Returns
str – Bitcoin claim transaction raw.
>>> from swap.providers.bitcoin.transaction import ClaimTransaction >>> claim_transaction = ClaimTransaction("testnet") >>> claim_transaction.build_transaction("mgokpSJoX7npmAK1Zj8ze1926CLxYDt1iF", "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000) >>> claim_transaction.transaction_raw() "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTJjMzkyMjE3NDgzOTA2ZjkwMmU3M2M0YmMxMzI4NjRkZTU4MTUzNzcyZDc5MjY4OTYwOTk4MTYyMjY2NjM0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmU4MDMwMDAwMDAwMDAwMDAxN2E5MTQ5NzE4OTRjNThkODU5ODFjMTZjMjA1OWQ0MjJiY2RlMGIxNTZkMDQ0ODdhNjI5MDAwMDAwMDAwMDAwMTk3NmE5MTQ2YmNlNjVlNThhNTBiOTc5ODk5MzBlOWE0ZmYxYWMxYTc3NTE1ZWYxODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiAxMjM0MCwgIm4iOiAxLCAic2NyaXB0IjogIjc2YTkxNDZiY2U2NWU1OGE1MGI5Nzk4OTkzMGU5YTRmZjFhYzFhNzc1MTVlZjE4OGFjIn1dLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfdW5zaWduZWQifQ"
RefundTransaction¶
-
class
swap.providers.bitcoin.transaction.
RefundTransaction
(network: str = 'mainnet', version: int = 2)¶ Bitcoin Refund transaction.
- Parameters
network (str) – Bitcoin network, defaults to testnet.
version (int) – Bitcoin transaction version, defaults to 2.
- Returns
RefundTransaction – Bitcoin refund transaction instance.
Warning
Do not forget to build transaction after initialize refund transaction.
-
build_transaction
(address: str, transaction_id: str, amount: int, locktime: int = 0) → swap.providers.bitcoin.transaction.RefundTransaction¶ Build Bitcoin refund transaction.
- Parameters
address (str) – Bitcoin sender address.
transaction_id (str) – Bitcoin fund transaction id to redeem.
amount (int) – Bitcoin amount to withdraw.
locktime (int) – Bitcoin transaction lock time, defaults to 0.
- Returns
RefundTransaction – Bitcoin refund transaction instance.
>>> from swap.providers.bitcoin.transaction import RefundTransaction >>> refund_transaction = RefundTransaction("testnet") >>> refund_transaction.build_transaction(address="mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", transaction_id="1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", amount=10000) <swap.providers.bitcoin.transaction.RefundTransaction object at 0x0409DAF0>
-
sign
(solver: swap.providers.bitcoin.solver.RefundSolver) → swap.providers.bitcoin.transaction.RefundTransaction¶ Sign Bitcoin refund transaction.
- Parameters
solver (bitcoin.solver.RefundSolver) – Bitcoin refund solver.
- Returns
RefundTransaction – Bitcoin refund transaction instance.
>>> from swap.providers.bitcoin.transaction import RefundTransaction >>> from swap.providers.bitcoin.solver import RefundSolver >>> from swap.providers.bitcoin.wallet import Wallet, DEFAULT_PATH >>> sender_wallet = Wallet("testnet").from_entropy("72fee73846f2d1a5807dc8c953bf79f1").from_path(DEFAULT_PATH) >>> bytecode = "63aa20821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e01588876a9140e259e08f2ec9fc99a92b6f66fdfcb3c7914fd6888ac6702e803b27576a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac68" >>> refund_solver = RefundSolver(sender_wallet.root_xprivate_key(), bytecode, sequence=1000) >>> refund_transaction = RefundTransaction("testnet") >>> refund_transaction.build_transaction(sender_wallet.address(), "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000) >>> refund_transaction.sign(solver=refund_solver) <swap.providers.bitcoin.transaction.RefundTransaction object at 0x0409DAF0>
-
transaction_raw
() → str¶ Get Bitcoin refund transaction raw.
- Returns
str – Bitcoin refund transaction raw.
>>> from swap.providers.bitcoin.transaction import RefundTransaction >>> refund_transaction = RefundTransaction("testnet") >>> refund_transaction.build_transaction("mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000) >>> refund_transaction.transaction_raw() "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTJjMzkyMjE3NDgzOTA2ZjkwMmU3M2M0YmMxMzI4NjRkZTU4MTUzNzcyZDc5MjY4OTYwOTk4MTYyMjY2NjM0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmU4MDMwMDAwMDAwMDAwMDAxN2E5MTQ5NzE4OTRjNThkODU5ODFjMTZjMjA1OWQ0MjJiY2RlMGIxNTZkMDQ0ODdhNjI5MDAwMDAwMDAwMDAwMTk3NmE5MTQ2YmNlNjVlNThhNTBiOTc5ODk5MzBlOWE0ZmYxYWMxYTc3NTE1ZWYxODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiAxMjM0MCwgIm4iOiAxLCAic2NyaXB0IjogIjc2YTkxNDZiY2U2NWU1OGE1MGI5Nzk4OTkzMGU5YTRmZjFhYzFhNzc1MTVlZjE4OGFjIn1dLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfdW5zaWduZWQifQ"