Transaction

Bytom transaction in blockchain network.

class swap.providers.bytom.transaction.Transaction(network: str = 'mainnet')

Bytom Transaction.

Parameters

network (str) – Bytom network, defaults to mainnet.

Returns

Transaction – Bytom transaction instance.

Note

Bytom has only three networks, mainnet. solonet and mainnet.

fee() → int

Get Bitcoin transaction fee.

Returns

int – Bitcoin transaction fee.

>>> from swap.providers.bytom.transaction import ClaimTransaction
>>> claim_transaction = ClaimTransaction("mainnet")
>>> claim_transaction.build_transaction("bm1q3plwvmvy4qhjmp5zffzmk50aagpujt6f5je85p", "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
>>> claim_transaction.fee()
10000000
hash() → str

Get Bytom transaction hash.

Returns

str – Bytom transaction id/hash.

>>> from swap.providers.bytom.transaction import FundTransaction
>>> fund_transaction = FundTransaction("mainnet")
>>> fund_transaction.build_transaction("bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "bm1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07q3yf5q8", 10000)
>>> fund_transaction.hash()
"2993414225f65390220730d0c1a356c14e91bca76db112d37366df93e364a492"
json() → dict

Get Bytom transaction json format.

Returns

dict – Bytom transaction json format.

>>> from swap.providers.bytom.transaction import RefundTransaction
>>> refund_transaction = RefundTransaction("mainnet")
>>> refund_transaction.build_transaction("bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "481c00212c552fbdf537fcc88c1006a69bdd3130f593965f6ff4f91818a1c6e1", 10000, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
>>> refund_transaction.json()
{"hash": "2993414225f65390220730d0c1a356c14e91bca76db112d37366df93e364a492", "status_fail": false, "size": 379, "submission_timestamp": 0, "memo": "", "inputs": [{"script": "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", "address": "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount": 2450000000, "type": "spend"}], "outputs": [{"utxo_id": "5edccebe497893c289121f9e365fdeb34c97008b9eb5a9960fe9541e7923aabc", "script": "01642091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e220ac13c0bb1445423a641754182d53f0677cd4351a0e743e6f10b35122c3d7ea01202b9a5949f5546f63a253e41cda6bffdedb527288a7e24ed953f5c2680c70d6ff741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0", "address": "smart contract", "asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount": 1000, "type": "control"}, {"utxo_id": "f8cfbb692db1963be88b09c314adcc9e19d91c6c019aa556fb7cb76ba8ffa1fa", "script": "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", "address": "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount": 2439999000, "type": "control"}], "fee": 10000000, "balances": [{"asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount": "-10001000"}], "types": ["ordinary"]}
raw() → str

Get Bytom transaction raw.

Returns

str – Bytom transaction raw.

>>> from swap.providers.bytom.transaction import ClaimTransaction
>>> claim_transaction = ClaimTransaction("mainnet")
>>> claim_transaction.build_transaction("bm1q3plwvmvy4qhjmp5zffzmk50aagpujt6f5je85p", "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
>>> claim_transaction.raw()
"070100010160015e7f2d7ecec3f61d30d0b2968973a3ac8448f0599ea20dce883b48c903c4d6e87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8091a0900901011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e20201ad01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe80701880101642091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e220ac13c0bb1445423a641754182d53f0677cd4351a0e743e6f10b35122c3d7ea01202b9a5949f5546f63a253e41cda6bffdedb527288a7e24ed953f5c2680c70d6ff741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c000013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98dcbd8b09011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a00"
type() → str

Get Bitcoin signature transaction type.

Returns

str – Bitcoin signature transaction type.

>>> from swap.providers.bytom.transaction import ClaimTransaction
>>> claim_transaction = ClaimTransaction("mainnet")
>>> claim_transaction.build_transaction("bm1q3plwvmvy4qhjmp5zffzmk50aagpujt6f5je85p", "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
>>> claim_transaction.type()
"bitcoin_claim_unsigned"
unsigned_datas(detail: bool = False) → list

Get Bytom transaction unsigned datas(messages) with instruction.

Parameters

detail (bool) – Bytom unsigned datas to see detail, defaults to False.

Returns

list – Bytom transaction unsigned datas.

>>> from swap.providers.bytom.transaction import FundTransaction
>>> from swap.providers.bytom.solver import FundSolver
>>> from swap.providers.bytom.wallet import Wallet
>>> sender_wallet = Wallet("mainnet").from_entropy("72fee73846f2d1a5807dc8c953bf79f1").from_path(DEFAULT_PATH)
>>> fund_solver = FundSolver(sender_wallet.xprivate_key())
>>> fund_transaction = FundTransaction("mainnet")
>>> fund_transaction.build_transaction(sender_wallet.address(), "bm1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07q3yf5q8", 10000)
>>> fund_transaction.unsigned_datas(solver=fund_solver)
[{'datas': ['38601bf7ce08dab921916f2c723acca0451d8904649bbec16c2076f1455dd1a2'], 'public_key': '91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2', 'network': 'mainnet', 'path': 'm/44/153/1/0/1'}]
sign(*args, **kwargs)

Bytom sign unsigned transaction datas.

Parameters
  • private_key (str) – Bytom private key, default to None.

  • xprivate_key (str) – Bytom xprivate key, default to None.

  • account (int) – Bytom derivation account, defaults to 1.

  • change (bool) – Bytom derivation change, defaults to False.

  • address (int) – Bytom derivation address, defaults to 1.

  • path (str.) – Bytom derivation path, default to None.

  • indexes (list.) – Bytom derivation indexes, default to None.

Returns

Transaction – Bytom transaction instance.

>>> from pybytom.transaction import Transaction
>>> transaction = Transaction(network="mainnet")
>>> transaction.build_transaction("bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", inputs=[...], outputs=[...])
>>> transaction.sign(xprivate_key)
<pybytom.transaction.transaction.Transaction object at 0x0409DAF0>
signatures() → list

Get Bytom transaction signatures(signed datas).

Returns

list – Bytom transaction signatures.

>>> from swap.providers.bytom.transaction import FundTransaction
>>> from swap.providers.bytom.solver import FundSolver
>>> from swap.providers.bytom.wallet import Wallet
>>> sender_wallet = Wallet("mainnet").from_entropy("72fee73846f2d1a5807dc8c953bf79f1").from_path(DEFAULT_PATH)
>>> fund_solver = FundSolver(sender_wallet.xprivate_key())
>>> fund_transaction = FundTransaction("mainnet")
>>> fund_transaction.build_transaction(sender_wallet.address(), "bm1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07q3yf5q8", 10000)
>>> fund_transaction.sign(solver=fund_solver)
>>> fund_transaction.signatures()
[['8ca69a01def05118866681bc7008971efcff40895285297e0d6bd791220a36d6ef85a11abc48438de21f0256c4f82752b66eb58100ce6b213e1af14cc130ec0e']]

FundTransaction

class swap.providers.bytom.transaction.FundTransaction(network: str = {'blockcenter': 'https://bcapi.bystack.com/bytom/v3', 'blockmeta': 'https://blockmeta.com/api/v3', 'bytom-core': 'http://localhost:9888', 'mov': 'https://ex.movapi.com/bytom/v3'})

Bytom Fund transaction.

Parameters

network (str) – Bytom network, defaults to mainnet.

Returns

FundTransaction – Bytom fund transaction instance.

Warning

Do not forget to build transaction after initialize fund transaction.

build_transaction(address: str, htlc_address: str, amount: int, asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', estimate_fee: bool = True)swap.providers.bytom.transaction.FundTransaction

Build Bytom fund transaction.

Parameters
  • address (str) – Bytom sender wallet address.

  • htlc_address (str) – Bytom Hash Time Lock Contract (HTLC) address.

  • amount (int) – Bytom amount to fund.

  • asset (str) – Bytom asset id, defaults to BTM asset.

  • estimate_fee (bool) – Estimate Vapor transaction fee, defaults to True.

Returns

FundTransaction – Bytom fund transaction instance.

>>> from swap.providers.bytom.transaction import FundTransaction
>>> fund_transaction = FundTransaction("mainnet")
>>> fund_transaction.build_transaction(address="bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", htlc_address="bm1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07q3yf5q8", amount=10000)
<swap.providers.bytom.transaction.FundTransaction object at 0x0409DAF0>
sign(solver: swap.providers.bytom.solver.FundSolver)swap.providers.bytom.transaction.FundTransaction

Sign Bytom fund transaction.

Parameters

solver (bytom.solver.FundSolver) – Bytom fund solver.

Returns

FundTransaction – Bytom fund transaction instance.

>>> from swap.providers.bytom.transaction import FundTransaction
>>> from swap.providers.bytom.solver import FundSolver
>>> from swap.providers.bytom.wallet import Wallet
>>> sender_wallet = Wallet("mainnet").from_entropy("72fee73846f2d1a5807dc8c953bf79f1").from_path(DEFAULT_PATH)
>>> fund_solver = FundSolver(sender_wallet.xprivate_key())
>>> fund_transaction = FundTransaction("mainnet")
>>> fund_transaction.build_transaction(sender_wallet.address(), "bm1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07q3yf5q8", 10000)
>>> fund_transaction.sign(solver=fund_solver)
<swap.providers.bytom.transaction.FundTransaction object at 0x0409DAF0>
transaction_raw() → str

Get Bytom fund transaction raw.

Returns

str – Bytom fund transaction raw.

>>> from swap.providers.bytom.transaction import FundTransaction
>>> fund_transaction = FundTransaction("mainnet")
>>> fund_transaction.build_transaction("bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "bm1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07q3yf5q8", 10000)
>>> fund_transaction.transaction_raw()
"eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTJjMzkyMjE3NDgzOTA2ZjkwMmU3M2M0YmMxMzI4NjRkZTU4MTUzNzcyZDc5MjY4OTYwOTk4MTYyMjY2NjM0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmU4MDMwMDAwMDAwMDAwMDAxN2E5MTQ5NzE4OTRjNThkODU5ODFjMTZjMjA1OWQ0MjJiY2RlMGIxNTZkMDQ0ODdhNjI5MDAwMDAwMDAwMDAwMTk3NmE5MTQ2YmNlNjVlNThhNTBiOTc5ODk5MzBlOWE0ZmYxYWMxYTc3NTE1ZWYxODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiAxMjM0MCwgIm4iOiAxLCAic2NyaXB0IjogIjc2YTkxNDZiY2U2NWU1OGE1MGI5Nzk4OTkzMGU5YTRmZjFhYzFhNzc1MTVlZjE4OGFjIn1dLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfdW5zaWduZWQifQ"

ClaimTransaction

class swap.providers.bytom.transaction.ClaimTransaction(network: str = 'mainnet')

Bytom Claim transaction.

Parameters

network (str) – Bytom network, defaults to mainnet.

Returns

ClaimTransaction – Bytom claim transaction instance.

Warning

Do not forget to build transaction after initialize claim transaction.

build_transaction(address: str, transaction_id: str, amount: int, asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', estimate_fee: bool = True)swap.providers.bytom.transaction.ClaimTransaction

Build Bytom claim transaction.

Parameters
  • address (str) – Bytom recipient wallet address.

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

  • amount (int) – Bytom amount to withdraw.

  • asset (str) – Bytom asset id, defaults to BTM asset.

  • estimate_fee (bool) – Estimate Vapor transaction fee, defaults to True.

Returns

ClaimTransaction – Bytom claim transaction instance.

>>> from swap.providers.bytom.transaction import ClaimTransaction
>>> claim_transaction = ClaimTransaction("mainnet")
>>> claim_transaction.build_transaction(address="bm1q3plwvmvy4qhjmp5zffzmk50aagpujt6f5je85p", transaction_id="1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", amount=10000, asset="ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
<swap.providers.bytom.transaction.ClaimTransaction object at 0x0409DAF0>
sign(solver: swap.providers.bytom.solver.ClaimSolver)swap.providers.bytom.transaction.ClaimTransaction

Sign Bytom claim transaction.

Parameters

solver (bytom.solver.ClaimSolver) – Bytom claim solver.

Returns

ClaimTransaction – Bytom claim transaction instance.

>>> from swap.providers.bytom.transaction import ClaimTransaction
>>> from swap.providers.bytom.solver import ClaimSolver
>>> from swap.providers.bytom.wallet import Wallet, DEFAULT_PATH
>>> recipient_wallet = Wallet("mainnet").from_entropy("6bc9e3bae5945876931963c2b3a3b040").from_path(DEFAULT_PATH)
>>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0"
>>> claim_solver = ClaimSolver(recipient_wallet.xprivate_key(), "Hello Meheret!", bytecode=bytecode)
>>> claim_transaction = ClaimTransaction("mainnet")
>>> claim_transaction.build_transaction(recipient_wallet.address(), "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
>>> claim_transaction.sign(solver=claim_solver)
<swap.providers.bytom.transaction.ClaimTransaction object at 0x0409DAF0>
transaction_raw() → str

Get Bytom claim transaction raw.

Returns

str – Bytom claim transaction raw.

>>> from swap.providers.bytom.transaction import ClaimTransaction
>>> claim_transaction = ClaimTransaction("mainnet")
>>> claim_transaction.build_transaction("bm1q3plwvmvy4qhjmp5zffzmk50aagpujt6f5je85p", "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
>>> claim_transaction.transaction_raw()
"eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTJjMzkyMjE3NDgzOTA2ZjkwMmU3M2M0YmMxMzI4NjRkZTU4MTUzNzcyZDc5MjY4OTYwOTk4MTYyMjY2NjM0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmU4MDMwMDAwMDAwMDAwMDAxN2E5MTQ5NzE4OTRjNThkODU5ODFjMTZjMjA1OWQ0MjJiY2RlMGIxNTZkMDQ0ODdhNjI5MDAwMDAwMDAwMDAwMTk3NmE5MTQ2YmNlNjVlNThhNTBiOTc5ODk5MzBlOWE0ZmYxYWMxYTc3NTE1ZWYxODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiAxMjM0MCwgIm4iOiAxLCAic2NyaXB0IjogIjc2YTkxNDZiY2U2NWU1OGE1MGI5Nzk4OTkzMGU5YTRmZjFhYzFhNzc1MTVlZjE4OGFjIn1dLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfdW5zaWduZWQifQ"

RefundTransaction

class swap.providers.bytom.transaction.RefundTransaction(network: str = 'mainnet')

Bytom Refund transaction.

Parameters

network (str) – Bytom network, defaults to mainnet.

Returns

RefundTransaction – Bytom refund transaction instance.

Warning

Do not forget to build transaction after initialize refund transaction.

build_transaction(address: str, transaction_id: str, amount: int, asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', estimate_fee: bool = True)swap.providers.bytom.transaction.RefundTransaction

Build Bytom refund transaction.

Parameters
  • address (str) – Bytom sender wallet address.

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

  • amount (int) – Bytom amount to withdraw.

  • asset (str) – Bytom asset id, defaults to BTM asset.

  • estimate_fee (bool) – Estimate Vapor transaction fee, defaults to True.

Returns

RefundTransaction – Bytom refund transaction instance.

>>> from swap.providers.bytom.transaction import RefundTransaction
>>> refund_transaction = RefundTransaction("mainnet")
>>> refund_transaction.build_transaction(address="bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", transaction_id="481c00212c552fbdf537fcc88c1006a69bdd3130f593965f6ff4f91818a1c6e1", amount=10000, asset="ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
<swap.providers.bytom.transaction.RefundTransaction object at 0x0409DAF0>
sign(solver: swap.providers.bytom.solver.RefundSolver)swap.providers.bytom.transaction.RefundTransaction

Sign Bytom refund transaction.

Parameters

solver (bytom.solver.RefundSolver) – Bytom refund solver.

Returns

RefundTransaction – Bytom refund transaction instance.

>>> from swap.providers.bytom.transaction import RefundTransaction
>>> from swap.providers.bytom.solver import RefundSolver
>>> from swap.providers.bytom.wallet import Wallet, DEFAULT_PATH
>>> sender_wallet = Wallet("mainnet").from_entropy("72fee73846f2d1a5807dc8c953bf79f1").from_path(DEFAULT_PATH)
>>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0"
>>> refund_solver = RefundSolver(sender_wallet.xprivate_key(), bytecode=bytecode)
>>> refund_transaction = RefundTransaction("mainnet")
>>> refund_transaction.build_transaction(sender_wallet.address(), "481c00212c552fbdf537fcc88c1006a69bdd3130f593965f6ff4f91818a1c6e1", 10000, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
>>> refund_transaction.sign(solver=refund_solver)
<swap.providers.bytom.transaction.RefundTransaction object at 0x0409DAF0>
transaction_raw() → str

Get Bytom refund transaction raw.

Returns

str – Bytom refund transaction raw.

>>> from swap.providers.bytom.transaction import RefundTransaction
>>> refund_transaction = RefundTransaction("mainnet")
>>> refund_transaction.build_transaction("bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "481c00212c552fbdf537fcc88c1006a69bdd3130f593965f6ff4f91818a1c6e1", 10000, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
>>> refund_transaction.transaction_raw()
"eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTJjMzkyMjE3NDgzOTA2ZjkwMmU3M2M0YmMxMzI4NjRkZTU4MTUzNzcyZDc5MjY4OTYwOTk4MTYyMjY2NjM0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmU4MDMwMDAwMDAwMDAwMDAxN2E5MTQ5NzE4OTRjNThkODU5ODFjMTZjMjA1OWQ0MjJiY2RlMGIxNTZkMDQ0ODdhNjI5MDAwMDAwMDAwMDAwMTk3NmE5MTQ2YmNlNjVlNThhNTBiOTc5ODk5MzBlOWE0ZmYxYWMxYTc3NTE1ZWYxODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiAxMjM0MCwgIm4iOiAxLCAic2NyaXB0IjogIjc2YTkxNDZiY2U2NWU1OGE1MGI5Nzk4OTkzMGU5YTRmZjFhYzFhNzc1MTVlZjE4OGFjIn1dLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfdW5zaWduZWQifQ"