Swap¶
Swap¶
Cryptocurrencies were created to make it possible for advanced, encrypted payments to be made between two or more people digitally, without the parties involved having to trust each other for the payment be completed. In other words, cryptocurrencies make it possible to send money reliably to other people over the internet without the money being double spent, and without people getting scammed out of their money when they try to make these digital payments.
Note
Hash Time Lock Contracts (HTLC’s) are a perfect example of a payment technology for cryptocurrencies which makes all of the aforementioned things possible.
Swap is a python library for Cross-chain atomic swap between the networks of two cryptocurrencies. Cross-chain atomic swap are the cheapest and most secure way to swap cryptocurrencies. It’s a brand new decentralized payment environment based on Hash Time Lock Contracts (HTLC’s) protocol.
What is a HTLC?¶
A Hash Time Lock contract (HTLC) is essentially a type of payment in which two people agree to a financial arrangement where one party will pay the other party a certain amount of Cryptocurrency, such as Bitcoin or Bytom assets. However, because these contracts are Time Locked, the receiving party only has a certain amount of time to accept the payment, otherwise the money can be returned to the sender.
Hash time lock contracts can help to eliminate the need for third parties in contracts between two parties. Third parties that are often involved in contracts are lawyers, banks, etc. Lawyers are often required to draw up contracts, and banks are often required to help store money and then transfer it to the receiving party in the contract.
With hash time lock contracts, two parties could hypothetically set up contracts and transfer money without the need for third parties. This is because the sending party could create the conditional payment, and then the receiving party could agree to it, receive it, and help validate the transaction in the process.
This could potentially revolutionize the way that many businesses interact with one another and dramatically speed up the time that it takes for business deals to be set up.
How do HTLC work?¶
The way that Hash Time Lock Contracts work is that the person who will be making the payment sets up a specific hash, which represents the amount of money that will be paid. To receive the payment, the recipient will have to create a cryptographic proof of payment, and he or she will have to do this within the specified amount of time. The amount of time that the recipient has to accept the payment can vary significantly from one Time Locked contract to the next. If the recipient meets the deadline, then the money will be theirs, if he or she fails to meet the deadline, it won’t. So, there is an often a lot at stake when it comes to meeting deadlines from hash Time Locked contracts, when Cryptocurrencies are being exchanged.
The amount of time that the recipient has to accept the payment can vary significantly from one Time Locked contract to the next. If the recipient meets the deadline, then the money will be theirs, if he or she fails to meet the deadline, it won’t. So, there is an often a lot at stake when it comes to meeting deadlines from hash Time Locked contracts, when Cryptocurrencies are being exchanged.

A Hash Time Lock Contract or HTLC is a class of payments that uses Hash Locked and Time Locked to require that the receiver of a payment either acknowledge receiving the payment prior to a deadline by generating cryptographic proof of payment or forfeit the ability to claim the payment, returning(refunding) it to the payer.
Hash Time Lock Contracts (HTLCs) allow payments to be securely routed across multiple payment channels which is super important because it is not optimal for a person to open a payment channel with everyone he/she is transacting with.
Hash Locked¶
A Hash Locked functions like “two-factor authentication” (2FA). It requires the intended recipient to provide the correct secret passphrase to claim the funds.

Time Locked¶
A Time Locked adds a “timeout” expiration date to a payment. It requires the intended recipient to claim the funds prior to the expiry. Otherwise, the transaction defaults to enabling the original sender of funds to claim a refund.

Benefits of HTLC’s¶
There are many benefits to these types of contracts. First, because they are time sensitive, it prevents the person who is making the payment from having to wait indefinitely to find out whether or not his or her payment goes through. Second, the person who makes the payment will not have to waste his or her money if the payment is not accepted. It will simply be returned.
Time Sensitivity¶
The time sensitive nature of the transaction prevents the sender from having to wait forever to find out whether their payment went through. If the time runs out, the funds will just be sent back to the sender, so they don’t have to worry and can wait for the process to unfold.
Trustless system¶
As is the case with all smart contracts, trust is not needed as the rules are already coded into the contract itself. Hash Time Lock Contracts take this one step further by implementing a time limit for recipients to acknowledge the payment.
Validation of the Blockchain¶
Transactions are validated because of the cryptographic proof of payment required by the receiver.
Private Information’s¶
There are no complicated account setups or KYC/AML restrictions. Trade directly from your wallet with a counterparty of your choice. Only the parties involved know the details of the trade.
Trading across multiple Cryptocurrencies¶
HTLC makes Cross-chain transactions easier and more secure than ever. Cross chain transactions are the next step in the evolution of Cryptocurrency adoption. The easier it becomes to unite the hundreds of blockchain’s that currently exist in silos, the faster the technology as a whole can begin to scale and achieve mass adoption.
Installing Swap¶
The easiest way to install Swap is via pip:
$ pip install swap
If you want to run the latest version of the code, you can install from git:
$ pip install git+git://github.com/meherett/swap.git
For the versions available, see the tags on this repository.
Development¶
We welcome pull requests. To get started, just fork this github repository, clone it locally, and run:
$ pip install -e . -r requirements.txt
Once you have installed, type swap
to verify that it worked:
$ swap
Usage: swap [OPTIONS] COMMAND [ARGS]...
Options:
-v, --version Show Swap version and exit.
-h, --help Show this message and exit.
Commands:
bitcoin Select Bitcoin provider.
bytom Select Bytom provider.
vapor Select Vapor provider.
Dependencies¶
Swap has the following dependencies:
bytom-wallet-desktop - version 1.1.0 or greater.
vapor-wallet-desktop - version 1.1.7 or greater.
pip - To install packages from the Python Package Index and other indexes
python3 version 3.6 or greater, python3-dev
Command Line Interface (CLI)¶
After you have installed, type swap
to verify that it worked:
$ swap
Usage: swap [OPTIONS] COMMAND [ARGS]...
Options:
-v, --version Show Shuttle version and exit.
-h, --help Show this message and exit.
Commands:
bitcoin Select Bitcoin provider.
bytom Select Bytom provider.
vapor Select Vapor provider.
swap¶
swap [OPTIONS] COMMAND [ARGS]...
Options
-
-v
,
--version
¶
Show Swap version and exit.
bitcoin¶
Select Bitcoin provider.
swap bitcoin [OPTIONS] COMMAND [ARGS]...
claim¶
Select Bitcoin Claim transaction builder.
swap bitcoin claim [OPTIONS]
Options
-
-a
,
--address
<address>
¶ Required Set Bitcoin recipient address.
-
-ti
,
--transaction-id
<transaction_id>
¶ Required Set Bitcoin funded transaction id/hash.
-
-am
,
--amount
<amount>
¶ Required Set Bitcoin amount (SATOSHI).
-
-n
,
--network
<network>
¶ Set Bitcoin network.
- Default
mainnet
-
-v
,
--version
<version>
¶ Set Bitcoin transaction version.
- Default
2
decode¶
Select Bitcoin transaction raw decoder.
swap bitcoin decode [OPTIONS]
Options
-
-tr
,
--transaction-raw
<transaction_raw>
¶ Required Set Bitcoin transaction raw.
-
-i
,
--indent
<indent>
¶ Set json indent.
- Default
4
-
-o
,
--offline
<offline>
¶ Set Offline decode transaction raw.
- Default
True
fund¶
Select Bitcoin Fund transaction builder.
swap bitcoin fund [OPTIONS]
Options
-
-a
,
--address
<address>
¶ Required Set Bitcoin sender address.
-
-ha
,
--htlc-address
<htlc_address>
¶ Required Set Bitcoin Hash Time Lock Contract (HTLC) address.
-
-am
,
--amount
<amount>
¶ Required Set Bitcoin amount (SATOSHI).
-
-n
,
--network
<network>
¶ Set Bitcoin network.
- Default
mainnet
-
-v
,
--version
<version>
¶ Set Bitcoin transaction version.
- Default
2
htlc¶
Select Bitcoin Hash Time Lock Contract (HTLC) builder.
swap bitcoin htlc [OPTIONS]
Options
-
-sh
,
--secret-hash
<secret_hash>
¶ Required Set secret 256 hash.
-
-ra
,
--recipient-address
<recipient_address>
¶ Required Set Bitcoin recipient address.
-
-sa
,
--sender-address
<sender_address>
¶ Required Set Bitcoin sender address.
-
-s
,
--sequence
<sequence>
¶ Set Bitcoin sequence/expiration block.
- Default
1000
-
-n
,
--network
<network>
¶ Set Bitcoin network.
- Default
mainnet
refund¶
Select Bitcoin Refund transaction builder.
swap bitcoin refund [OPTIONS]
Options
-
-a
,
--address
<address>
¶ Required Set Bitcoin sender address.
-
-ti
,
--transaction-id
<transaction_id>
¶ Required Set Bitcoin funded transaction id/hash.
-
-am
,
--amount
<amount>
¶ Required Set Bitcoin amount (SATOSHI).
-
-n
,
--network
<network>
¶ Set Bitcoin network.
- Default
mainnet
-
-v
,
--version
<version>
¶ Set Bitcoin transaction version.
- Default
2
sign¶
Select Bitcoin transaction raw signer.
swap bitcoin sign [OPTIONS]
Options
-
-rxk
,
--root-xprivate-key
<root_xprivate_key>
¶ Required Set Bitcoin root xprivate key.
-
-tr
,
--transaction-raw
<transaction_raw>
¶ Required Set Bitcoin unsigned transaction raw.
-
-b
,
--bytecode
<bytecode>
¶ Set Bitcoin witness HTLC bytecode. [default: None]
-
-sk
,
--secret-key
<secret_key>
¶ Set secret key. [default: None]
-
-s
,
--sequence
<sequence>
¶ Set Bitcoin sequence/expiration block.
- Default
1000
-
-ac
,
--account
<account>
¶ Set Bitcoin derivation from account.
- Default
1
-
-ch
,
--change
<change>
¶ Set Bitcoin derivation from change.
- Default
False
-
-ad
,
--address
<address>
¶ Set Bitcoin derivation from address.
- Default
1
-
-p
,
--path
<path>
¶ Set Bitcoin derivation from path. [default: None]
-
-v
,
--version
<version>
¶ Set Bitcoin transaction version.
- Default
2
bytom¶
Select Bytom provider.
swap bytom [OPTIONS] COMMAND [ARGS]...
claim¶
Select Bytom Claim transaction builder.
swap bytom claim [OPTIONS]
Options
-
-a
,
--address
<address>
¶ Required Set Bytom recipient address.
-
-ti
,
--transaction-id
<transaction_id>
¶ Required Set Bytom funded transaction id/hash.
-
-am
,
--amount
<amount>
¶ Required Set Bytom amount (NEU).
-
-as
,
--asset
<asset>
¶ Set Bytom asset id.
- Default
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-
-n
,
--network
<network>
¶ Set Bitcoin network.
- Default
mainnet
decode¶
Select Bytom transaction raw decoder.
swap bytom decode [OPTIONS]
Options
-
-tr
,
--transaction-raw
<transaction_raw>
¶ Required Set Bytom transaction raw.
-
-i
,
--indent
<indent>
¶ Set json indent.
- Default
4
fund¶
Select Bytom Fund transaction builder.
swap bytom fund [OPTIONS]
Options
-
-a
,
--address
<address>
¶ Required Set Bytom sender address.
-
-ha
,
--htlc-address
<htlc_address>
¶ Required Set Bytom Hash Time Lock Contract (HTLC) address.
-
-am
,
--amount
<amount>
¶ Required Set Bytom amount (NEU).
-
-as
,
--asset
<asset>
¶ Set Bytom asset id.
- Default
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-
-n
,
--network
<network>
¶ Set Bitcoin network.
- Default
mainnet
htlc¶
Select Bytom Hash Time Lock Contract (HTLC) builder.
swap bytom htlc [OPTIONS]
Options
-
-sh
,
--secret-hash
<secret_hash>
¶ Required Set secret 256 hash.
-
-rpk
,
--recipient-public-key
<recipient_public_key>
¶ Required Set Bytom recipient public key.
-
-spk
,
--sender-public-key
<sender_public_key>
¶ Required Set Bytom sender public key.
-
-s
,
--sequence
<sequence>
¶ Set Bytom sequence/expiration block.
- Default
1000
-
-n
,
--network
<network>
¶ Set Bytom network.
- Default
mainnet
refund¶
Select Bytom Refund transaction builder.
swap bytom refund [OPTIONS]
Options
-
-a
,
--address
<address>
¶ Required Set Bytom sender address.
-
-ti
,
--transaction-id
<transaction_id>
¶ Required Set Bytom funded transaction id/hash.
-
-am
,
--amount
<amount>
¶ Required Set Bytom amount (NEU).
-
-as
,
--asset
<asset>
¶ Set Bytom asset id.
- Default
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-
-n
,
--network
<network>
¶ Set Bitcoin network.
- Default
mainnet
sign¶
Select Bytom transaction raw signer.
swap bytom sign [OPTIONS]
Options
-
-xk
,
--xprivate-key
<xprivate_key>
¶ Required Set Bytom xprivate key.
-
-tr
,
--transaction-raw
<transaction_raw>
¶ Required Set Bytom unsigned transaction raw.
-
-b
,
--bytecode
<bytecode>
¶ Set Bytom witness HTLC bytecode. [default: None]
-
-sk
,
--secret-key
<secret_key>
¶ Set secret key. [default: None]
-
-ac
,
--account
<account>
¶ Set Bytom derivation from account.
- Default
1
-
-ch
,
--change
<change>
¶ Set Bytom derivation from change.
- Default
False
-
-ad
,
--address
<address>
¶ Set Bytom derivation from address.
- Default
1
-
-p
,
--path
<path>
¶ Set Bytom derivation from path. [default: None]
-
-i
,
--indexes
<indexes>
¶ Set Bytom derivation from indexes. [default: None]
vapor¶
Select Vapor provider.
swap vapor [OPTIONS] COMMAND [ARGS]...
claim¶
Select Vapor Claim transaction builder.
swap vapor claim [OPTIONS]
Options
-
-a
,
--address
<address>
¶ Required Set Vapor recipient address.
-
-ti
,
--transaction-id
<transaction_id>
¶ Required Set Vapor funded transaction id/hash.
-
-am
,
--amount
<amount>
¶ Required Set Vapor amount (NEU).
-
-as
,
--asset
<asset>
¶ Set Vapor asset id.
- Default
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-
-n
,
--network
<network>
¶ Set Bitcoin network.
- Default
mainnet
decode¶
Select Vapor transaction raw decoder.
swap vapor decode [OPTIONS]
Options
-
-tr
,
--transaction-raw
<transaction_raw>
¶ Required Set Vapor transaction raw.
-
-i
,
--indent
<indent>
¶ Set json indent.
- Default
4
fund¶
Select Vapor Fund transaction builder.
swap vapor fund [OPTIONS]
Options
-
-a
,
--address
<address>
¶ Required Set Vapor sender address.
-
-ha
,
--htlc-address
<htlc_address>
¶ Required Set Vapor Hash Time Lock Contract (HTLC) address.
-
-am
,
--amount
<amount>
¶ Required Set Vapor amount (NEU).
-
-as
,
--asset
<asset>
¶ Set Vapor asset id.
- Default
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-
-n
,
--network
<network>
¶ Set Bitcoin network.
- Default
mainnet
htlc¶
Select Vapor Hash Time Lock Contract (HTLC) builder.
swap vapor htlc [OPTIONS]
Options
-
-sh
,
--secret-hash
<secret_hash>
¶ Required Set secret 256 hash.
-
-rpk
,
--recipient-public-key
<recipient_public_key>
¶ Required Set Vapor recipient public key.
-
-spk
,
--sender-public-key
<sender_public_key>
¶ Required Set Vapor sender public key.
-
-s
,
--sequence
<sequence>
¶ Set Vapor sequence/expiration block.
- Default
1000
-
-n
,
--network
<network>
¶ Set Vapor network.
- Default
mainnet
refund¶
Select Vapor Refund transaction builder.
swap vapor refund [OPTIONS]
Options
-
-a
,
--address
<address>
¶ Required Set Vapor sender address.
-
-ti
,
--transaction-id
<transaction_id>
¶ Required Set Vapor funded transaction id/hash.
-
-am
,
--amount
<amount>
¶ Required Set Vapor amount (NEU).
-
-as
,
--asset
<asset>
¶ Set Vapor asset id.
- Default
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-
-n
,
--network
<network>
¶ Set Bitcoin network.
- Default
mainnet
sign¶
Select Vapor transaction raw signer.
swap vapor sign [OPTIONS]
Options
-
-xk
,
--xprivate-key
<xprivate_key>
¶ Required Set Vapor xprivate key.
-
-tr
,
--transaction-raw
<transaction_raw>
¶ Required Set Vapor unsigned transaction raw.
-
-b
,
--bytecode
<bytecode>
¶ Set Vapor witness HTLC bytecode. [default: None]
-
-sk
,
--secret-key
<secret_key>
¶ Set secret key. [default: None]
-
-ac
,
--account
<account>
¶ Set Vapor derivation from account.
- Default
1
-
-ch
,
--change
<change>
¶ Set Vapor derivation from change.
- Default
False
-
-ad
,
--address
<address>
¶ Set Vapor derivation from address.
- Default
1
-
-p
,
--path
<path>
¶ Set Vapor derivation from path. [default: None]
-
-i
,
--indexes
<indexes>
¶ Set Vapor derivation from indexes. [default: None]
Utils¶
-
swap.utils.
generate_passphrase
(length: int = 32) → str¶ Generate entropy hex string.
- Parameters
length (int) – Passphrase length, default to 32.
- Returns
str – Passphrase hex string.
>>> from swap.utils import generate_passphrase >>> generate_passphrase(length=32) "N39rPfa3QvF2Tm2nPyoBpXNiBFXJywTz"
-
swap.utils.
generate_entropy
(strength: int = 128) → str¶ Generate entropy hex string.
- Parameters
strength (int) – Entropy strength, default to 128.
- Returns
str – Entropy hex string.
>>> from swap.utils import generate_entropy >>> generate_entropy(strength=128) "ee535b143b0d9d1f87546f9df0d06b1a"
-
swap.utils.
generate_mnemonic
(language: str = 'english', strength: int = 128) → str¶ Generate 12 word mnemonic.
- Parameters
language (str) – Mnemonic language, default to english.
strength (int) – Entropy strength, default to 128.
- Returns
str – Mnemonic words.
>>> from swap.utils import generate_mnemonic >>> generate_mnemonic(language="french") "sceptre capter séquence girafe absolu relatif fleur zoologie muscle sirop saboter parure"
-
swap.utils.
is_mnemonic
(mnemonic: str, language: Optional[str] = None) → bool¶ Check mnemonic.
- Parameters
mnemonic (str) – Mnemonic words.
language (str) – Mnemonic language, default to None.
- Returns
bool – Mnemonic valid/invalid.
>>> from swap.utils import is_mnemonic >>> is_mnemonic(mnemonic="sceptre capter séquence girafe absolu relatif fleur zoologie muscle sirop saboter parure") True
-
swap.utils.
get_mnemonic_language
(mnemonic: str) → str¶ Get mnemonic language.
- Parameters
mnemonic (str) – Mnemonic words.
- Returns
str – Mnemonic language.
>>> from swap.utils import get_mnemonic_language >>> get_mnemonic_language(mnemonic="sceptre capter séquence girafe absolu relatif fleur zoologie muscle sirop saboter parure") "french"
-
swap.utils.
sha256
(data: Union[str, bytes]) → str¶ SHA256 hash.
- Parameters
data (str, bytes) – Any string/bytes data.
- Returns
str – SHA256 hash.
>>> from swap.utils import sha256 >>> sha256(data="Hello Meheret!") "3a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb"
-
swap.utils.
double_sha256
(data: Union[str, bytes]) → str¶ Double SHA256 hash.
- Parameters
data (str, bytes) – Any string/bytes data.
- Returns
str – Double SHA256 hash.
>>> from swap.utils import double_sha256 >>> double_sha256(data="Hello Meheret!") "821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e0158"
-
swap.utils.
clean_transaction_raw
(transaction_raw: str) → str¶ Clean transaction raw.
- Parameters
transaction_raw (str) – Any transaction raw.
- Returns
str – Cleaned transaction raw.
>>> from swap.utils import clean_transaction_raw >>> clean_transaction_raw(transaction_raw="eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0") "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0="
Bitcoin¶
Bitcoin is a Cryptocurrency. It is a decentralized digital currency without a central bank or single administrator that can be sent from user to user on the peer-to-peer bitcoin network without the need for intermediaries.
Wallet¶
The implementation of Hierarchical Deterministic (HD) wallets generator for Bitcoin blockchain.
-
class
swap.providers.bitcoin.wallet.
Wallet
(network: str = 'mainnet')¶ Bitcoin Wallet class.
- Parameters
network (str) – Bitcoin network, defaults to mainnet.
- Returns
Wallet – Bitcoin wallet instance.
Note
Bitcoin has only two networks,
mainnet
andmainnet
.-
from_entropy
(entropy: str, language: str = 'english', passphrase: Optional[str] = None) → swap.providers.bitcoin.wallet.Wallet¶ Initialize wallet from entropy.
- Parameters
entropy (str) – Bitcoin wallet entropy.
language (str) – Bitcoin wallet language, default to english.
passphrase (str) – Bitcoin wallet passphrase, default to None.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
-
from_mnemonic
(mnemonic: str, language: Optional[str] = None, passphrase: Optional[str] = None) → swap.providers.bitcoin.wallet.Wallet¶ Initialize wallet from mnemonic.
- Parameters
mnemonic (str) – Bitcoin wallet mnemonic.
language (str) – Bitcoin wallet language, default to english.
passphrase (str) – Bitcoin wallet passphrase, default to None.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_mnemonic("indicate warm sock mistake code spot acid ribbon sing over taxi toast") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
-
from_seed
(seed: str) → swap.providers.bitcoin.wallet.Wallet¶ Initialize wallet from seed.
- Parameters
seed (str) – Bitcoin wallet seed.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_seed("baff3e1fe60e1f2a2d840d304acc98d1818140c79354a353b400fb019bfb256bc392d7aa9047adff1f14bce0342e14605c6743a6c08e02150588375eb2eb7d49") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
-
from_root_xprivate_key
(root_xprivate_key: str) → swap.providers.bitcoin.wallet.Wallet¶ Initialize wallet from root xprivate key.
- Parameters
root_xprivate_key (str) – Bitcoin wallet root xprivate key.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_root_xprivate_key("tprv8ZgxMBicQKsPeLxEBy2sJ8CqLdc76FUzeaiY5egrW4JdpM4F9b9A3L6AQhsY1TRsqJAfTdH7DdRAt5hRdcdhn5LnMZPiaGRR7Snrmd8CLqR") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
-
from_xprivate_key
(xprivate_key: str) → swap.providers.bitcoin.wallet.Wallet¶ Initialize wallet from xprivate key.
- Parameters
xprivate_key (str) – Bitcoin wallet xprivate key.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_xprivate_key("tprv8kPCFydoWU9ybQunXq7g17Me57ac5gcj8RartGqetP4wAnoDHQAVnLY4RtbYE3WH6xBLHbBJ1VZcRutM712SRQkLFM2PCeoKfsPpndYUajZ") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
-
from_wif
(wif: str) → swap.providers.bitcoin.wallet.Wallet¶ Initialize wallet from wallet important format (WIF).
- Parameters
wif (str) – Bitcoin wallet important format.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_wif("cTQpBvBAavuh6VzpeXiutLLTA5Uckr4eAJKuFsBMU1aQXBye1Z9n") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
-
from_private_key
(private_key) → swap.providers.bitcoin.wallet.Wallet¶ Initialize wallet from private key.
- Parameters
private_key (str) – Bitcoin wallet private key.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_private_key("adf0218f7e7276ed0f40b6919f2473497dd2bf7dcd4cabff4d4ef0e11948cde7") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
-
from_path
(path: str) → swap.providers.bitcoin.wallet.Wallet¶ Drive Bitcoin wallet from path.
- Parameters
path (str) – Bitcoin wallet path.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
-
from_index
(index: int, harden: bool = False) → swap.providers.bitcoin.wallet.Wallet¶ Drive Bitcoin wallet from index.
- Parameters
index (int) – Bitcoin wallet index.
harden (bool) – Use harden, default to False.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_index(44, harden=True) >>> wallet.from_index(0, harden=True) >>> wallet.from_index(0, harden=True) >>> wallet.from_index(0) >>> wallet.from_index(0) <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268>
-
clean_derivation
() → swap.providers.bitcoin.wallet.Wallet¶ Clean derivation Bitcoin wallet.
- Returns
Wallet – Bitcoin wallet instance.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.path() "m/44'/0'/0'/0/0" >>> wallet.clean_derivation() <swap.providers.bitcoin.wallet.Wallet object at 0x040DA268> >>> wallet.path() None
-
strength
() → Optional[int]¶ Get Bitcoin wallet strength.
- Returns
int – Bitcoin wallet strength.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.strength() 128
-
entropy
() → Optional[str]¶ Get Bitcoin wallet entropy.
- Returns
str – Bitcoin wallet entropy.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.entropy() "72fee73846f2d1a5807dc8c953bf79f1"
-
mnemonic
() → Optional[str]¶ Get Bitcoin wallet mnemonic.
- Returns
str – Bitcoin wallet mnemonic.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.mnemonic() "indicate warm sock mistake code spot acid ribbon sing over taxi toast"
-
passphrase
() → Optional[str]¶ Get Bitcoin wallet passphrase.
- Returns
str – Bitcoin wallet passphrase.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1", passphrase="meherett") >>> wallet.passphrase() "meherett"
-
language
() → Optional[str]¶ Get Bitcoin wallet language.
- Returns
str – Bitcoin wallet language.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.language() "english"
-
seed
() → Optional[str]¶ Get Bitcoin wallet seed.
- Returns
str – Bitcoin wallet seed.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.seed() "baff3e1fe60e1f2a2d840d304acc98d1818140c79354a353b400fb019bfb256bc392d7aa9047adff1f14bce0342e14605c6743a6c08e02150588375eb2eb7d49"
-
root_xprivate_key
(encoded: bool = True) → Optional[str]¶ Get Bitcoin wallet root xprivate key.
- Parameters
encoded (bool) – Encoded root xprivate key, default to True.
- Returns
str – Bitcoin wallet root xprivate key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.root_xprivate_key() "tprv8ZgxMBicQKsPeLxEBy2sJ8CqLdc76FUzeaiY5egrW4JdpM4F9b9A3L6AQhsY1TRsqJAfTdH7DdRAt5hRdcdhn5LnMZPiaGRR7Snrmd8CLqR"
-
root_xpublic_key
(encoded: bool = True) → Optional[str]¶ Get Bitcoin wallet root xpublic key.
- Parameters
encoded (bool) – Encoded root xprivate key, default to True.
- Returns
str – Bitcoin wallet root xpublic key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.root_xpublic_key() "tpubD6NzVbkrYhZ4Xoz25chThXrwuf83FafuDtKKNAj9vL72eqK1myxkDpi2aq9PKCbaQEbJZEaQBwiDQvYuMFZSWPNbypVJkNLfDHwvswpn4m4"
-
xprivate_key
(encoded=True) → Optional[str]¶ Get Bitcoin wallet xprivate key.
- Parameters
encoded (bool) – Encoded xprivate key, default to True.
- Returns
str – Bitcoin wallet xprivate key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.xprivate_key() "tprv8kPCFydoWU9ybQunXq7g17Me57ac5gcj8RartGqetP4wAnoDHQAVnLY4RtbYE3WH6xBLHbBJ1VZcRutM712SRQkLFM2PCeoKfsPpndYUajZ"
-
xpublic_key
(encoded: bool = True) → Optional[str]¶ Get Bitcoin wallet xpublic key.
- Parameters
encoded (bool) – Encoded xprivate key, default to True.
- Returns
str – Bitcoin wallet xpublic key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.xpublic_key() "tpubDH5EQPg3eqqeUswaRUnGQX1ke96YF1odhjBeAnsxJesL1H3yunz5xq9vbzGdsRqx3hnsMwZxn9icChmwC8W2gJEJR29iUaRBtCUbPrE7WXm"
-
uncompressed
() → str¶ Get Bitcoin wallet uncompressed public key.
- Returns
str – Bitcoin wallet uncompressed public key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.uncompressed() "065e8cb5fa76699079860a450bddd0e37e0ad3dbf2ddfd01d7b600231e6cde8ebc4241db8d66eb8085d5805bd2c4dd588ab3b6f9ec50c2ac3da4c557e15eca2e"
-
compressed
() → str¶ Get Bitcoin wallet compressed public key.
- Returns
str – Bitcoin wallet compressed public key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.compressed() "02065e8cb5fa76699079860a450bddd0e37e0ad3dbf2ddfd01d7b600231e6cde8e"
-
chain_code
() → str¶ Get Bitcoin wallet chain code.
- Returns
str – Bitcoin wallet chain code.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.chain_code() "33a1c82cd13444724d0d217da8be96a8dcf663c8289ba870231c5f60e31accc5"
-
private_key
() → str¶ Get Bitcoin wallet private key.
- Returns
str – Bitcoin wallet private key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.private_key() "adf0218f7e7276ed0f40b6919f2473497dd2bf7dcd4cabff4d4ef0e11948cde7"
-
public_key
(private_key: Optional[str] = None) → str¶ Get Bitcoin wallet public key.
- Returns
str – Bitcoin wallet public key.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.public_key() "02065e8cb5fa76699079860a450bddd0e37e0ad3dbf2ddfd01d7b600231e6cde8e"
-
path
() → Optional[str]¶ Get Bitcoin wallet path.
- Returns
str – Bitcoin wallet path.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.path() "m/44'/0'/0'/0/0"
-
address
() → str¶ Get Bitcoin wallet address.
- Returns
str – Bitcoin wallet address.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.address() "mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC"
-
wif
() → str¶ Get Bitcoin wallet important format (WIF).
- Returns
str – Bitcoin wallet important format.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.wif() "cTQpBvBAavuh6VzpeXiutLLTA5Uckr4eAJKuFsBMU1aQXBye1Z9n"
-
hash
() → str¶ Get Bitcoin wallet public key/address hash.
- Returns
str – Bitcoin wallet public key/address hash.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.hash() "33ecab3d67f0e2bde43e52f41ec1ecbdc73f11f8"
-
p2pkh
() → str¶ Get Bitcoin wallet public key/address p2pkh.
- Returns
str – Bitcoin wallet public key/address p2pkh.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.p2pkh() "76a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac"
-
balance
() → int¶ Get Bitcoin wallet balance.
- Returns
int – Bitcoin wallet balance (SATOSHI amount).
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.balance() 67966
-
utxos
(limit: int = 15) → list¶ Get Bitcoin wallet unspent transaction output (UTXO’s).
- Parameters
limit (int) – Limit of UTXO’s, default is 15.
- Returns
list – Bitcoin unspent transaction outputs.
>>> from swap.providers.bitcoin.wallet import Wallet >>> wallet = Wallet(network="testnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44'/0'/0'/0/0") >>> wallet.utxos() [{'index': 0, 'hash': '98c6a3d4e136d32d0848126e08325c94da2e8217593e92236471b11b42ee7999', 'output_index': 1, 'amount': 67966, 'script': '76a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac'}]
Hash Time Lock Contract (HTLC)¶
Bitcoin Hash Time Lock Contract (HTLC).
-
class
swap.providers.bitcoin.htlc.
HTLC
(network: str = 'mainnet')¶ Bitcoin Hash Time Lock Contract (HTLC).
- Parameters
network (str) – Bitcoin network, defaults to mainnet.
- Returns
HTLC – Bitcoin HTLC instance.
Note
Bitcoin has only two networks,
mainnet
andtestnet
.-
build_htlc
(secret_hash: str, recipient_address: str, sender_address: str, sequence: int = 1000) → swap.providers.bitcoin.htlc.HTLC¶ Build Bitcoin Hash Time Lock Contract (HTLC).
- Parameters
secret_hash (str) – secret sha-256 hash.
recipient_address (str) – Bitcoin recipient address.
sender_address (str) – Bitcoin sender address.
sequence (int) – Bitcoin sequence number of expiration block, defaults to 1000.
- Returns
HTLC – Bitcoin Hash Time Lock Contract (HTLC) instance.
>>> from swap.providers.bitcoin.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="testnet") >>> htlc.build_htlc(secret_hash=sha256("Hello Meheret!"), recipient_address="mgokpSJoX7npmAK1Zj8ze1926CLxYDt1iF", sender_address="mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", sequence=1000) <swap.providers.bitcoin.htlc.HTLC object at 0x0409DAF0>
-
from_opcode
(opcode: str) → swap.providers.bitcoin.htlc.HTLC¶ Initiate Bitcoin Hash Time Lock Contract (HTLC) from opcode script.
- Parameters
opcode (str) – Bitcoin opcode script.
- Returns
HTLC – Bitcoin Hash Time Lock Contract (HTLC) instance.
>>> from swap.providers.bitcoin.htlc import HTLC >>> htlc = HTLC(network="testnet") >>> opcode = "OP_IF OP_HASH256 821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e0158 OP_EQUALVERIFY OP_DUP OP_HASH160 0e259e08f2ec9fc99a92b6f66fdfcb3c7914fd68 OP_EQUALVERIFY OP_CHECKSIG OP_ELSE e803 OP_CHECKSEQUENCEVERIFY OP_DROP OP_DUP OP_HASH160 33ecab3d67f0e2bde43e52f41ec1ecbdc73f11f8 OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF" >>> htlc.from_opcode(opcode=opcode) <swap.providers.bitcoin.htlc.HTLC object at 0x0409DAF0>
-
from_bytecode
(bytecode: str) → swap.providers.bitcoin.htlc.HTLC¶ Initialize Bitcoin Hash Time Lock Contract (HTLC) from bytecode.
- Parameters
bytecode (str) – Bitcoin bytecode.
- Returns
HTLC – Bitcoin Hash Time Lock Contract (HTLC) instance.
>>> from swap.providers.bitcoin.htlc import HTLC >>> htlc = HTLC(network="testnet") >>> bytecode = "63aa20821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e01588876a9140e259e08f2ec9fc99a92b6f66fdfcb3c7914fd6888ac6702e803b27576a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac68" >>> htlc.from_bytecode(bytecode=bytecode) <swap.providers.bitcoin.htlc.HTLC object at 0x0409DAF0>
-
bytecode
() → str¶ Get Bitcoin Hash Time Lock Contract (HTLC) bytecode.
- Returns
str – Bitcoin HTLC bytecode.
>>> from swap.providers.bitcoin.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="testnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "mgokpSJoX7npmAK1Zj8ze1926CLxYDt1iF", "mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", 1000) >>> htlc.bytecode() "63aa20821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e01588876a9140e259e08f2ec9fc99a92b6f66fdfcb3c7914fd6888ac6702e803b27576a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac68"
-
opcode
() → str¶ Get Bitcoin Hash Time Lock Contract (HTLC) OP_Code.
- Returns
str – Bitcoin HTLC opcode.
>>> from swap.providers.bitcoin.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="testnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "mgokpSJoX7npmAK1Zj8ze1926CLxYDt1iF", "mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", 1000) >>> htlc.opcode() "OP_IF OP_HASH256 821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e0158 OP_EQUALVERIFY OP_DUP OP_HASH160 0e259e08f2ec9fc99a92b6f66fdfcb3c7914fd68 OP_EQUALVERIFY OP_CHECKSIG OP_ELSE e803 OP_CHECKSEQUENCEVERIFY OP_DROP OP_DUP OP_HASH160 33ecab3d67f0e2bde43e52f41ec1ecbdc73f11f8 OP_EQUALVERIFY OP_CHECKSIG OP_ENDIF"
-
hash
() → str¶ Get Bitcoin HTLC hash.
- Returns
str – Bitcoin Hash Time Lock Contract (HTLC) hash.
>>> from swap.providers.bitcoin.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="testnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "mgokpSJoX7npmAK1Zj8ze1926CLxYDt1iF", "mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", 1000) >>> htlc.hash() "a9149418feed4647e156d6663db3e0cef7c050d0386787"
-
address
() → str¶ Get Bitcoin Hash Time Lock Contract (HTLC) address.
- Returns
str – Bitcoin HTLC address.
>>> from swap.providers.bitcoin.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="testnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "mgokpSJoX7npmAK1Zj8ze1926CLxYDt1iF", "mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", 1000) >>> htlc.address() "2N6kHwQy6Ph5EdKNgzGrcW2WhGHKGfmP5ae"
-
balance
() → int¶ Get Bitcoin HTLC balance.
- Returns
int – Bitcoin HTLC balance (SATOSHI amount).
>>> from swap.providers.bitcoin.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="testnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "mgokpSJoX7npmAK1Zj8ze1926CLxYDt1iF", "mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", 1000) >>> htlc.balance() 10000
-
utxos
(limit: int = 15) → list¶ Get Bitcoin HTLC unspent transaction output (UTXO’s).
- Parameters
limit (int) – Limit of UTXO’s, default is 15.
- Returns
list – Bitcoin unspent transaction outputs.
>>> from swap.providers.bitcoin.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="testnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "mgokpSJoX7npmAK1Zj8ze1926CLxYDt1iF", "mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", 1000) >>> htlc.utxos() [{'index': 0, 'hash': '9825b68e57c8a924285828dde37869c2eca3bb3784b171353962f0d7e7577da1', 'output_index': 0, 'amount': 10000, 'script': 'a9149418feed4647e156d6663db3e0cef7c050d0386787'}]
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"
Solver¶
Bitcoin solver.
FundSolver¶
-
class
swap.providers.bitcoin.solver.
FundSolver
(root_xprivate_key: str, account: int = 0, change: bool = False, address: int = 0, path: Optional[str] = None)¶ Bitcoin Fund solver.
- Parameters
root_xprivate_key (str) – Bitcoin sender root xprivate key.
account (int) – Bitcoin derivation account, defaults to 0.
change (bool) – Bitcoin derivation change, defaults to False.
address (int) – Bitcoin derivation address, defaults to 0.
path (str) – Bitcoin derivation path, defaults to None.
- Returns
FundSolver – Bitcoin fund solver instance.
>>> from swap.providers.bitcoin.solver import FundSolver >>> sender_root_xprivate_key = "xprv9s21ZrQH143K3XihXQBN8Uar2WBtrjSzK2oRDEGQ25pA2kKAADoQXaiiVXht163ZTrdtTXfM4GqNRE9gWQHky25BpvBQuuhNCM3SKwWTPNJ" >>> fund_solver = FundSolver(root_xprivate_key=sender_root_xprivate_key) <swap.providers.bitcoin.solver.FundSolver object at 0x03FCCA60>
ClaimSolver¶
-
class
swap.providers.bitcoin.solver.
ClaimSolver
(root_xprivate_key: str, secret_key: str, bytecode: str, account: int = 0, change: bool = False, address: int = 0, path: Optional[str] = None)¶ Bitcoin Claim solver.
- Parameters
root_xprivate_key (str) – Bitcoin sender root xprivate key.
secret_key (str) – Secret password/passphrase.
bytecode (str) – Bitcoin witness HTLC bytecode..
account (int) – Bitcoin derivation account, defaults to 0.
change (bool) – Bitcoin derivation change, defaults to False.
address (int) – Bitcoin derivation address, defaults to 0.
path (str) – Bitcoin derivation path, defaults to None.
- Returns
ClaimSolver – Bitcoin claim solver instance.
>>> from swap.providers.bitcoin.solver import ClaimSolver >>> recipient_root_xprivate_key = "xprv9s21ZrQH143K4Kpce43z5guPyxLrFoc2i8aQAq835Zzp4Rt7i6nZaMCnVSDyHT6MnmJJGKHMrCUqaYpGojrug1ZN5qQDdShQffmkyv5xyUR" >>> bytecode = "63aa20821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e01588876a9140e259e08f2ec9fc99a92b6f66fdfcb3c7914fd6888ac6702e803b27576a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac68" >>> claim_solver = ClaimSolver(wallet=recipient_root_xprivate_key, secret_key="Hello Meheret!", bytecode=bytecode) <swap.providers.bitcoin.solver.ClaimSolver object at 0x03FCCA60>
RefundSolver¶
-
class
swap.providers.bitcoin.solver.
RefundSolver
(root_xprivate_key: str, bytecode: str, sequence: int = 1000, account: int = 0, change: bool = False, address: int = 0, path: Optional[str] = None)¶ Bitcoin Refund solver.
- Parameters
root_xprivate_key (str) – Bitcoin sender root xprivate key.
bytecode (str) – Bitcoin witness HTLC bytecode..
sequence (int) – Bitcoin witness sequence number(expiration block), defaults to 1000.
account (int) – Bitcoin derivation account, defaults to 0.
change (bool) – Bitcoin derivation change, defaults to False.
address (int) – Bitcoin derivation address, defaults to 0.
path (str) – Bitcoin derivation path, defaults to None.
- Returns
RefundSolver – Bitcoin refund solver instance.
>>> from swap.providers.bitcoin.solver import RefundSolver >>> sender_root_xprivate_key = "xprv9s21ZrQH143K3XihXQBN8Uar2WBtrjSzK2oRDEGQ25pA2kKAADoQXaiiVXht163ZTrdtTXfM4GqNRE9gWQHky25BpvBQuuhNCM3SKwWTPNJ" >>> bytecode = "63aa20821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e01588876a9140e259e08f2ec9fc99a92b6f66fdfcb3c7914fd6888ac6702e803b27576a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac68" >>> refund_solver = RefundSolver(root_xprivate_key=sender_root_xprivate_key, bytecode=bytecode sequence=1000) <swap.providers.bitcoin.solver.RefundSolver object at 0x03FCCA60>
Signature¶
Bitcoin signature.
-
class
swap.providers.bitcoin.signature.
Signature
(network: str = 'mainnet', version: int = 2)¶ Bitcoin Signature.
- Parameters
network (str) – Bitcoin network, defaults to mainnet.
version (int) – Bitcoin transaction version, defaults to 2.
- Returns
Signature – Bitcoin signature instance.
Note
Bitcoin has only two networks,
mainnet
andtestnet
.-
fee
() → int¶ Get Bitcoin transaction fee.
- Returns
int – Bitcoin transaction fee.
>>> from swap.providers.bitcoin.signature import Signature >>> from swap.providers.bitcoin.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTA4MjVlMDBiYTU5NmFiMTExMjZjZDg5MjAzYjg4MmJjZTYwYTdkYjAxOWU1MTIxNzA1NmM0NzFmNTEwY2ZkODUwMDAwMDAwMDAwZmZmZmZmZmYwMjEwMjcwMDAwMDAwMDAwMDAxN2E5MTQ0Njk1MTI3YjFkMTdjNDU0ZjRiYWU5YzQxY2I4ZTNjZGI1ZTg5ZDI0ODdlYTVjMDEwMDAwMDAwMDAwMTk3NmE5MTQzM2VjYWIzZDY3ZjBlMmJkZTQzZTUyZjQxZWMxZWNiZGM3M2YxMWY4ODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJ2YWx1ZSI6IDEwMDAwMCwgInR4X291dHB1dF9uIjogMCwgInNjcmlwdCI6ICI3NmE5MTQzM2VjYWIzZDY3ZjBlMmJkZTQzZTUyZjQxZWMxZWNiZGM3M2YxMWY4ODhhYyJ9XSwgIm5ldHdvcmsiOiAidGVzdG5ldCIsICJ0eXBlIjogImJpdGNvaW5fZnVuZF91bnNpZ25lZCJ9" >>> sender_root_xprivate_key = "xprv9s21ZrQH143K3XihXQBN8Uar2WBtrjSzK2oRDEGQ25pA2kKAADoQXaiiVXht163ZTrdtTXfM4GqNRE9gWQHky25BpvBQuuhNCM3SKwWTPNJ" >>> fund_solver = FundSolver(sender_root_xprivate_key) >>> signature = Signature("testnet") >>> signature.sign(unsigned_fund_transaction_raw, fund_solver) >>> signature.fee() 678
-
hash
() → str¶ Get Bitcoin signature transaction hash.
- Returns
str – Bitcoin signature transaction hash or transaction id.
>>> from swap.providers.bitcoin.signature import Signature >>> from swap.providers.bitcoin.solver import ClaimSolver >>> unsigned_claim_transaction_raw = "eyJmZWUiOiA1NzYsICJyYXciOiAiMDIwMDAwMDAwMTE4MjNmMzlhOGM1ZjZmMjc4NDVkZDEzYTY1ZTAzZmUyZWY1MTA4ZDIzNWU3YTM2ZWRiNmViMjY3YjA0NTljNWEwMDAwMDAwMDAwZmZmZmZmZmYwMWQwMjQwMDAwMDAwMDAwMDAxOTc2YTkxNDBlMjU5ZTA4ZjJlYzlmYzk5YTkyYjZmNjZmZGZjYjNjNzkxNGZkNjg4OGFjMDAwMDAwMDAiLCAib3V0cHV0cyI6IHsidmFsdWUiOiAxMDAwMCwgInR4X291dHB1dF9uIjogMCwgInNjcmlwdCI6ICJhOTE0OTQxOGZlZWQ0NjQ3ZTE1NmQ2NjYzZGIzZTBjZWY3YzA1MGQwMzg2Nzg3In0sICJuZXR3b3JrIjogInRlc3RuZXQiLCAidHlwZSI6ICJiaXRjb2luX2NsYWltX3Vuc2lnbmVkIn0" >>> recipient_root_xprivate_key = "xprv9s21ZrQH143K4Kpce43z5guPyxLrFoc2i8aQAq835Zzp4Rt7i6nZaMCnVSDyHT6MnmJJGKHMrCUqaYpGojrug1ZN5qQDdShQffmkyv5xyUR" >>> bytecode = "63aa20821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e01588876a9140e259e08f2ec9fc99a92b6f66fdfcb3c7914fd6888ac6702e803b27576a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac68" >>> claim_solver = ClaimSolver(recipient_root_xprivate_key, "Hello Meheret!", bytecode) >>> signature = Signature("testnet") >>> signature.sign(unsigned_claim_transaction_raw, claim_solver) >>> signature.hash() "29c7ac0ec049687e1b952cefdaf2f1f52957e6f42f35826af21ec6bd3edf60ce"
-
json
() → dict¶ Get Bitcoin signature transaction json format.
- Returns
str – Bitcoin signature transaction json format.
>>> from swap.providers.bitcoin.signature import Signature >>> from swap.providers.bitcoin.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTA4MjVlMDBiYTU5NmFiMTExMjZjZDg5MjAzYjg4MmJjZTYwYTdkYjAxOWU1MTIxNzA1NmM0NzFmNTEwY2ZkODUwMDAwMDAwMDAwZmZmZmZmZmYwMjEwMjcwMDAwMDAwMDAwMDAxN2E5MTQ0Njk1MTI3YjFkMTdjNDU0ZjRiYWU5YzQxY2I4ZTNjZGI1ZTg5ZDI0ODdlYTVjMDEwMDAwMDAwMDAwMTk3NmE5MTQzM2VjYWIzZDY3ZjBlMmJkZTQzZTUyZjQxZWMxZWNiZGM3M2YxMWY4ODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJ2YWx1ZSI6IDEwMDAwMCwgInR4X291dHB1dF9uIjogMCwgInNjcmlwdCI6ICI3NmE5MTQzM2VjYWIzZDY3ZjBlMmJkZTQzZTUyZjQxZWMxZWNiZGM3M2YxMWY4ODhhYyJ9XSwgIm5ldHdvcmsiOiAidGVzdG5ldCIsICJ0eXBlIjogImJpdGNvaW5fZnVuZF91bnNpZ25lZCJ9" >>> sender_root_xprivate_key = "xprv9s21ZrQH143K3XihXQBN8Uar2WBtrjSzK2oRDEGQ25pA2kKAADoQXaiiVXht163ZTrdtTXfM4GqNRE9gWQHky25BpvBQuuhNCM3SKwWTPNJ" >>> fund_solver = FundSolver(sender_root_xprivate_key) >>> signature = Signature("testnet") >>> signature.sign(unsigned_fund_transaction_raw, fund_solver) >>> signature.json() {"hex": "02000000010825e00ba596ab11126cd89203b882bce60a7db019e51217056c471f510cfd85000000006b4830450221009ac6afb68728eee53050ea7a301b6fb836e13b782cd52c29be2f8b0cc71f4427022069671a0a3df14873cf9268e4054c4b177aff8da894641896669cfafa4be23c8a012102065e8cb5fa76699079860a450bddd0e37e0ad3dbf2ddfd01d7b600231e6cde8effffffff02102700000000000017a9144695127b1d17c454f4bae9c41cb8e3cdb5e89d2487ea5c0100000000001976a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac00000000", "txid": "29c7ac0ec049687e1b952cefdaf2f1f52957e6f42f35826af21ec6bd3edf60ce", "hash": "29c7ac0ec049687e1b952cefdaf2f1f52957e6f42f35826af21ec6bd3edf60ce", "size": 224, "vsize": 224, "version": 2, "locktime": 0, "vin": [{"txid": "85fd0c511f476c051712e519b07d0ae6bc82b80392d86c1211ab96a50be02508", "vout": 0, "scriptSig": {"asm": "30450221009ac6afb68728eee53050ea7a301b6fb836e13b782cd52c29be2f8b0cc71f4427022069671a0a3df14873cf9268e4054c4b177aff8da894641896669cfafa4be23c8a01 02065e8cb5fa76699079860a450bddd0e37e0ad3dbf2ddfd01d7b600231e6cde8e", "hex": "4830450221009ac6afb68728eee53050ea7a301b6fb836e13b782cd52c29be2f8b0cc71f4427022069671a0a3df14873cf9268e4054c4b177aff8da894641896669cfafa4be23c8a012102065e8cb5fa76699079860a450bddd0e37e0ad3dbf2ddfd01d7b600231e6cde8e"}, "sequence": "4294967295"}], "vout": [{"value": "0.00010000", "n": 0, "scriptPubKey": {"asm": "OP_HASH160 4695127b1d17c454f4bae9c41cb8e3cdb5e89d24 OP_EQUAL", "hex": "a9144695127b1d17c454f4bae9c41cb8e3cdb5e89d2487", "type": "p2sh", "address": "2MygRsRs6En1RCj8a88FfsK1QBeissBTswL"}}, {"value": "0.00089322", "n": 1, "scriptPubKey": {"asm": "OP_DUP OP_HASH160 33ecab3d67f0e2bde43e52f41ec1ecbdc73f11f8 OP_EQUALVERIFY OP_CHECKSIG", "hex": "76a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac", "type": "p2pkh", "address": "mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC"}}]}
-
raw
() → str¶ Get Bitcoin main transaction raw.
- Returns
str – Bitcoin signature transaction raw.
>>> from swap.providers.bitcoin.signature import Signature >>> from swap.providers.bitcoin.solver import RefundSolver >>> unsigned_refund_transaction_raw = "eyJmZWUiOiA1NzYsICJyYXciOiAiMDIwMDAwMDAwMTE4MjNmMzlhOGM1ZjZmMjc4NDVkZDEzYTY1ZTAzZmUyZWY1MTA4ZDIzNWU3YTM2ZWRiNmViMjY3YjA0NTljNWEwMDAwMDAwMDAwZmZmZmZmZmYwMWQwMjQwMDAwMDAwMDAwMDAxOTc2YTkxNDMzZWNhYjNkNjdmMGUyYmRlNDNlNTJmNDFlYzFlY2JkYzczZjExZjg4OGFjMDAwMDAwMDAiLCAib3V0cHV0cyI6IHsidmFsdWUiOiAxMDAwMCwgInR4X291dHB1dF9uIjogMCwgInNjcmlwdCI6ICJhOTE0OTQxOGZlZWQ0NjQ3ZTE1NmQ2NjYzZGIzZTBjZWY3YzA1MGQwMzg2Nzg3In0sICJuZXR3b3JrIjogInRlc3RuZXQiLCAidHlwZSI6ICJiaXRjb2luX3JlZnVuZF91bnNpZ25lZCJ9" >>> sender_root_xprivate_key = "xprv9s21ZrQH143K3XihXQBN8Uar2WBtrjSzK2oRDEGQ25pA2kKAADoQXaiiVXht163ZTrdtTXfM4GqNRE9gWQHky25BpvBQuuhNCM3SKwWTPNJ" >>> bytecode = "63aa20821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e01588876a9140e259e08f2ec9fc99a92b6f66fdfcb3c7914fd6888ac6702e803b27576a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac68" >>> refund_solver = RefundSolver(sender_root_xprivate_key, bytecode, 1000) >>> signature = Signature("testnet") >>> signature.sign(unsigned_refund_transaction_raw, refund_solver) >>> signature.raw() "02000000011823f39a8c5f6f27845dd13a65e03fe2ef5108d235e7a36edb6eb267b0459c5a00000000ca47304402207b7a2d1486258f0e59ae5d16fc0e369d45017a1016c85082ed362f36596970950220537c8762a5e03fef76bcfaacd451c36cde3d25bebe85d8e33a3fec5625b34183012102065e8cb5fa76699079860a450bddd0e37e0ad3dbf2ddfd01d7b600231e6cde8e004c5d63aa20821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e01588876a914acf8419eecab574c494febbe03fd07fdae7bf2f488ac6702e803b27576a9141d0f671c26a3ef7a865d1eda0fbd085e98adcc2388ac68e803000001d0240000000000001976a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac00000000"
-
type
() → str¶ Get Bitcoin signature transaction type.
- Returns
str – Bitcoin signature transaction type.
>>> from swap.providers.bitcoin.signature import Signature >>> from swap.providers.bitcoin.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTA4MjVlMDBiYTU5NmFiMTExMjZjZDg5MjAzYjg4MmJjZTYwYTdkYjAxOWU1MTIxNzA1NmM0NzFmNTEwY2ZkODUwMDAwMDAwMDAwZmZmZmZmZmYwMjEwMjcwMDAwMDAwMDAwMDAxN2E5MTQ0Njk1MTI3YjFkMTdjNDU0ZjRiYWU5YzQxY2I4ZTNjZGI1ZTg5ZDI0ODdlYTVjMDEwMDAwMDAwMDAwMTk3NmE5MTQzM2VjYWIzZDY3ZjBlMmJkZTQzZTUyZjQxZWMxZWNiZGM3M2YxMWY4ODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJ2YWx1ZSI6IDEwMDAwMCwgInR4X291dHB1dF9uIjogMCwgInNjcmlwdCI6ICI3NmE5MTQzM2VjYWIzZDY3ZjBlMmJkZTQzZTUyZjQxZWMxZWNiZGM3M2YxMWY4ODhhYyJ9XSwgIm5ldHdvcmsiOiAidGVzdG5ldCIsICJ0eXBlIjogImJpdGNvaW5fZnVuZF91bnNpZ25lZCJ9" >>> sender_root_xprivate_key = "xprv9s21ZrQH143K3XihXQBN8Uar2WBtrjSzK2oRDEGQ25pA2kKAADoQXaiiVXht163ZTrdtTXfM4GqNRE9gWQHky25BpvBQuuhNCM3SKwWTPNJ" >>> fund_solver = FundSolver(sender_root_xprivate_key) >>> signature = Signature("testnet") >>> signature.sign(unsigned_fund_transaction_raw, fund_solver) >>> signature.type() "bitcoin_fund_signed"
-
sign
(transaction_raw: str, solver: Union[swap.providers.bitcoin.solver.FundSolver, swap.providers.bitcoin.solver.ClaimSolver, swap.providers.bitcoin.solver.RefundSolver]) → Union[swap.providers.bitcoin.signature.FundSignature, swap.providers.bitcoin.signature.ClaimSignature, swap.providers.bitcoin.signature.RefundSignature]¶ Sign unsigned transaction raw.
- Parameters
transaction_raw (str) – Bitcoin unsigned transaction raw.
solver (bitcoin.solver.FundSolver, bitcoin.solver.ClaimSolver, bitcoin.solver.RefundSolver) – Bitcoin solver
- Returns
FundSignature, ClaimSignature, RefundSignature – Bitcoin signature instance.
>>> from swap.providers.bitcoin.signature import Signature >>> from swap.providers.bitcoin.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTA4MjVlMDBiYTU5NmFiMTExMjZjZDg5MjAzYjg4MmJjZTYwYTdkYjAxOWU1MTIxNzA1NmM0NzFmNTEwY2ZkODUwMDAwMDAwMDAwZmZmZmZmZmYwMjEwMjcwMDAwMDAwMDAwMDAxN2E5MTQ0Njk1MTI3YjFkMTdjNDU0ZjRiYWU5YzQxY2I4ZTNjZGI1ZTg5ZDI0ODdlYTVjMDEwMDAwMDAwMDAwMTk3NmE5MTQzM2VjYWIzZDY3ZjBlMmJkZTQzZTUyZjQxZWMxZWNiZGM3M2YxMWY4ODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJ2YWx1ZSI6IDEwMDAwMCwgInR4X291dHB1dF9uIjogMCwgInNjcmlwdCI6ICI3NmE5MTQzM2VjYWIzZDY3ZjBlMmJkZTQzZTUyZjQxZWMxZWNiZGM3M2YxMWY4ODhhYyJ9XSwgIm5ldHdvcmsiOiAidGVzdG5ldCIsICJ0eXBlIjogImJpdGNvaW5fZnVuZF91bnNpZ25lZCJ9" >>> sender_root_xprivate_key = "xprv9s21ZrQH143K3XihXQBN8Uar2WBtrjSzK2oRDEGQ25pA2kKAADoQXaiiVXht163ZTrdtTXfM4GqNRE9gWQHky25BpvBQuuhNCM3SKwWTPNJ" >>> fund_solver = FundSolver(sender_root_xprivate_key) >>> signature = Signature("testnet") >>> signature.sign(transaction_raw=unsigned_fund_transaction_raw, solver=fund_solver) <swap.providers.bitcoin.signature.FundSignature object at 0x0409DAF0>
-
transaction_raw
() → str¶ Get Bitcoin transaction raw.
- Returns
str – Bitcoin transaction raw.
>>> from swap.providers.bitcoin.signature import Signature >>> from swap.providers.bitcoin.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTA4MjVlMDBiYTU5NmFiMTExMjZjZDg5MjAzYjg4MmJjZTYwYTdkYjAxOWU1MTIxNzA1NmM0NzFmNTEwY2ZkODUwMDAwMDAwMDAwZmZmZmZmZmYwMjEwMjcwMDAwMDAwMDAwMDAxN2E5MTQ0Njk1MTI3YjFkMTdjNDU0ZjRiYWU5YzQxY2I4ZTNjZGI1ZTg5ZDI0ODdlYTVjMDEwMDAwMDAwMDAwMTk3NmE5MTQzM2VjYWIzZDY3ZjBlMmJkZTQzZTUyZjQxZWMxZWNiZGM3M2YxMWY4ODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJ2YWx1ZSI6IDEwMDAwMCwgInR4X291dHB1dF9uIjogMCwgInNjcmlwdCI6ICI3NmE5MTQzM2VjYWIzZDY3ZjBlMmJkZTQzZTUyZjQxZWMxZWNiZGM3M2YxMWY4ODhhYyJ9XSwgIm5ldHdvcmsiOiAidGVzdG5ldCIsICJ0eXBlIjogImJpdGNvaW5fZnVuZF91bnNpZ25lZCJ9" >>> sender_root_xprivate_key = "xprv9s21ZrQH143K3XihXQBN8Uar2WBtrjSzK2oRDEGQ25pA2kKAADoQXaiiVXht163ZTrdtTXfM4GqNRE9gWQHky25BpvBQuuhNCM3SKwWTPNJ" >>> fund_solver = FundSolver(sender_root_xprivate_key) >>> signature = Signature("testnet") >>> signature.sign(unsigned_fund_transaction_raw, fund_solver) >>> signature.transaction_raw() "eyJyYXciOiAiMDIwMDAwMDAwMTA4MjVlMDBiYTU5NmFiMTExMjZjZDg5MjAzYjg4MmJjZTYwYTdkYjAxOWU1MTIxNzA1NmM0NzFmNTEwY2ZkODUwMDAwMDAwMDZiNDgzMDQ1MDIyMTAwOWFjNmFmYjY4NzI4ZWVlNTMwNTBlYTdhMzAxYjZmYjgzNmUxM2I3ODJjZDUyYzI5YmUyZjhiMGNjNzFmNDQyNzAyMjA2OTY3MWEwYTNkZjE0ODczY2Y5MjY4ZTQwNTRjNGIxNzdhZmY4ZGE4OTQ2NDE4OTY2NjljZmFmYTRiZTIzYzhhMDEyMTAyMDY1ZThjYjVmYTc2Njk5MDc5ODYwYTQ1MGJkZGQwZTM3ZTBhZDNkYmYyZGRmZDAxZDdiNjAwMjMxZTZjZGU4ZWZmZmZmZmZmMDIxMDI3MDAwMDAwMDAwMDAwMTdhOTE0NDY5NTEyN2IxZDE3YzQ1NGY0YmFlOWM0MWNiOGUzY2RiNWU4OWQyNDg3ZWE1YzAxMDAwMDAwMDAwMDE5NzZhOTE0MzNlY2FiM2Q2N2YwZTJiZGU0M2U1MmY0MWVjMWVjYmRjNzNmMTFmODg4YWMwMDAwMDAwMCIsICJmZWUiOiA2NzgsICJuZXR3b3JrIjogInRlc3RuZXQiLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfc2lnbmVkIn0"
FundSignature¶
-
class
swap.providers.bitcoin.signature.
FundSignature
(network: str = 'mainnet', version: int = 2)¶ Bitcoin Fund signature.
- Parameters
network (str) – Bitcoin network, defaults to mainnet.
version (int) – Bitcoin transaction version, defaults to 2.
- Returns
FundSignature – Bitcoin fund signature instance.
-
sign
(transaction_raw: str, solver: swap.providers.bitcoin.solver.FundSolver) → swap.providers.bitcoin.signature.FundSignature¶ Sign unsigned fund transaction raw.
- Parameters
transaction_raw (str) – Bitcoin unsigned fund transaction raw.
solver (bitcoin.solver.FundSolver) – Bitcoin fund solver.
- Returns
FundSignature – Bitcoin fund signature instance.
>>> from swap.providers.bitcoin.signature import Signature >>> from swap.providers.bitcoin.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTA4MjVlMDBiYTU5NmFiMTExMjZjZDg5MjAzYjg4MmJjZTYwYTdkYjAxOWU1MTIxNzA1NmM0NzFmNTEwY2ZkODUwMDAwMDAwMDAwZmZmZmZmZmYwMjEwMjcwMDAwMDAwMDAwMDAxN2E5MTQ0Njk1MTI3YjFkMTdjNDU0ZjRiYWU5YzQxY2I4ZTNjZGI1ZTg5ZDI0ODdlYTVjMDEwMDAwMDAwMDAwMTk3NmE5MTQzM2VjYWIzZDY3ZjBlMmJkZTQzZTUyZjQxZWMxZWNiZGM3M2YxMWY4ODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJ2YWx1ZSI6IDEwMDAwMCwgInR4X291dHB1dF9uIjogMCwgInNjcmlwdCI6ICI3NmE5MTQzM2VjYWIzZDY3ZjBlMmJkZTQzZTUyZjQxZWMxZWNiZGM3M2YxMWY4ODhhYyJ9XSwgIm5ldHdvcmsiOiAidGVzdG5ldCIsICJ0eXBlIjogImJpdGNvaW5fZnVuZF91bnNpZ25lZCJ9" >>> sender_root_xprivate_key = "xprv9s21ZrQH143K3XihXQBN8Uar2WBtrjSzK2oRDEGQ25pA2kKAADoQXaiiVXht163ZTrdtTXfM4GqNRE9gWQHky25BpvBQuuhNCM3SKwWTPNJ" >>> fund_solver = FundSolver(sender_root_xprivate_key) >>> fund_signature = FundSignature("testnet") >>> fund_signature.sign(unsigned_fund_transaction_raw, fund_solver) <swap.providers.bitcoin.signature.FundSignature object at 0x0409DAF0>
ClaimSignature¶
-
class
swap.providers.bitcoin.signature.
ClaimSignature
(network: str = 'mainnet', version: int = 2)¶ Bitcoin Claim signature.
- Parameters
network (str) – Bitcoin network, defaults to mainnet.
version (int) – Bitcoin transaction version, defaults to 2.
- Returns
ClaimSignature – Bitcoin claim signature instance.
-
sign
(transaction_raw: str, solver: swap.providers.bitcoin.solver.ClaimSolver) → swap.providers.bitcoin.signature.ClaimSignature¶ Sign unsigned claim transaction raw.
- Parameters
transaction_raw (str) – Bitcoin unsigned claim transaction raw.
solver (bitcoin.solver.ClaimSolver) – Bitcoin claim solver.
- Returns
ClaimSignature – Bitcoin claim signature instance.
>>> from swap.providers.bitcoin.signature import ClaimSignature >>> from swap.providers.bitcoin.solver import ClaimSolver >>> unsigned_claim_transaction_raw = "eyJmZWUiOiA1NzYsICJyYXciOiAiMDIwMDAwMDAwMTE4MjNmMzlhOGM1ZjZmMjc4NDVkZDEzYTY1ZTAzZmUyZWY1MTA4ZDIzNWU3YTM2ZWRiNmViMjY3YjA0NTljNWEwMDAwMDAwMDAwZmZmZmZmZmYwMWQwMjQwMDAwMDAwMDAwMDAxOTc2YTkxNDBlMjU5ZTA4ZjJlYzlmYzk5YTkyYjZmNjZmZGZjYjNjNzkxNGZkNjg4OGFjMDAwMDAwMDAiLCAib3V0cHV0cyI6IHsidmFsdWUiOiAxMDAwMCwgInR4X291dHB1dF9uIjogMCwgInNjcmlwdCI6ICJhOTE0OTQxOGZlZWQ0NjQ3ZTE1NmQ2NjYzZGIzZTBjZWY3YzA1MGQwMzg2Nzg3In0sICJuZXR3b3JrIjogInRlc3RuZXQiLCAidHlwZSI6ICJiaXRjb2luX2NsYWltX3Vuc2lnbmVkIn0" >>> recipient_root_xprivate_key = "xprv9s21ZrQH143K4Kpce43z5guPyxLrFoc2i8aQAq835Zzp4Rt7i6nZaMCnVSDyHT6MnmJJGKHMrCUqaYpGojrug1ZN5qQDdShQffmkyv5xyUR" >>> bytecode = "63aa20821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e01588876a9140e259e08f2ec9fc99a92b6f66fdfcb3c7914fd6888ac6702e803b27576a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac68" >>> claim_solver = ClaimSolver(recipient_root_xprivate_key, "Hello Meheret!", bytecode) >>> claim_signature = ClaimSignature("testnet") >>> claim_signature.sign(transaction_raw=unsigned_claim_transaction_raw, solver=claim_solver) <swap.providers.bitcoin.signature.ClaimSignature object at 0x0409DAF0>
RefundSignature¶
-
class
swap.providers.bitcoin.signature.
RefundSignature
(network: str = 'mainnet', version: int = 2)¶ Bitcoin Refund signature.
- Parameters
network (str) – Bitcoin network, defaults to mainnet.
version (int) – Bitcoin transaction version, defaults to 2.
- Returns
RefundSignature – Bitcoin refund signature instance.
-
sign
(transaction_raw: str, solver: swap.providers.bitcoin.solver.RefundSolver) → swap.providers.bitcoin.signature.RefundSignature¶ Sign unsigned refund transaction raw.
- Parameters
transaction_raw (str) – Bitcoin unsigned refund transaction raw.
solver (bitcoin.solver.RefundSolver) – Bitcoin refund solver.
- Returns
RefundSignature – Bitcoin refund signature instance.
>>> from swap.providers.bitcoin.signature import RefundSignature >>> from swap.providers.bitcoin.solver import RefundSolver >>> unsigned_refund_transaction_raw = "eyJmZWUiOiA1NzYsICJyYXciOiAiMDIwMDAwMDAwMTE4MjNmMzlhOGM1ZjZmMjc4NDVkZDEzYTY1ZTAzZmUyZWY1MTA4ZDIzNWU3YTM2ZWRiNmViMjY3YjA0NTljNWEwMDAwMDAwMDAwZmZmZmZmZmYwMWQwMjQwMDAwMDAwMDAwMDAxOTc2YTkxNDMzZWNhYjNkNjdmMGUyYmRlNDNlNTJmNDFlYzFlY2JkYzczZjExZjg4OGFjMDAwMDAwMDAiLCAib3V0cHV0cyI6IHsidmFsdWUiOiAxMDAwMCwgInR4X291dHB1dF9uIjogMCwgInNjcmlwdCI6ICJhOTE0OTQxOGZlZWQ0NjQ3ZTE1NmQ2NjYzZGIzZTBjZWY3YzA1MGQwMzg2Nzg3In0sICJuZXR3b3JrIjogInRlc3RuZXQiLCAidHlwZSI6ICJiaXRjb2luX3JlZnVuZF91bnNpZ25lZCJ9" >>> sender_root_xprivate_key = "xprv9s21ZrQH143K3XihXQBN8Uar2WBtrjSzK2oRDEGQ25pA2kKAADoQXaiiVXht163ZTrdtTXfM4GqNRE9gWQHky25BpvBQuuhNCM3SKwWTPNJ" >>> bytecode = "63aa20821124b554d13f247b1e5d10b84e44fb1296f18f38bbaa1bea34a12c843e01588876a9140e259e08f2ec9fc99a92b6f66fdfcb3c7914fd6888ac6702e803b27576a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac68" >>> refund_solver = RefundSolver(sender_root_xprivate_key, bytecode, 1000) >>> refund_signature = RefundSignature("testnet") >>> refund_signature.sign(transaction_raw=unsigned_refund_transaction_raw, solver=refund_solver) <swap.providers.bitcoin.signature.RefundSignature object at 0x0409DAF0>
Remote Procedure Call (RPC)¶
Bitcoin remote procedure call.
-
swap.providers.bitcoin.rpc.
get_balance
(address: str, network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → int¶ Get Bitcoin balance.
- Parameters
address (str) – Bitcoin address.
network (str) – Bitcoin network, defaults to mainnet.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
int – Bitcoin balance (SATOSHI amount).
>>> from swap.providers.bitcoin.rpc import get_balance >>> get_balance(address="mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", network="testnet") 67966
-
swap.providers.bitcoin.rpc.
get_utxos
(address: str, network: str = 'mainnet', include_script: bool = True, limit: int = 15, headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → list¶ Get Bitcoin unspent transaction outputs (UTXO’s).
- Parameters
address (str) – Bitcoin address.
network (str) – Bitcoin network, defaults to testnet.
include_script (bool) – Bitcoin include script, defaults to True.
limit (int) – Bitcoin utxo’s limit, defaults to 15.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
list – Bitcoin unspent transaction outputs (UTXO’s).
>>> from swap.providers.bitcoin.rpc import get_utxos >>> get_utxos(address="mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC", network="testnet") [{'tx_hash': '98c6a3d4e136d32d0848126e08325c94da2e8217593e92236471b11b42ee7999', 'block_height': 1890810, 'tx_input_n': -1, 'tx_output_n': 1, 'value': 67966, 'ref_balance': 146610, 'spent': False, 'confirmations': 5278, 'confirmed': '2020-11-09T08:53:01Z', 'double_spend': False, 'script': '76a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac'}]
-
swap.providers.bitcoin.rpc.
get_transaction
(transaction_id: str, network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → dict¶ Get Bitcoin transaction detail.
- Parameters
transaction_id (str) – Bitcoin transaction id/hash.
network (str) – Bitcoin network, defaults to testnet.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Bitcoin transaction detail.
>>> from swap.providers.bitcoin.rpc import get_transaction >>> get_transaction(transaction_id="4e91bca76db112d3a356c17366df93e364a4922993414225f65390220730d0c1", network="testnet") {'block_hash': '000000000000006fb2aec57209181feb54750319e47263c48eca24369bdbee86', 'block_height': 1890810, 'block_index': 37, 'hash': '98c6a3d4e136d32d0848126e08325c94da2e8217593e92236471b11b42ee7999', 'addresses': ['2N1NiQVBaSXmdZVATeST9sMQWVPeL5oA8Ks', 'mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC'], 'total': 77966, 'fees': 678, 'size': 224, 'preference': 'low', 'relayed_by': '104.197.28.151:18333', 'confirmed': '2020-11-09T08:53:01Z', 'received': '2020-11-09T08:47:10.889Z', 'ver': 2, 'double_spend': False, 'vin_sz': 1, 'vout_sz': 2, 'confirmations': 5279, 'confidence': 1, 'inputs': [{'prev_hash': '9825b68e57c8a924285828dde37869c2eca3bb3784b171353962f0d7e7577da1', 'output_index': 1, 'script': '483045022100e906ed456dc5d2c2546e70385b028dbbe62e9abc94324e9477c1374f8355501e02201072a242ebae5891b4be67478fa8126b45ebc2bb0ee7687773cbf1fc1099eef3012102065e8cb5fa76699079860a450bddd0e37e0ad3dbf2ddfd01d7b600231e6cde8e', 'output_value': 78644, 'sequence': 4294967295, 'addresses': ['mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC'], 'script_type': 'pay-to-pubkey-hash', 'age': 1837431}], 'outputs': [{'value': 10000, 'script': 'a914592ba3ba46263dc5c976ede5a6f91f75e5b6f69f87', 'addresses': ['2N1NiQVBaSXmdZVATeST9sMQWVPeL5oA8Ks'], 'script_type': 'pay-to-script-hash'}, {'value': 67966, 'script': '76a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac', 'addresses': ['mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC'], 'script_type': 'pay-to-pubkey-hash'}]}
-
swap.providers.bitcoin.rpc.
decode_raw
(raw: str, network: str = 'mainnet', offline: bool = True, headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → dict¶ Decode original Bitcoin raw.
- Parameters
raw (str) – Bitcoin transaction raw.
network (str) – Bitcoin network, defaults to mainnet.
offline (bool) – Offline decode, defaults to True.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Bitcoin decoded transaction raw.
>>> from swap.providers.bitcoin.rpc import decode_raw >>> decode_raw(raw="02000000011823f39a8c5f6f27845dd13a65e03fe2ef5108d235e7a36edb6eb267b0459c5a010000006a47304402207018b7fd1ba6624fe9bb0f16cd65fa243d202e32fdff452699f56465b61ab648022009f0dc1a0a63109246c45e120fc0d34b40e789dfc4d05e64f269602c7d67d9210121027f0dc0894bd690635412af782d05e4f79d3d40bf568978c650f3f1ca1a96cf36ffffffff02102700000000000017a9149418feed4647e156d6663db3e0cef7c050d038678734330100000000001976a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac00000000", network="testnet") {'hex': '02000000011823f39a8c5f6f27845dd13a65e03fe2ef5108d235e7a36edb6eb267b0459c5a010000006a47304402207018b7fd1ba6624fe9bb0f16cd65fa243d202e32fdff452699f56465b61ab648022009f0dc1a0a63109246c45e120fc0d34b40e789dfc4d05e64f269602c7d67d9210121027f0dc0894bd690635412af782d05e4f79d3d40bf568978c650f3f1ca1a96cf36ffffffff02102700000000000017a9149418feed4647e156d6663db3e0cef7c050d038678734330100000000001976a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac00000000', 'txid': '6e5c80f600f45acda3c3101128bb3075bf2cf7af4bab0d99c9d856ebfb4b0953', 'hash': '6e5c80f600f45acda3c3101128bb3075bf2cf7af4bab0d99c9d856ebfb4b0953', 'size': 223, 'vsize': 223, 'version': 2, 'locktime': 0, 'vin': [{'txid': '5a9c45b067b26edb6ea3e735d20851efe23fe0653ad15d84276f5f8c9af32318', 'vout': 1, 'scriptSig': {'asm': '304402207018b7fd1ba6624fe9bb0f16cd65fa243d202e32fdff452699f56465b61ab648022009f0dc1a0a63109246c45e120fc0d34b40e789dfc4d05e64f269602c7d67d92101 027f0dc0894bd690635412af782d05e4f79d3d40bf568978c650f3f1ca1a96cf36', 'hex': '47304402207018b7fd1ba6624fe9bb0f16cd65fa243d202e32fdff452699f56465b61ab648022009f0dc1a0a63109246c45e120fc0d34b40e789dfc4d05e64f269602c7d67d9210121027f0dc0894bd690635412af782d05e4f79d3d40bf568978c650f3f1ca1a96cf36'}, 'sequence': '4294967295'}], 'vout': [{'value': '0.00010000', 'n': 0, 'scriptPubKey': {'asm': 'OP_HASH160 9418feed4647e156d6663db3e0cef7c050d03867 OP_EQUAL', 'hex': 'a9149418feed4647e156d6663db3e0cef7c050d0386787', 'type': 'p2sh', 'address': '2N6kHwQy6Ph5EdKNgzGrcW2WhGHKGfmP5ae'}}, {'value': '0.00078644', 'n': 1, 'scriptPubKey': {'asm': 'OP_DUP OP_HASH160 33ecab3d67f0e2bde43e52f41ec1ecbdc73f11f8 OP_EQUALVERIFY OP_CHECKSIG', 'hex': '76a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac', 'type': 'p2pkh', 'address': 'mkFWGt4hT11XS8dJKzzRFsTrqjjAwZfQAC'}}]}
-
swap.providers.bitcoin.rpc.
submit_raw
(raw: str, network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → str¶ Submit original Bitcoin raw into blockchain.
- Parameters
raw (str) – Bitcoin transaction raw.
network (str) – Bitcoin network, defaults to mainnet.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Bitcoin submitted transaction id/hash.
>>> from swap.providers.bitcoin.rpc import submit_raw >>> submit_raw(raw="02000000011823f39a8c5f6f27845dd13a65e03fe2ef5108d235e7a36edb6eb267b0459c5a010000006a47304402207018b7fd1ba6624fe9bb0f16cd65fa243d202e32fdff452699f56465b61ab648022009f0dc1a0a63109246c45e120fc0d34b40e789dfc4d05e64f269602c7d67d9210121027f0dc0894bd690635412af782d05e4f79d3d40bf568978c650f3f1ca1a96cf36ffffffff02102700000000000017a9149418feed4647e156d6663db3e0cef7c050d038678734330100000000001976a91433ecab3d67f0e2bde43e52f41ec1ecbdc73f11f888ac00000000", network="testnet") "167faa4043ff622e7860ee5228d1ad6d763c5a6cfce79dbc3b9b5fc7bded6394"
Utils¶
Bitcoin Utils.
-
swap.providers.bitcoin.utils.
amount_converter
(amount: Union[int, float], symbol: str = 'SATOSHI2BTC') → Union[int, float]¶ Bitcoin amount converter
- Parameters
amount (Union[int, float]) – Bitcoin amount.
symbol (str) – Bitcoin symbol, default to SATOSHI2BTC.
- Returns
int, float – BTC asset amount.
>>> from swap.providers.bitcoin.utils import amount_converter >>> amount_converter(amount=10_000_000, symbol="SATOSHI2BTC") 0.1
-
swap.providers.bitcoin.utils.
fee_calculator
(transaction_input: int = 1, transaction_output: int = 1) → int¶ Bitcoin fee calculator.
- Parameters
transaction_input (int) – transaction input numbers, defaults to 1.
transaction_output (int) – transaction output numbers, defaults to 1.
- Returns
int – Bitcoin fee (SATOSHI amount).
>>> from swap.providers.bitcoin.utils import fee_calculator >>> fee_calculator(transaction_input=2, transaction_output=9) 1836
-
swap.providers.bitcoin.utils.
is_network
(network: str) → bool¶ Check Bitcoin network.
- Parameters
network (str) – Bitcoin network.
- Returns
bool – Bitcoin valid/invalid network.
>>> from swap.providers.bitcoin.utils import is_network >>> is_network(network="testnet") True
-
swap.providers.bitcoin.utils.
is_address
(address: str, network: Optional[str] = None) → bool¶ Check Bitcoin address.
- Parameters
address (str) – Bitcoin address.
network (str) – Bitcoin network, defaults to None.
- Returns
bool – Bitcoin valid/invalid address.
>>> from swap.providers.bitcoin.utils import is_address >>> is_address(address="mrmtGq2HMmqAogSsGDjCtXUpxrb7rHThFH", network="testnet") True
-
swap.providers.bitcoin.utils.
is_transaction_raw
(transaction_raw: str) → bool¶ Check Bitcoin transaction raw.
- Parameters
transaction_raw (str) – Bitcoin transaction raw.
- Returns
bool – Bitcoin valid/invalid transaction raw.
>>> from swap.providers.bitcoin.utils import is_transaction_raw >>> transaction_raw = "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTg4OGJlN2VjMDY1MDk3ZDk1NjY0NzYzZjI3NmQ0MjU1NTJkNzM1ZmIxZDk3NGFlNzhiZjcyMTA2ZGNhMGYzOTEwMTAwMDAwMDAwZmZmZmZmZmYwMjEwMjcwMDAwMDAwMDAwMDAxN2E5MTQyYmIwMTNjM2U0YmViMDg0MjFkZWRjZjgxNWNiNjVhNWMzODgxNzhiODdiY2RkMGUwMDAwMDAwMDAwMTk3NmE5MTQ2NGE4MzkwYjBiMTY4NWZjYmYyZDRiNDU3MTE4ZGM4ZGE5MmQ1NTM0ODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiA5ODQ5NDYsICJuIjogMSwgInNjcmlwdCI6ICI3NmE5MTQ2NGE4MzkwYjBiMTY4NWZjYmYyZDRiNDU3MTE4ZGM4ZGE5MmQ1NTM0ODhhYyJ9XSwgIm5ldHdvcmsiOiAidGVzdG5ldCIsICJ0eXBlIjogImJpdGNvaW5fZnVuZF91bnNpZ25lZCJ9" >>> is_transaction_raw(transaction_raw=transaction_raw) True
-
swap.providers.bitcoin.utils.
decode_transaction_raw
(transaction_raw: str, offline: bool = True, headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → dict¶ Decode Bitcoin transaction raw.
- Parameters
transaction_raw (str) – Bitcoin transaction raw.
offline (bool) – Offline decode, defaults to True.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Decoded Bitcoin transaction raw.
>>> from swap.providers.bitcoin.utils import decode_transaction_raw >>> transaction_raw = "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTg4OGJlN2VjMDY1MDk3ZDk1NjY0NzYzZjI3NmQ0MjU1NTJkNzM1ZmIxZDk3NGFlNzhiZjcyMTA2ZGNhMGYzOTEwMTAwMDAwMDAwZmZmZmZmZmYwMjEwMjcwMDAwMDAwMDAwMDAxN2E5MTQyYmIwMTNjM2U0YmViMDg0MjFkZWRjZjgxNWNiNjVhNWMzODgxNzhiODdiY2RkMGUwMDAwMDAwMDAwMTk3NmE5MTQ2NGE4MzkwYjBiMTY4NWZjYmYyZDRiNDU3MTE4ZGM4ZGE5MmQ1NTM0ODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiA5ODQ5NDYsICJuIjogMSwgInNjcmlwdCI6ICI3NmE5MTQ2NGE4MzkwYjBiMTY4NWZjYmYyZDRiNDU3MTE4ZGM4ZGE5MmQ1NTM0ODhhYyJ9XSwgIm5ldHdvcmsiOiAidGVzdG5ldCIsICJ0eXBlIjogImJpdGNvaW5fZnVuZF91bnNpZ25lZCJ9" >>> decode_transaction_raw(transaction_raw=transaction_raw) {'fee': 678, 'type': 'bitcoin_fund_unsigned', 'tx': {'hex': '0200000001888be7ec065097d95664763f276d425552d735fb1d974ae78bf72106dca0f3910100000000ffffffff02102700000000000017a9142bb013c3e4beb08421dedcf815cb65a5c388178b87bcdd0e00000000001976a91464a8390b0b1685fcbf2d4b457118dc8da92d553488ac00000000', 'txid': 'abc70fd3466aec9478ea3115200a84f993204ad1f614fe08e92ecc5997a0d3ba', 'hash': 'abc70fd3466aec9478ea3115200a84f993204ad1f614fe08e92ecc5997a0d3ba', 'size': 117, 'vsize': 117, 'version': 2, 'locktime': 0, 'vin': [{'txid': '91f3a0dc0621f78be74a971dfb35d75255426d273f766456d9975006ece78b88', 'vout': 1, 'scriptSig': {'asm': '', 'hex': ''}, 'sequence': '4294967295'}], 'vout': [{'value': '0.00010000', 'n': 0, 'scriptPubKey': {'asm': 'OP_HASH160 2bb013c3e4beb08421dedcf815cb65a5c388178b OP_EQUAL', 'hex': 'a9142bb013c3e4beb08421dedcf815cb65a5c388178b87', 'type': 'p2sh', 'address': '2MwEDybGC34949zgzWX4M9FHmE3crDSUydP'}}, {'value': '0.00974268', 'n': 1, 'scriptPubKey': {'asm': 'OP_DUP OP_HASH160 64a8390b0b1685fcbf2d4b457118dc8da92d5534 OP_EQUALVERIFY OP_CHECKSIG', 'hex': '76a91464a8390b0b1685fcbf2d4b457118dc8da92d553488ac', 'type': 'p2pkh', 'address': 'mphBPZf15cRFcL5tUq6mCbE84XobZ1vg7Q'}}]}, 'network': 'testnet'}
-
swap.providers.bitcoin.utils.
submit_transaction_raw
(transaction_raw: str, headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → dict¶ Submit transaction raw to Bitcoin blockchain.
- Parameters
transaction_raw (str) – Bitcoin transaction raw.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Bitcoin submitted transaction id, fee, type and date.
>>> from swap.providers.bitcoin.utils import submit_transaction_raw >>> transaction_raw = "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTg4OGJlN2VjMDY1MDk3ZDk1NjY0NzYzZjI3NmQ0MjU1NTJkNzM1ZmIxZDk3NGFlNzhiZjcyMTA2ZGNhMGYzOTEwMTAwMDAwMDAwZmZmZmZmZmYwMjEwMjcwMDAwMDAwMDAwMDAxN2E5MTQyYmIwMTNjM2U0YmViMDg0MjFkZWRjZjgxNWNiNjVhNWMzODgxNzhiODdiY2RkMGUwMDAwMDAwMDAwMTk3NmE5MTQ2NGE4MzkwYjBiMTY4NWZjYmYyZDRiNDU3MTE4ZGM4ZGE5MmQ1NTM0ODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiA5ODQ5NDYsICJuIjogMSwgInNjcmlwdCI6ICI3NmE5MTQ2NGE4MzkwYjBiMTY4NWZjYmYyZDRiNDU3MTE4ZGM4ZGE5MmQ1NTM0ODhhYyJ9XSwgIm5ldHdvcmsiOiAidGVzdG5ldCIsICJ0eXBlIjogImJpdGNvaW5fZnVuZF91bnNpZ25lZCJ9" >>> submit_transaction_raw(transaction_raw=transaction_raw) {'fee': '...', 'type': '...', 'transaction_id': '...', 'network': '...', 'date': '...'}
-
swap.providers.bitcoin.utils.
get_address_type
(address: str) → str¶ Get Bitcoin address type.
- Parameters
address (str) – Bitcoin address.
- Returns
str – Bitcoin address type (P2PKH, P2SH).
>>> from swap.providers.bitcoin.utils import get_address_type >>> get_address_type(address="mrmtGq2HMmqAogSsGDjCtXUpxrb7rHThFH") "p2pkh"
-
swap.providers.bitcoin.utils.
get_address_hash
(address: str, script: bool = False) → Union[str, btcpy.structs.script.P2pkhScript, btcpy.structs.script.P2shScript]¶ Get Bitcoin address hash.
- Parameters
address (str) – Bitcoin address.
script (bool) – Return script (P2pkhScript, P2shScript), default to False.
- Returns
str – Bitcoin address hash.
>>> from swap.providers.bitcoin.utils import get_address_hash >>> get_address_hash(address="mrmtGq2HMmqAogSsGDjCtXUpxrb7rHThFH", script=False) "7b7c4431a43b612a72f8229935c469f1f6903658"
Bytom¶
Bytom is a protocol of multiple byte assets. Heterogeneous byte-assets operate in different forms on the Bytom Blockchain and atomic assets (warrants, securities, dividends, bonds, intelligence information, forecasting information and other information that exist in the physical world) can be registered, exchanged, gambled via Bytom.
Wallet¶
The implementation of Hierarchical Deterministic (HD) wallets generator for Bytom blockchain.
-
class
swap.providers.bytom.wallet.
Wallet
(network: str = 'mainnet')¶ Bytom Wallet class.
- Parameters
network (str) – Bytom network, defaults to mainnet.
- Returns
Wallet – Bytom wallet instance.
Note
Bytom has only two networks,
mainnet
,solonet
andtestnet
.-
from_entropy
(entropy: str, language: str = 'english', passphrase: Optional[str] = None) → swap.providers.bytom.wallet.Wallet¶ Initiate Bytom wallet from entropy.
- Parameters
entropy (str) – Bytom wallet entropy.
language (str) – Bytom wallet language, default to english.
passphrase (str) – Bytom wallet passphrase, default to None.
- Returns
Wallet – Bytom wallet instance.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") <swap.providers.bytom.wallet.Wallet object at 0x040DA268>
-
from_mnemonic
(mnemonic: str, language: Optional[str] = None, passphrase: Optional[str] = None) → swap.providers.bytom.wallet.Wallet¶ Initialize Bytom wallet from mnemonic.
- Parameters
mnemonic (str) – Bytom wallet mnemonic.
language (str) – Bytom wallet language, default to english.
passphrase (str) – Bytom wallet passphrase, default to None.
- Returns
Wallet – Bytom wallet class instance.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_mnemonic("indicate warm sock mistake code spot acid ribbon sing over taxi toast") <swap.providers.bytom.wallet.Wallet object at 0x040DA268>
-
from_seed
(seed: str) → swap.providers.bytom.wallet.Wallet¶ Initialize Bytom wallet from seed.
- Parameters
seed (str) – Bytom wallet seed.
- Returns
Wallet – Bytom wallet class instance.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_seed("baff3e1fe60e1f2a2d840d304acc98d1818140c79354a353b400fb019bfb256bc392d7aa9047adff1f14bce0342e14605c6743a6c08e02150588375eb2eb7d49") <swap.providers.bytom.wallet.Wallet object at 0x040DA268>
-
from_xprivate_key
(xprivate_key: str) → swap.providers.bytom.wallet.Wallet¶ Initiate Bytom wallet from xprivate key.
- Parameters
xprivate_key (str) – Bytom wallet xprivate key.
- Returns
Wallet – Bytom wallet instance.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_xprivate_key("205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b") <swap.providers.bytom.wallet.Wallet object at 0x040DA268>
-
from_private_key
(private_key: str) → swap.providers.bytom.wallet.Wallet¶ Initialize Bytom wallet from private key.
- Parameters
private_key (str) – Bytom private key.
- Returns
Wallet – Bytom wallet instance.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_private_key("e07af52746e7cccd0a7d1fba6651a6f474bada481f34b1c5bab5e2d71e36ee515803ee0a6682fb19e279d8f4f7acebee8abd0fc74771c71565f9a9643fd77141") <swap.providers.bytom.wallet.Wallet object at 0x040DA268>
-
from_path
(path: str) → swap.providers.bytom.wallet.Wallet¶ Drive Bytom wallet from path.
- Parameters
path (str) – Bytom wallet path.
- Returns
Wallet – Bytom wallet instance.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") <swap.providers.bytom.wallet.Wallet object at 0x040DA268>
-
from_indexes
(indexes: List[str]) → swap.providers.bytom.wallet.Wallet¶ Drive Bytom wallet from indexes.
- Parameters
indexes (list) – Bytom derivation indexes.
- Returns
Wallet – Bytom wallet class instance.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_xprivate_key("205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b") >>> wallet.from_indexes(["2c000000", "99000000", "01000000", "00000000", "01000000"]) <swap.providers.bytom.wallet.Wallet object at 0x040DA268>
-
from_index
(index: int, harden: bool = False) → swap.providers.bytom.wallet.Wallet¶ Drive Bytom wallet from index.
- Parameters
index (int) – Bytom wallet index.
harden (bool) – Use harden, default to False.
- Returns
Wallet – Bytom wallet instance.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_index(44) >>> wallet.from_index(153) >>> wallet.from_index(1) >>> wallet.from_index(0) >>> wallet.from_index(1) <swap.providers.bytom.wallet.Wallet object at 0x040DA268>
-
clean_derivation
() → swap.providers.bytom.wallet.Wallet¶ Clean derivation Bytom wallet.
- Returns
Wallet – Bytom wallet instance.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.indexes() ["2c000000", "99000000", "01000000", "00000000", "01000000"] >>> wallet.path() "m/44/153/1/0/1" >>> wallet.clean_derivation() >>> wallet.indexes() [] >>> wallet.path() None
-
strength
() → Optional[int]¶ Get Bytom wallet strength.
- Returns
int – Bytom wallet strength.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.strength() 128
-
entropy
() → Optional[str]¶ Get Bytom wallet entropy.
- Returns
str – Bytom wallet entropy.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.entropy() "72fee73846f2d1a5807dc8c953bf79f1"
-
mnemonic
() → Optional[str]¶ Get Bytom wallet mnemonic.
- Returns
str – Bytom wallet mnemonic.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.mnemonic() "indicate warm sock mistake code spot acid ribbon sing over taxi toast"
-
passphrase
() → Optional[str]¶ Get Bytom wallet passphrase.
- Returns
str – Bytom wallet passphrase.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1", passphrase="meherett") >>> wallet.passphrase() "meherett"
-
language
() → Optional[str]¶ Get Bytom wallet language.
- Returns
str – Bytom wallet language.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.language() "english"
-
seed
() → Optional[str]¶ Get Bytom wallet seed.
- Returns
str – Bytom wallet seed.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.seed() "baff3e1fe60e1f2a2d840d304acc98d1818140c79354a353b400fb019bfb256bc392d7aa9047adff1f14bce0342e14605c6743a6c08e02150588375eb2eb7d49"
-
path
() → Optional[str]¶ Get Bytom wallet derivation path.
- Returns
str – Bytom derivation path.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet", change=True, address=3) >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.path() "m/44/153/1/0/1"
-
indexes
() → list¶ Get Bytom wallet derivation indexes.
- Returns
list – Bytom derivation indexes.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.indexes() ['2c000000', '99000000', '01000000', '00000000', '01000000']
-
xprivate_key
() → Optional[str]¶ Get Bytom wallet xprivate key.
- Returns
str – Bytom xprivate key.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.xprivate_key() "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b"
-
xpublic_key
() → Optional[str]¶ Get Bytom wallet xpublic key.
- Returns
str – Bytom xpublic key.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.xpublic_key() "16476b7fd68ca2acd92cfc38fa353e75d6103f828276f44d587e660a6bd7a5c5ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b"
-
expand_xprivate_key
() → Optional[str]¶ Get Bytom wallet expand xprivate key.
- Returns
str – Bytom expand xprivate key.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.expand_xprivate_key() "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee5102416c643cfb46ab1ae5a524c8b4aaa002eb771d0d9cfc7490c0c3a8177e053e"
-
child_xprivate_key
() → Optional[str]¶ Get Bytom child wallet xprivate key.
- Returns
str – Bytom child xprivate key.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.child_xprivate_key() "e07af52746e7cccd0a7d1fba6651a6f474bada481f34b1c5bab5e2d71e36ee515803ee0a6682fb19e279d8f4f7acebee8abd0fc74771c71565f9a9643fd77141"
-
child_xpublic_key
() → Optional[str]¶ Get Bytom child wallet xpublic key.
- Returns
str – Bytom child xpublic key.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.child_xpublic_key() "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e25803ee0a6682fb19e279d8f4f7acebee8abd0fc74771c71565f9a9643fd77141"
-
guid
() → Optional[str]¶ Get Bytom wallet Blockcenter GUID.
- Returns
str – Bytom Blockcenter GUID.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.guid() "f0ed6ddd-9d6b-49fd-8866-a52d1083a13b"
-
private_key
() → str¶ Get Bytom wallet private key.
- Returns
str – Bytom private key.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.private_key() "e07af52746e7cccd0a7d1fba6651a6f474bada481f34b1c5bab5e2d71e36ee515803ee0a6682fb19e279d8f4f7acebee8abd0fc74771c71565f9a9643fd77141"
-
public_key
() → str¶ Get Bytom wallet public key.
- Returns
str – Bytom public key.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.public_key() "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2"
-
program
() → str¶ Get Bytom wallet control program.
- Returns
str – Bytom control program.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.program() "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a"
-
address
(network: Optional[str] = 'mainnet') → str¶ Get Bytom wallet address.
- Parameters
network (str) – Bytom network, defaults to mainnet.
- Returns
str – Bytom wallet address.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_indexes(["2c000000", "99000000", "01000000", "00000000", "01000000"]) >>> wallet.address(network="mainnet") "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7"
-
balance
(asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff') → int¶ Get Bytom wallet balance.
- Parameters
asset (str) – Bytom asset id, defaults to BTM asset.
- Returns
int – Bytom wallet balance (NEU amount).
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.balance() 71510800
-
utxos
(asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', limit: int = 15) → list¶ Get Bytom wallet unspent transaction output (UTXO’s).
- Parameters
asset (str) – Bytom asset id, defaults to BTM asset.
limit (int) – Limit of UTXO’s, default is 15.
- Returns
list – Bytom unspent transaction outputs.
>>> from swap.providers.bytom.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.utxos() [{'hash': '7c1e20e6ff719176a3ed6f5332ec3ff665ab28754d2511950e591267e0e675df', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 71510800}, {'hash': '01b07c3523085b75f1e047be3a73b263635d0b86f9b751457a51b26c5a97a110', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 50000}, {'hash': 'e46cfecc1f1a26413172ce81c78affb19408e613915642fa5fb04d3b0a4ffa65', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 100}]
Hash Time Lock Contract (HTLC)¶
Bytom Hash Time Lock Contract (HTLC).
-
class
swap.providers.bytom.htlc.
HTLC
(network: str = 'mainnet')¶ Bytom Hash Time Lock Contract (HTLC).
- Parameters
network (str) – Bytom network, defaults to mainnet.
- Returns
HTLC – Bytom HTLC instance.
Note
Bytom has only three networks,
mainnet
,solonet
andtestnet
.-
build_htlc
(secret_hash: str, recipient_public_key: str, sender_public_key: str, sequence: int = 1000, use_script: bool = False) → swap.providers.bytom.htlc.HTLC¶ Build Bytom Hash Time Lock Contract (HTLC).
- Parameters
secret_hash (str) – secret sha-256 hash.
recipient_public_key (str) – Bytom recipient public key.
sender_public_key (str) – Bytom sender public key.
sequence (int) – Bytom sequence number(expiration block), defaults to Bytom config sequence.
use_script (bool) – Initialize HTLC by using script, default to False.
- Returns
HTLC – Bytom Hash Time Lock Contract (HTLC) instance.
>>> from swap.providers.bytom.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="mainnet") >>> htlc.build_htlc(secret_hash=sha256("Hello Meheret!"), recipient_public_key="3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", sender_public_key="91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2", sequence=1000, use_script=False) <swap.providers.bytom.htlc.HTLC object at 0x0409DAF0>
-
from_bytecode
(bytecode: str) → swap.providers.bytom.htlc.HTLC¶ Initialize Bytom Hash Time Lock Contract (HTLC) from bytecode.
- Parameters
bytecode (str) – Bytom bytecode.
- Returns
HTLC – Bytom Hash Time Lock Contract (HTLC) instance.
>>> from swap.providers.bytom.htlc import HTLC >>> htlc = HTLC(network="testnet") >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> htlc.from_bytecode(bytecode=bytecode) <swap.providers.bitcoin.htlc.HTLC object at 0x0409DAF0>
-
bytecode
() → str¶ Get Bytom Hash Time Lock Contract (HTLC) bytecode.
- Returns
str – Bytom HTLC bytecode.
>>> from swap.providers.bytom.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="mainnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2", 1000, False) >>> htlc.bytecode() "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0"
-
opcode
() → Optional[str]¶ Get Bytom Hash Time Lock Contract (HTLC) OP_Code.
- Returns
str – Bytom HTLC opcode.
>>> from swap.providers.bytom.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="mainnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2", 1000, False) >>> htlc.opcode() "0xe803 0x91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2 0x3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e 0x3a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb DEPTH 0x547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac FALSE CHECKPREDICATE"
-
hash
() → str¶ Get Bytom Hash Time Lock Contract (HTLC) hash.
- Returns
str – Bytom HTLC hash.
>>> from swap.providers.bytom.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="mainnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2", 1000, False) >>> htlc.hash() "4f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc"
-
address
() → str¶ Get Bytom Hash Time Lock Contract (HTLC) address.
- Returns
str – Bytom HTLC address.
>>> from swap.providers.bytom.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="mainnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2", 1000, False) >>> htlc.address() "bm1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07q3yf5q8"
-
balance
(asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff') → int¶ Get Bytom HTLC balance.
- Parameters
asset (str) – Bytom asset id, defaults to BTM asset.
- Returns
int – Bytom HTLC balance (NEU amount).
>>> from swap.providers.bytom.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="mainnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2", 1000, False) >>> htlc.balance(asset="ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") 30000
-
utxos
(asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', limit: int = 15) → list¶ Get Bytom HTLC unspent transaction output (UTXO’s).
- Parameters
asset (str) – Bytom asset id, defaults to BTM asset.
limit (int) – Limit of UTXO’s, default is 15.
- Returns
list – Bytom unspent transaction outputs.
>>> from swap.providers.bytom.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="mainnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2", 1000, False) >>> htlc.utxos(asset="ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") [{'hash': '8a0d861767240a284ebed0320b11b81253727ecdac0c80bc6a88127327c0d8a1', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 10000}, {'hash': '76c9ec09f4990122337b1cb9925abc5c5de115065cb1eea7adb7b5fdeb2c6e1e', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 10000}, {'hash': '2637748a967aa5428008aa57159b9795f3aff63b81c72df0575041e7df1efe01', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 10000}]
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
andmainnet
.-
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"
Solver¶
Bytom solver.
FundSolver¶
-
class
swap.providers.bytom.solver.
FundSolver
(xprivate_key: str, account: int = 1, change: bool = False, address: int = 1, path: Optional[str] = None, indexes: Optional[List[str]] = None)¶ Bytom Fund solver.
- Parameters
xprivate_key (str) – Bytom sender xprivate key.
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, defaults to None.
indexes (list) – Bytom derivation indexes, defaults to None.
- Returns
FundSolver – Bytom fund solver instance.
>>> from swap.providers.bytom.solver import FundSolver >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(xprivate_key=sender_xprivate_key) <swap.providers.bytom.solver.FundSolver object at 0x03FCCA60>
ClaimSolver¶
-
class
swap.providers.bytom.solver.
ClaimSolver
(xprivate_key: str, secret_key: str, bytecode: str, account: int = 1, change: bool = False, address: int = 1, path: Optional[str] = None, indexes: Optional[List[str]] = None)¶ Bytom Claim solver.
- Parameters
xprivate_key (str) – Bytom sender xprivate key.
secret_key (str) – Secret password/passphrase.
bytecode (str) – Bytom witness HTLC bytecode, defaults 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, defaults to None.
indexes (list) – Bytom derivation indexes, defaults to None.
- Returns
ClaimSolver – Bytom claim solver instance.
>>> from swap.providers.bytom.solver import ClaimSolver >>> recipient_xprivate_key = "58dd4094155bbebf2868189231c47e4e0edbd9f74545f843c9537259e1d7a656983aef283d0ccebecc2d33577a9f650b53ac7adff44f48ec839e3346cc22418f" >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> claim_solver = ClaimSolver(xprivate_key=recipient_xprivate_key, secret_key="Hello Meheret!", bytecode=bytecode) <swap.providers.bytom.solver.ClaimSolver object at 0x03FCCA60>
RefundSolver¶
-
class
swap.providers.bytom.solver.
RefundSolver
(xprivate_key: str, bytecode: str, account: int = 1, change: bool = False, address: int = 1, path: Optional[str] = None, indexes: Optional[List[str]] = None)¶ Bytom Refund solver.
- Parameters
xprivate_key (str) – Bytom sender xprivate key.
bytecode (str) – Bytom witness HTLC bytecode, defaults 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, defaults to None.
indexes (list) – Bytom derivation indexes, defaults to None.
- Returns
RefundSolver – Bytom refund solver instance.
>>> from swap.providers.bytom.solver import RefundSolver >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> refund_solver = RefundSolver(xprivate_key=sender_xprivate_key, bytecode=bytecode) <swap.providers.bytom.solver.RefundSolver object at 0x03FCCA60>
Signature¶
Bytom signature.
-
class
swap.providers.bytom.signature.
Signature
(network: str = 'mainnet')¶ Bytom Signature.
- Parameters
network (str) – Bytom network, defaults to mainnet.
- Returns
Signature – Bytom signature instance.
Note
Bytom has only three networks,
mainnet
,solonet
andtestnet
.-
fee
() → int¶ Get Bytom transaction fee.
- Returns
int – Bytom transaction fee.
>>> from swap.providers.bytom.signature import Signature >>> from swap.providers.bytom.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(sender_xprivate_key) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_fund_transaction_raw, fund_solver) >>> signature.fee() 10000000
-
hash
() → str¶ Get Bytom signature transaction hash.
- Returns
str – Bytom signature transaction hash or transaction id.
>>> from swap.providers.bytom.signature import Signature >>> from swap.providers.bytom.solver import ClaimSolver >>> unsigned_claim_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTNwbHd2bXZ5NHFoam1wNXpmZnptazUwYWFncHVqdDZmNWplODVwIiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkMzA1YTI4ZDhkMzRiNDBjNjU5MzY4MTBmOWU5YzFmOGJjOWM3OTNlYzJlNzJjNzBmOTIwM2ZiYmViMGE1NmRiOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MGFkZTIwNDAxMDExNjAwMTQwZTQzYTkyYTllOGFjYTc4OGViMTU1MWMzMTY0NDhjMmUzZjc4MjE1MDEwMDAxNWQwMTViMTM4ODFmMzI3ZTJiZTBkNWMwMGYzODU2MGYxYzI5NDg2Y2RhZjI1NWMwOWMwMWVlZTFhMWViYWEzNzgzZGRkOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDAwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkyMjAxMjAzZTBhMzc3YWU0YWZhMDMxZDQ1NTE1OTlkOWJiN2Q1YjI3ZjQ3MzZkNzdmNzhjYWM0ZDQ3NmYwZmZiYTVhZTNlMDIwMTNhZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjkwNGUwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkwMDAxM2NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjBkZWUxMDQwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkwMCIsICJoYXNoIjogImQ1NDRhZDJkMDhmOWRkYTMzYjc4OTUzYzc0ZWVkZTljOWViNWQ4MDgzNTY5NTMxMGIyNDJkNTc5NmNmYjkxZDYiLCAidW5zaWduZWRfZGF0YXMiOiBbeyJkYXRhcyI6IFsiNTE3MjI5MGE5ODU4YTRhMDdjNjAzYzc0MWY2ZmQ4ZTg2NzE1YThhNDQ3MGViMjM3ZDBhMmQ4MzI1YzE3MDZiNyJdLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiBudWxsfSwgeyJkYXRhcyI6IFsiZTQxYWI5NjQ3MDFmMjBhMjM0NzMzNDBiMTFkNWNiY2ZiYTlhMzczY2VkZjI4NGY4MDljMGM2MWNlN2Q3MTVkYSJdLCAicHVibGljX2tleSI6ICIzZTBhMzc3YWU0YWZhMDMxZDQ1NTE1OTlkOWJiN2Q1YjI3ZjQ3MzZkNzdmNzhjYWM0ZDQ3NmYwZmZiYTVhZTNlIiwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogIm0vNDQvMTUzLzEvMC8xIn1dLCAic2lnbmF0dXJlcyI6IFtdLCAibmV0d29yayI6ICJtYWlubmV0IiwgInR5cGUiOiAiYnl0b21fY2xhaW1fdW5zaWduZWQifQ" >>> recipient_xprivate_key = "58dd4094155bbebf2868189231c47e4e0edbd9f74545f843c9537259e1d7a656983aef283d0ccebecc2d33577a9f650b53ac7adff44f48ec839e3346cc22418f" >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> claim_solver = ClaimSolver(recipient_xprivate_key, "Hello Meheret!", bytecode) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_claim_transaction_raw, claim_solver) >>> signature.hash() "d544ad2d08f9dda33b78953c74eede9c9eb5d80835695310b242d5796cfb91d6"
-
json
() → dict¶ Get Bytom signature transaction json format.
- Returns
dict – Bytom signature transaction json format.
>>> from swap.providers.bytom.signature import Signature >>> from swap.providers.bytom.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(sender_xprivate_key) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_fund_transaction_raw, fund_solver) >>> signature.json() {"tx_id": "50b336ab6e055d9d4d65a9f2295b53270abd3816c23ba4c954841f399aa772d5", "version": 1, "size": 405, "time_range": 0, "inputs": [{"type": "spend", "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "asset_definition": {}, "amount": 8160000, "control_program": "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", "address": "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "spent_output_id": "88289fa4c7633574931be7ce4102aeb24def0de20e38e7d69a5ddd6efc116b95", "input_id": "49e97e1685d5b08b82713e6acb6747bd176177141cb5618aeecca418c3afd03a", "witness_arguments": ["91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2"], "sign_data": "f7d3aa18b295cda6f2b1132c4231933cc92f3baca705974c5de378f9b695f0e2"}, {"type": "spend", "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "asset_definition": {}, "amount": 167639800, "control_program": "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", "address": "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "spent_output_id": "d0cc73f664fdda20d6a9bb6f4c0204f30e738959b02f3b645ad17d190fafd5b3", "input_id": "d8729c2683f56cb50ee65c12484edfb4ea8182f71b11de84dfaf5cc05ccde47b", "witness_arguments": ["91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2"], "sign_data": "ca615ba2c729e463fbf79a11419176261b1bf6be44813335d2b256e8a7bbceee"}], "outputs": [{"type": "control", "id": "9c8c0b8ceaba9bea5ffe12fc51ac5ef82f1da6bebde537ab7d621845d1182151", "position": 0, "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "asset_definition": {}, "amount": 10000, "control_program": "00204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc", "address": "bm1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07q3yf5q8"}, {"type": "control", "id": "7dc2e56534ee173e0319020db5b05fd4450cab483f9b97f9b01dbc1879b1b8ff", "position": 1, "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "asset_definition": {}, "amount": 173939800, "control_program": "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", "address": "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7"}], "fee": 1850000}
-
raw
() → str¶ Get Bytom signature transaction raw.
- Returns
str – Bytom signature transaction raw.
>>> from swap.providers.bytom.signature import Signature >>> from swap.providers.bytom.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(sender_xprivate_key) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_fund_transaction_raw, fund_solver) >>> signature.raw() "07010002015f015d82e65f964d3c3532548dfde938462f566c95d3c90e6a3a182a0b3bdae46aa790ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8086f20301011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2015f015d070d0eb22d32b82d3d2f3fc4bafb7a85f5229f7fd89042d2ff3257375e43d3ebfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8f5f74f01011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2020146ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff904e012200204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc00013cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8b8f852011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a00"
-
type
() → str¶ Get Bytom signature transaction type.
- Returns
str – Bytom signature transaction type.
>>> from swap.providers.bytom.signature import Signature >>> from swap.providers.bytom.solver import RefundSolver >>> unsigned_refund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgImhhc2giOiAiNjlhNWYzMDI4ODBhNzNkMzYzZWNiMzkyYzgyZGNkMzMyODNiZDFiYmU1NmFhMzAyODU4NzMzZTc5ZTE2Mzc5OCIsICJyYXciOiAiMDcwMTAwMDIwMTVmMDE1ZDMwNWEyOGQ4ZDM0YjQwYzY1OTM2ODEwZjllOWMxZjhiYzljNzkzZWMyZTcyYzcwZjkyMDNmYmJlYjBhNTZkYjlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmODBhZGUyMDQwMTAxMTYwMDE0MGU0M2E5MmE5ZThhY2E3ODhlYjE1NTFjMzE2NDQ4YzJlM2Y3ODIxNTAxMDAwMTVmMDE1ZDgyZTY1Zjk2NGQzYzM1MzI1NDhkZmRlOTM4NDYyZjU2NmM5NWQzYzkwZTZhM2ExODJhMGIzYmRhZTQ2YWE3OTBmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmODA4NmYyMDMwMTAxMTYwMDE0MmNkYTRmOTllYTgxMTJlNmZhNjFjZGQyNjE1N2VkNmRjNDA4MzMyYTIyMDEyMDkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIwMjAxM2FmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOTA0ZTAxMTYwMDE0MmNkYTRmOTllYTgxMTJlNmZhNjFjZGQyNjE1N2VkNmRjNDA4MzMyYTAwMDEzY2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlMDk2ZDMwODAxMTYwMDE0MmNkYTRmOTllYTgxMTJlNmZhNjFjZGQyNjE1N2VkNmRjNDA4MzMyYTAwIiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbIjY0ODJiMmRmZTliM2U3NjY0MzVlMDQ4MmI2MDAzN2FmYWVhYmFhYWExMDg5Mzc0OGEyODhiY2EwMjlmZjFjNTIiXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogbnVsbH0sIHsiZGF0YXMiOiBbIjBhNDY3NmE3MzI0MmNkMTI2NjFkYjBmM2Y3Mzc5NGQ0OWI3Nzc1NTBiZDk4MTc2YThkODhlYTg3NTVlNDE3ZjIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9XSwgInNpZ25hdHVyZXMiOiBbXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJ0eXBlIjogImJ5dG9tX3JlZnVuZF91bnNpZ25lZCJ9" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> refund_solver = RefundSolver(sender_xprivate_key, bytecode, 1000) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_refund_transaction_raw, refund_solver) >>> signature.type() "bytom_refund_signed"
-
sign
(transaction_raw: str, solver: Union[swap.providers.bytom.solver.FundSolver, swap.providers.bytom.solver.ClaimSolver, swap.providers.bytom.solver.RefundSolver]) → Union[swap.providers.bytom.signature.FundSignature, swap.providers.bytom.signature.ClaimSignature, swap.providers.bytom.signature.RefundSignature]¶ Sign unsigned transaction raw.
- Parameters
transaction_raw (str) – Bytom unsigned transaction raw.
solver (bytom.solver.FundSolver, bytom.solver.ClaimSolver, bytom.solver.RefundSolver) – Bytom solver
- Returns
FundSignature, ClaimSignature, RefundSignature – Bytom signature instance.
>>> from swap.providers.bytom.signature import Signature >>> from swap.providers.bytom.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(sender_xprivate_key) >>> signature = Signature("mainnet") >>> signature.sign(transaction_raw=unsigned_fund_transaction_raw, solver=fund_solver) <swap.providers.bytom.signature.FundSignature object at 0x0409DAF0>
-
unsigned_datas
(*args, **kwargs) → list¶ Get Bytom transaction unsigned datas with instruction.
- Returns
list – Bytom transaction unsigned datas.
>>> from swap.providers.bytom.signature import Signature >>> from swap.providers.bytom.solver import ClaimSolver >>> unsigned_claim_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTNwbHd2bXZ5NHFoam1wNXpmZnptazUwYWFncHVqdDZmNWplODVwIiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkMzA1YTI4ZDhkMzRiNDBjNjU5MzY4MTBmOWU5YzFmOGJjOWM3OTNlYzJlNzJjNzBmOTIwM2ZiYmViMGE1NmRiOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MGFkZTIwNDAxMDExNjAwMTQwZTQzYTkyYTllOGFjYTc4OGViMTU1MWMzMTY0NDhjMmUzZjc4MjE1MDEwMDAxNWQwMTViMTM4ODFmMzI3ZTJiZTBkNWMwMGYzODU2MGYxYzI5NDg2Y2RhZjI1NWMwOWMwMWVlZTFhMWViYWEzNzgzZGRkOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDAwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkyMjAxMjAzZTBhMzc3YWU0YWZhMDMxZDQ1NTE1OTlkOWJiN2Q1YjI3ZjQ3MzZkNzdmNzhjYWM0ZDQ3NmYwZmZiYTVhZTNlMDIwMTNhZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjkwNGUwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkwMDAxM2NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjBkZWUxMDQwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkwMCIsICJoYXNoIjogImQ1NDRhZDJkMDhmOWRkYTMzYjc4OTUzYzc0ZWVkZTljOWViNWQ4MDgzNTY5NTMxMGIyNDJkNTc5NmNmYjkxZDYiLCAidW5zaWduZWRfZGF0YXMiOiBbeyJkYXRhcyI6IFsiNTE3MjI5MGE5ODU4YTRhMDdjNjAzYzc0MWY2ZmQ4ZTg2NzE1YThhNDQ3MGViMjM3ZDBhMmQ4MzI1YzE3MDZiNyJdLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiBudWxsfSwgeyJkYXRhcyI6IFsiZTQxYWI5NjQ3MDFmMjBhMjM0NzMzNDBiMTFkNWNiY2ZiYTlhMzczY2VkZjI4NGY4MDljMGM2MWNlN2Q3MTVkYSJdLCAicHVibGljX2tleSI6ICIzZTBhMzc3YWU0YWZhMDMxZDQ1NTE1OTlkOWJiN2Q1YjI3ZjQ3MzZkNzdmNzhjYWM0ZDQ3NmYwZmZiYTVhZTNlIiwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogIm0vNDQvMTUzLzEvMC8xIn1dLCAic2lnbmF0dXJlcyI6IFtdLCAibmV0d29yayI6ICJtYWlubmV0IiwgInR5cGUiOiAiYnl0b21fY2xhaW1fdW5zaWduZWQifQ" >>> recipient_xprivate_key = "58dd4094155bbebf2868189231c47e4e0edbd9f74545f843c9537259e1d7a656983aef283d0ccebecc2d33577a9f650b53ac7adff44f48ec839e3346cc22418f" >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> claim_solver = ClaimSolver(recipient_xprivate_key, "Hello Meheret!", bytecode) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_claim_transaction_raw, claim_solver) >>> signature.unsigned_datas() [{"datas": ["5172290a9858a4a07c603c741f6fd8e86715a8a4470eb237d0a2d8325c1706b7"], "network": "mainnet", "path": null}, {"datas": ["e41ab964701f20a23473340b11d5cbcfba9a373cedf284f809c0c61ce7d715da"], "public_key": "3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", "network": "mainnet", "path": "m/44/153/1/0/1"}]
-
signatures
() → list¶ Get Bytom transaction signatures(signed datas).
- Returns
list – Bytom transaction signatures.
>>> from swap.providers.bytom.signature import Signature >>> from swap.providers.bytom.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(sender_xprivate_key) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_fund_transaction_raw, fund_solver) >>> signature.signatures() [["00c005bc114ec5f89b49e48526f90312b6f1a5274efd252049880023aeb8e7998c15e0baa4ff10fabbdae702f245405a36022e3c9acc5e5e6c9ac4b9d937a801"], ["fbfb123ef062c9068dad22ce28de2a4e72f82076b6f98cb7e0909c11856260e7020aecbdca639f0b6e39d345c05913d2c9291db130b53d5b2bc59f61adfc1406"]]
-
transaction_raw
() → str¶ Get Bytom signed transaction raw.
- Returns
str – Bytom signed transaction raw.
>>> from swap.providers.bytom.signature import Signature >>> from swap.providers.bytom.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(sender_xprivate_key) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_fund_transaction_raw, fund_solver) >>> signature.transaction_raw() "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW1siMDBjMDA1YmMxMTRlYzVmODliNDllNDg1MjZmOTAzMTJiNmYxYTUyNzRlZmQyNTIwNDk4ODAwMjNhZWI4ZTc5OThjMTVlMGJhYTRmZjEwZmFiYmRhZTcwMmYyNDU0MDVhMzYwMjJlM2M5YWNjNWU1ZTZjOWFjNGI5ZDkzN2E4MDEiXSwgWyJmYmZiMTIzZWYwNjJjOTA2OGRhZDIyY2UyOGRlMmE0ZTcyZjgyMDc2YjZmOThjYjdlMDkwOWMxMTg1NjI2MGU3MDIwYWVjYmRjYTYzOWYwYjZlMzlkMzQ1YzA1OTEzZDJjOTI5MWRiMTMwYjUzZDViMmJjNTlmNjFhZGZjMTQwNiJdXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJ0eXBlIjogImJ5dG9tX2Z1bmRfc2lnbmVkIn0"
FundSignature¶
-
class
swap.providers.bytom.signature.
FundSignature
(network: str = 'mainnet')¶ Bytom Fund signature.
- Parameters
network (str) – Bytom network, defaults to mainnet.
- Returns
FundSignature – Bytom fund signature instance.
-
sign
(transaction_raw: str, solver: swap.providers.bytom.solver.FundSolver) → swap.providers.bytom.signature.FundSignature¶ Sign unsigned fund transaction raw.
- Parameters
transaction_raw (str) – Bytom unsigned fund transaction raw.
solver (bytom.solver.FundSolver) – Bytom fund solver.
- Returns
FundSignature – Bytom fund signature instance.
>>> from swap.providers.bytom.signature import FundSignature >>> from swap.providers.bytom.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(sender_xprivate_key) >>> fund_signature = FundSignature("mainnet") >>> fund_signature.sign(unsigned_fund_transaction_raw, fund_solver) <swap.providers.bytom.signature.FundSignature object at 0x0409DAF0>
ClaimSignature¶
-
class
swap.providers.bytom.signature.
ClaimSignature
(network: str = 'mainnet')¶ Bytom Claim signature.
- Parameters
network (str) – Bytom network, defaults to mainnet.
- Returns
ClaimSignature – Bytom claim signature instance.
-
sign
(transaction_raw: str, solver: swap.providers.bytom.solver.ClaimSolver) → swap.providers.bytom.signature.ClaimSignature¶ Sign unsigned claim transaction raw.
- Parameters
transaction_raw (str) – Bytom unsigned claim transaction raw.
solver (bytom.solver.ClaimSolver) – Bytom claim solver.
- Returns
ClaimSignature – Bytom claim signature instance.
>>> from swap.providers.bytom.signature import ClaimSignature >>> from swap.providers.bytom.solver import ClaimSolver >>> unsigned_claim_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTNwbHd2bXZ5NHFoam1wNXpmZnptazUwYWFncHVqdDZmNWplODVwIiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkMzA1YTI4ZDhkMzRiNDBjNjU5MzY4MTBmOWU5YzFmOGJjOWM3OTNlYzJlNzJjNzBmOTIwM2ZiYmViMGE1NmRiOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MGFkZTIwNDAxMDExNjAwMTQwZTQzYTkyYTllOGFjYTc4OGViMTU1MWMzMTY0NDhjMmUzZjc4MjE1MDEwMDAxNWQwMTViMTM4ODFmMzI3ZTJiZTBkNWMwMGYzODU2MGYxYzI5NDg2Y2RhZjI1NWMwOWMwMWVlZTFhMWViYWEzNzgzZGRkOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDAwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkyMjAxMjAzZTBhMzc3YWU0YWZhMDMxZDQ1NTE1OTlkOWJiN2Q1YjI3ZjQ3MzZkNzdmNzhjYWM0ZDQ3NmYwZmZiYTVhZTNlMDIwMTNhZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjkwNGUwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkwMDAxM2NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjBkZWUxMDQwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkwMCIsICJoYXNoIjogImQ1NDRhZDJkMDhmOWRkYTMzYjc4OTUzYzc0ZWVkZTljOWViNWQ4MDgzNTY5NTMxMGIyNDJkNTc5NmNmYjkxZDYiLCAidW5zaWduZWRfZGF0YXMiOiBbeyJkYXRhcyI6IFsiNTE3MjI5MGE5ODU4YTRhMDdjNjAzYzc0MWY2ZmQ4ZTg2NzE1YThhNDQ3MGViMjM3ZDBhMmQ4MzI1YzE3MDZiNyJdLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiBudWxsfSwgeyJkYXRhcyI6IFsiZTQxYWI5NjQ3MDFmMjBhMjM0NzMzNDBiMTFkNWNiY2ZiYTlhMzczY2VkZjI4NGY4MDljMGM2MWNlN2Q3MTVkYSJdLCAicHVibGljX2tleSI6ICIzZTBhMzc3YWU0YWZhMDMxZDQ1NTE1OTlkOWJiN2Q1YjI3ZjQ3MzZkNzdmNzhjYWM0ZDQ3NmYwZmZiYTVhZTNlIiwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogIm0vNDQvMTUzLzEvMC8xIn1dLCAic2lnbmF0dXJlcyI6IFtdLCAibmV0d29yayI6ICJtYWlubmV0IiwgInR5cGUiOiAiYnl0b21fY2xhaW1fdW5zaWduZWQifQ" >>> recipient_xprivate_key = "58dd4094155bbebf2868189231c47e4e0edbd9f74545f843c9537259e1d7a656983aef283d0ccebecc2d33577a9f650b53ac7adff44f48ec839e3346cc22418f" >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> claim_solver = ClaimSolver(recipient_xprivate_key, "Hello Meheret!", bytecode) >>> claim_signature = ClaimSignature("mainnet") >>> claim_signature.sign(transaction_raw=unsigned_claim_transaction_raw, solver=claim_solver) <swap.providers.bytom.signature.ClaimSignature object at 0x0409DAF0>
RefundSignature¶
-
class
swap.providers.bytom.signature.
RefundSignature
(network: str = 'mainnet')¶ Bytom Refund signature.
- Parameters
network (str) – Bytom network, defaults to mainnet.
- Returns
RefundSignature – Bytom claim signature instance.
-
sign
(transaction_raw: str, solver: swap.providers.bytom.solver.RefundSolver) → swap.providers.bytom.signature.RefundSignature¶ Sign unsigned refund transaction raw.
- Parameters
transaction_raw (str) – Bytom unsigned refund transaction raw.
solver (bytom.solver.RefundSolver) – Bytom refund solver.
- Returns
RefundSignature – Bytom refund signature instance.
>>> from swap.providers.bytom.signature import RefundSignature >>> from swap.providers.bytom.solver import RefundSolver >>> unsigned_refund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgImhhc2giOiAiNjlhNWYzMDI4ODBhNzNkMzYzZWNiMzkyYzgyZGNkMzMyODNiZDFiYmU1NmFhMzAyODU4NzMzZTc5ZTE2Mzc5OCIsICJyYXciOiAiMDcwMTAwMDIwMTVmMDE1ZDMwNWEyOGQ4ZDM0YjQwYzY1OTM2ODEwZjllOWMxZjhiYzljNzkzZWMyZTcyYzcwZjkyMDNmYmJlYjBhNTZkYjlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmODBhZGUyMDQwMTAxMTYwMDE0MGU0M2E5MmE5ZThhY2E3ODhlYjE1NTFjMzE2NDQ4YzJlM2Y3ODIxNTAxMDAwMTVmMDE1ZDgyZTY1Zjk2NGQzYzM1MzI1NDhkZmRlOTM4NDYyZjU2NmM5NWQzYzkwZTZhM2ExODJhMGIzYmRhZTQ2YWE3OTBmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmODA4NmYyMDMwMTAxMTYwMDE0MmNkYTRmOTllYTgxMTJlNmZhNjFjZGQyNjE1N2VkNmRjNDA4MzMyYTIyMDEyMDkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIwMjAxM2FmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOTA0ZTAxMTYwMDE0MmNkYTRmOTllYTgxMTJlNmZhNjFjZGQyNjE1N2VkNmRjNDA4MzMyYTAwMDEzY2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlMDk2ZDMwODAxMTYwMDE0MmNkYTRmOTllYTgxMTJlNmZhNjFjZGQyNjE1N2VkNmRjNDA4MzMyYTAwIiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbIjY0ODJiMmRmZTliM2U3NjY0MzVlMDQ4MmI2MDAzN2FmYWVhYmFhYWExMDg5Mzc0OGEyODhiY2EwMjlmZjFjNTIiXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogbnVsbH0sIHsiZGF0YXMiOiBbIjBhNDY3NmE3MzI0MmNkMTI2NjFkYjBmM2Y3Mzc5NGQ0OWI3Nzc1NTBiZDk4MTc2YThkODhlYTg3NTVlNDE3ZjIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9XSwgInNpZ25hdHVyZXMiOiBbXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJ0eXBlIjogImJ5dG9tX3JlZnVuZF91bnNpZ25lZCJ9" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> refund_solver = RefundSolver(sender_xprivate_key, bytecode, 1000) >>> refund_signature = RefundSignature("mainnet") >>> refund_signature.sign(transaction_raw=unsigned_refund_transaction_raw, solver=refund_solver) <swap.providers.bytom.signature.RefundSignature object at 0x0409DAF0>
Remote Procedure Call (RPC)¶
Bytom remote procedure call.
-
swap.providers.bytom.rpc.
get_balance
(address: str, asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → int¶ Get Bytom balance.
- Parameters
address (str) – Bytom address.
asset (str) – Bytom asset, default to BTM asset.
network (str) – Bytom network, defaults to mainnet.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 15.
- Returns
int – Bytom asset balance (NEU amount).
>>> from swap.providers.bytom.rpc import get_balance >>> from swap.providers.bytom.assets import BTM as ASSET >>> get_balance(address="bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", asset=ASSET, network="mainnet") 71560900
-
swap.providers.bytom.rpc.
get_utxos
(program: str, network: str = 'mainnet', asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', limit: int = 15, by: str = 'amount', order: str = 'desc', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → list¶ Get Bytom unspent transaction outputs (UTXO’s).
- Parameters
program (str) – Bytom control program.
network (str) – Bytom network, defaults to mainnet.
asset (str) – Bytom asset id, defaults to BTM asset.
limit (int) – Bytom utxo’s limit, defaults to 15.
by (str) – Sort by, defaults to amount.
order (str) – Sort order, defaults to desc.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
list – Bytom unspent transaction outputs (UTXO’s).
>>> from swap.providers.bytom.rpc import get_utxos >>> get_utxos(program="00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", network="mainnet") [{'hash': '7c1e20e6ff719176a3ed6f5332ec3ff665ab28754d2511950e591267e0e675df', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 71510800}, {'hash': '01b07c3523085b75f1e047be3a73b263635d0b86f9b751457a51b26c5a97a110', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 50000}, {'hash': 'e46cfecc1f1a26413172ce81c78affb19408e613915642fa5fb04d3b0a4ffa65', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 100}]
-
swap.providers.bytom.rpc.
estimate_transaction_fee
(address: str, amount: int, asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', confirmations: int = 1, network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → int¶ Estimate Bytom transaction fee.
- Parameters
address (str) – Bytom address.
amount (int) – Bytom amount (NEU amount).
asset (str) – Bytom asset id, default to BTM asset.
confirmations (int) – Bytom confirmations, default to 1.
network (str) – Bytom network, defaults to solonet.
headers (dict) – Request headers, default to common headers.
timeout (int) – request timeout, default to 60.
- Returns
str – Estimated transaction fee (NEU amount).
>>> from swap.providers.bytom.rpc import estimate_transaction_fee >>> from swap.providers.bytom.assets import BTM as ASSET >>> estimate_transaction_fee(address="bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", asset=ASSET, amount=100_000, confirmations=100, network="mainnet") 449000
-
swap.providers.bytom.rpc.
build_transaction
(address: str, transaction: dict, network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → dict¶ Build Bytom transaction.
- Parameters
address (str) – Bytom address.
transaction (dict) – Bytom transaction (inputs, outputs, fee, confirmations & forbid_chain_tx).
network (str) – Bytom network, defaults to mainnet.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Bytom builted transaction.
>>> from swap.providers.bytom.rpc import build_transaction >>> build_transaction(address="bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", transaction={"fee": "0.1", "confirmations": 1, "inputs": [{"type": "spend_wallet", "amount": "0.0001", "asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}], "outputs": [{"type": "control_address", "amount": "0.0001", "asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "address": "bm1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07q3yf5q8"}]}, network="mainnet") {'tx': {'hash': '5d4ae68487953863783599045f99eb8740b5745376ed8d8926d68de695e72476', 'status': True, 'size': 404, 'submission_timestamp': 0, 'memo': '', 'inputs': [{'script': '00142cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'address': 'bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7', 'asset': {'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'decimals': 0, 'symbol': 'BTM'}, 'amount': '0.0005', 'type': 'spend'}, {'script': '00142cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'address': 'bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7', 'asset': {'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'decimals': 0, 'symbol': 'BTM'}, 'amount': '0.715108', 'type': 'spend'}], 'outputs': [{'utxo_id': '0d5c097b8e75f711765ff63017fe8a4a987d8b50f7ca3a5d1873120af5f46116', 'script': '00204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc', 'address': 'bm1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07q3yf5q8', 'asset': {'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'decimals': 0, 'symbol': 'BTM'}, 'amount': '0.0001', 'type': 'control'}, {'utxo_id': 'c49da44ef15d227ca978191e91d5d8915a3f92baf6b5778b7377deb2bddca554', 'script': '00142cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'address': 'bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7', 'asset': {'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'decimals': 0, 'symbol': 'BTM'}, 'amount': '0.615908', 'type': 'control'}], 'fee': '0.0996', 'balances': [{'asset': {'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'decimals': 0, 'symbol': 'BTM'}, 'amount': '-0.0001'}], 'types': ['ordinary'], 'min_veto_height': 0}, 'raw_transaction': '07010002015e015c88650475abf87eb364f93c608db879ad71643fbc7725ded246e8883e79c75a78ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0860300011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2015f015da72ea4ad87d7b5a51534c07edc005887345ef38fac8d258987dd17268e8d0336ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90d68c2201011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2020146ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff904e012200204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc00013cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909aaf1d011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a00', 'signing_instructions': [{'derivation_path': ['2c000000', '99000000', '01000000', '00000000', '01000000'], 'sign_data': ['a5da2ae06bfaea9854423fe9cc544d775854cf57827c8c2ab606418452d30209'], 'pubkey': '91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2'}, {'derivation_path': ['2c000000', '99000000', '01000000', '00000000', '01000000'], 'sign_data': ['3e44203712c4e981783810875fa67f2efe0afda38afe229fd09da0d113c3d885'], 'pubkey': '91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2'}]}
-
swap.providers.bytom.rpc.
get_transaction
(transaction_id: str, network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → dict¶ Get Bytom transaction detail.
- Parameters
transaction_id (str) – Bytom transaction id.
network (str) – Bytom network, defaults to mainnet.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Bytom transaction detail.
>>> from swap.providers.bytom.rpc import get_transaction >>> get_transaction(transaction_id="bc935995cb3408b51aa3d05e7e77226840eb68340b229f9c561edae31ebc8b95", network="mainnet") {'id': 'bc935995cb3408b51aa3d05e7e77226840eb68340b229f9c561edae31ebc8b95', 'timestamp': 1524765978, 'block_height': 3487, 'trx_amount': 41249562600, 'trx_fee': 437400, 'status_fail': False, 'coinbase': False, 'size': 332, 'chain_status': 'mainnet', 'time_range': 0, 'index_id': 3489, 'mux_id': '305a28d8d34b40c65936810f9e9c1f8bc9c793ec2e72c70f9203fbbeb0a56db9', 'inputs': [{'txtype': 'spend', 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 41250000000, 'control_program': '0014151df3db084d909ccb55d45d4e59db2e17e5f237', 'address': 'bm1qz5wl8kcgfkgfej6463w5ukwm9ct7tu3ht8p7te', 'spent_output_id': '6def8e6a7c29ccff4c5596a37a6698b71f392bf713bc67bb3fa0af54bf50f815', 'input_id': 'fb226e3ad39e38341f0d232c910065b76ef7c267faa3ea4e49a31836405b6747', 'witness_arguments': ['1848cb550620b971fd244eb625ccf4507ccd9944da65b47674550397c983247e1bd3ff880782beca963a81c34c17c8ef664e2501a11cdd9097300e44567ff10f', '268402537b02d91fafdcdeb6eda3aa542548d77cd6cccb38ecd7ea7ce8a22cf7'], 'asset_name': 'BTM', 'asset_definition': '{}', 'cross_chain_asset': False, 'asset_decimals': 8}], 'outputs': [{'txtype': 'control', 'id': 'a8a7b5363379dee8ff77da7c4acf63dc3469a79ebaade079fc1842543964c6e9', 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 41239562600, 'control_program': '0014fc22634a713ac1e6f831c56184f847b7546fbda4', 'address': 'bm1qls3xxjn38tq7d7p3c4scf7z8ka2xl0dyppj52k', 'asset_name': 'BTM', 'asset_definition': '{}', 'cross_chain_asset': False, 'position': 0, 'asset_decimals': 8}, {'txtype': 'control', 'id': '84287fb5b2b461dbd3b937a9013d89c0d54a21768e31fb8345b02d57a7992533', 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 10000000, 'control_program': '00140e43a92a9e8aca788eb1551c316448c2e3f78215', 'address': 'bm1qpep6j2573t983r4325wrzezgct3l0qs4q04pem', 'asset_name': 'BTM', 'asset_definition': '{}', 'cross_chain_asset': False, 'position': 1, 'asset_decimals': 8}], 'confirmations': 558509}
-
swap.providers.bytom.rpc.
decode_raw
(raw: str, network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → dict¶ Decode original Bytom raw.
- Parameters
raw (str) – Bytom transaction raw.
network (str) – Bytom network, defaults to mainnet.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Bytom decoded transaction raw.
>>> from swap.providers.bytom.rpc import decode_raw >>> decode_raw(raw="07010002015e015c88650475abf87eb364f93c608db879ad71643fbc7725ded246e8883e79c75a78ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0860300011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2015f015da72ea4ad87d7b5a51534c07edc005887345ef38fac8d258987dd17268e8d0336ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90d68c2201011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2020146ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff904e012200204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc00013cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909aaf1d011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a00", network="testnet") {'tx_id': '5d4ae68487953863783599045f99eb8740b5745376ed8d8926d68de695e72476', 'version': 1, 'size': 404, 'time_range': 0, 'inputs': [{'type': 'spend', 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'asset_definition': {}, 'amount': 50000, 'control_program': '00142cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'address': 'bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7', 'spent_output_id': '01b07c3523085b75f1e047be3a73b263635d0b86f9b751457a51b26c5a97a110', 'input_id': 'de193c78772c93356f81a5061a90d8dcfba84d03ae4d78b2a57a9201f88c38af', 'witness_arguments': ['91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2'], 'sign_data': 'a5da2ae06bfaea9854423fe9cc544d775854cf57827c8c2ab606418452d30209'}, {'type': 'spend', 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'asset_definition': {}, 'amount': 71510800, 'control_program': '00142cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'address': 'bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7', 'spent_output_id': '7c1e20e6ff719176a3ed6f5332ec3ff665ab28754d2511950e591267e0e675df', 'input_id': 'de2c7bcf9caf00f78ca8e316cf37cf88c86b0457e47cf58e2465d783151abd0e', 'witness_arguments': ['91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2'], 'sign_data': '3e44203712c4e981783810875fa67f2efe0afda38afe229fd09da0d113c3d885'}], 'outputs': [{'type': 'control', 'id': '0d5c097b8e75f711765ff63017fe8a4a987d8b50f7ca3a5d1873120af5f46116', 'position': 0, 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'asset_definition': {}, 'amount': 10000, 'control_program': '00204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc', 'address': 'bm1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07q3yf5q8'}, {'type': 'control', 'id': 'c49da44ef15d227ca978191e91d5d8915a3f92baf6b5778b7377deb2bddca554', 'position': 1, 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'asset_definition': {}, 'amount': 61590800, 'control_program': '00142cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'address': 'bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7'}], 'fee': 9960000}
-
swap.providers.bytom.rpc.
submit_raw
(address: str, raw: str, signatures: list, network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → str¶ Submit original Bytom raw into blockchain.
- Parameters
address (str) – Bytom address.
raw (str) – Bytom transaction raw.
signatures (list) – Bytom signed massage datas.
network (str) – Bytom network, defaults to mainnet.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
str – Bytom submitted transaction id/hash.
>>> from swap.providers.bytom.rpc import submit_raw >>> submit_raw(address="bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", raw="07010002015e015c88650475abf87eb364f93c608db879ad71643fbc7725ded246e8883e79c75a78ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd0860300011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2015f015da72ea4ad87d7b5a51534c07edc005887345ef38fac8d258987dd17268e8d0336ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90d68c2201011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2020146ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff904e012200204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc00013cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909aaf1d011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a00", signatures=[["f8466336a79d166e47fb5d64f1e7ec01b203b59b3ee86686492bd1e4d0bdd642dfe4a575049071a052a441635c336708ab7d869cccd5331bc29f60e0ed9cd80d"], ["ebf33fbda5c2f3d144e90c3b763b1e7e42d501e595216fcd2b310b089918bae2ef4c7b8a2e1f650ee741578aba7960706d2bf9be7dffbf0fe77199075f155909"]], network="mainnet") "2993414225f65390220730d0c1a356c14e91bca76db112d37366df93e364a492"
Utils¶
Bytom Utils.
-
swap.providers.bytom.utils.
amount_converter
(amount: Union[int, float], symbol: str = 'NEU2BTM') → Union[int, float]¶ Bytom amount converter
- Parameters
amount (int, float) – Bytom amount.
symbol (str) – Bytom symbol, default to NEU2BTM.
- Returns
int, float – BTM asset amount.
>>> from swap.providers.bytom.utils import amount_converter >>> amount_converter(amount=10_000_000, symbol="NEU2BTM") 0.1
-
swap.providers.bytom.utils.
is_network
(network: str) → bool¶ Check Bytom network.
- Parameters
network (str) – Bytom network.
- Returns
bool – Bytom valid/invalid network.
>>> from swap.providers.bytom.utils import is_network >>> is_network(network="solonet") True
-
swap.providers.bytom.utils.
is_address
(address: str, network: Optional[str] = None) → bool¶ Check Bytom address.
- Parameters
address (str) – Bytom address.
network (str) – Bytom network, defaults to None.
- Returns
bool – Bytom valid/invalid address.
>>> from swap.providers.bytom.utils import is_address >>> is_address(address="bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", network="mainnet") True
-
swap.providers.bytom.utils.
is_transaction_raw
(transaction_raw: str) → bool¶ Check Bytom transaction raw.
- Parameters
transaction_raw (str) – Bytom transaction raw.
- Returns
bool – Bytom valid/invalid transaction raw.
>>> from swap.providers.bytom.utils import is_transaction_raw >>> transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcWU5MHFqdDl3NG04cnQzdG51dTBwenAyNGRrZmZlbHlzOHpjd3llIiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkMzA1YTI4ZDhkMzRiNDBjNjU5MzY4MTBmOWU5YzFmOGJjOWM3OTNlYzJlNzJjNzBmOTIwM2ZiYmViMGE1NmRiOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MGFkZTIwNDAxMDExNjAwMTQwZTQzYTkyYTllOGFjYTc4OGViMTU1MWMzMTY0NDhjMmUzZjc4MjE1MDEwMDAxNWYwMTVkMjAyZmQyNTU3YjY3ZjFkZjhiOGFjZWYwNjZmNWQ0NmE4NTAwODE0MzliNDE5MzI1ZDU1ZGJkOTM0MWUxMWFjNGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg0YWY1ZjAxMDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMjIwMTIwNTk5MDdmZGFkMGZmOTVmZWJhNDNhZWYzN2QyZTU1YzU3YjZlMTg2Y2QzYWQxN2M4M2U2YzgwYzY1ODIxOGI2NTAyMDEzYWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmUwOTQ5MDY0MDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMDAiLCAiaGFzaCI6ICI3NzlmYzliOWNhNGRiMTVkNDFhYzgwNDNlZDRlNDFkYjg4NDU2ZjA1YzljZmJhMDQ5MzYyZWNlZmQ2MjY3ZmMzIiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbIjMzZThkYThjZThlZjEzZmI0OTM4YTM3NGFlYTM2NjRlNGNkMmNkMDBmZGQ5ZDI5ODU5M2JkYmQ4NzJkNjZiODgiXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogbnVsbH0sIHsiZGF0YXMiOiBbIjc1ZTg3Yzc5MzNiNGRjNGE4N2UwNmZlZDMyM2U4NDI1ZTU0YTQ5NGZmODBkYzdmOGM0NTUyY2RiMGE2YmM3NGEiXSwgInB1YmxpY19rZXkiOiAiNTk5MDdmZGFkMGZmOTVmZWJhNDNhZWYzN2QyZTU1YzU3YjZlMTg2Y2QzYWQxN2M4M2U2YzgwYzY1ODIxOGI2NSIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9XSwgInNpZ25hdHVyZXMiOiBbXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJ0eXBlIjogImJ5dG9tX2NsYWltX3Vuc2lnbmVkIn0" >>> is_transaction_raw(transaction_raw=transaction_raw) True
-
swap.providers.bytom.utils.
decode_transaction_raw
(transaction_raw: str, headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → dict¶ Decode Bytom transaction raw.
- Parameters
transaction_raw (str) – Bytom transaction raw.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Decoded Bytom transaction raw.
>>> from swap.providers.bytom.utils import decode_transaction_raw >>> transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcWU5MHFqdDl3NG04cnQzdG51dTBwenAyNGRrZmZlbHlzOHpjd3llIiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkMzA1YTI4ZDhkMzRiNDBjNjU5MzY4MTBmOWU5YzFmOGJjOWM3OTNlYzJlNzJjNzBmOTIwM2ZiYmViMGE1NmRiOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MGFkZTIwNDAxMDExNjAwMTQwZTQzYTkyYTllOGFjYTc4OGViMTU1MWMzMTY0NDhjMmUzZjc4MjE1MDEwMDAxNWYwMTVkMjAyZmQyNTU3YjY3ZjFkZjhiOGFjZWYwNjZmNWQ0NmE4NTAwODE0MzliNDE5MzI1ZDU1ZGJkOTM0MWUxMWFjNGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg0YWY1ZjAxMDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMjIwMTIwNTk5MDdmZGFkMGZmOTVmZWJhNDNhZWYzN2QyZTU1YzU3YjZlMTg2Y2QzYWQxN2M4M2U2YzgwYzY1ODIxOGI2NTAyMDEzYWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmUwOTQ5MDY0MDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMDAiLCAiaGFzaCI6ICI3NzlmYzliOWNhNGRiMTVkNDFhYzgwNDNlZDRlNDFkYjg4NDU2ZjA1YzljZmJhMDQ5MzYyZWNlZmQ2MjY3ZmMzIiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbIjMzZThkYThjZThlZjEzZmI0OTM4YTM3NGFlYTM2NjRlNGNkMmNkMDBmZGQ5ZDI5ODU5M2JkYmQ4NzJkNjZiODgiXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogbnVsbH0sIHsiZGF0YXMiOiBbIjc1ZTg3Yzc5MzNiNGRjNGE4N2UwNmZlZDMyM2U4NDI1ZTU0YTQ5NGZmODBkYzdmOGM0NTUyY2RiMGE2YmM3NGEiXSwgInB1YmxpY19rZXkiOiAiNTk5MDdmZGFkMGZmOTVmZWJhNDNhZWYzN2QyZTU1YzU3YjZlMTg2Y2QzYWQxN2M4M2U2YzgwYzY1ODIxOGI2NSIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9XSwgInNpZ25hdHVyZXMiOiBbXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJ0eXBlIjogImJ5dG9tX2NsYWltX3Vuc2lnbmVkIn0" >>> decode_transaction_raw(transaction_raw=transaction_raw) {'fee': ..., 'type': '...', 'address': '...', 'transaction': {...}, 'unsigned_datas': [...], 'signatures': [...], 'network': '...'}
-
swap.providers.bytom.utils.
submit_transaction_raw
(transaction_raw: str, headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → dict¶ Submit Bytom transaction raw.
- Parameters
transaction_raw (str) – Bytom transaction raw.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Bytom submitted transaction id, fee, type and date.
>>> from swap.providers.bytom.utils import submit_transaction_raw >>> transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcWU5MHFqdDl3NG04cnQzdG51dTBwenAyNGRrZmZlbHlzOHpjd3llIiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkMzA1YTI4ZDhkMzRiNDBjNjU5MzY4MTBmOWU5YzFmOGJjOWM3OTNlYzJlNzJjNzBmOTIwM2ZiYmViMGE1NmRiOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MGFkZTIwNDAxMDExNjAwMTQwZTQzYTkyYTllOGFjYTc4OGViMTU1MWMzMTY0NDhjMmUzZjc4MjE1MDEwMDAxNWYwMTVkMjAyZmQyNTU3YjY3ZjFkZjhiOGFjZWYwNjZmNWQ0NmE4NTAwODE0MzliNDE5MzI1ZDU1ZGJkOTM0MWUxMWFjNGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg0YWY1ZjAxMDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMjIwMTIwNTk5MDdmZGFkMGZmOTVmZWJhNDNhZWYzN2QyZTU1YzU3YjZlMTg2Y2QzYWQxN2M4M2U2YzgwYzY1ODIxOGI2NTAyMDEzYWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmUwOTQ5MDY0MDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMDAiLCAiaGFzaCI6ICI3NzlmYzliOWNhNGRiMTVkNDFhYzgwNDNlZDRlNDFkYjg4NDU2ZjA1YzljZmJhMDQ5MzYyZWNlZmQ2MjY3ZmMzIiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbIjMzZThkYThjZThlZjEzZmI0OTM4YTM3NGFlYTM2NjRlNGNkMmNkMDBmZGQ5ZDI5ODU5M2JkYmQ4NzJkNjZiODgiXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogbnVsbH0sIHsiZGF0YXMiOiBbIjc1ZTg3Yzc5MzNiNGRjNGE4N2UwNmZlZDMyM2U4NDI1ZTU0YTQ5NGZmODBkYzdmOGM0NTUyY2RiMGE2YmM3NGEiXSwgInB1YmxpY19rZXkiOiAiNTk5MDdmZGFkMGZmOTVmZWJhNDNhZWYzN2QyZTU1YzU3YjZlMTg2Y2QzYWQxN2M4M2U2YzgwYzY1ODIxOGI2NSIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9XSwgInNpZ25hdHVyZXMiOiBbXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJ0eXBlIjogImJ5dG9tX2NsYWltX3Vuc2lnbmVkIn0" >>> submit_transaction_raw(transaction_raw=transaction_raw) {'fee': ..., 'type': '...', 'transaction_id': '...', 'network': '...', 'date': '...'}
-
swap.providers.bytom.utils.
get_address_type
(address: str) → Optional[str]¶ Get Bytom address type.
- Parameters
address (str) – Bytom address.
- Returns
str – Bytom address type (P2WPKH, P2WSH).
>>> from swap.providers.bytom.utils import get_address_type >>> get_address_type(address="bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7") "p2wpkh"
Vapor¶
Vapor is a sidechain of Bytom blockchain.
Wallet¶
The implementation of Hierarchical Deterministic (HD) wallets generator for Vapor blockchain.
-
class
swap.providers.vapor.wallet.
Wallet
(network: str = 'mainnet')¶ Vapor Wallet class.
- Parameters
network (str) – Vapor network, defaults to mainnet.
- Returns
Wallet – Vapor wallet instance.
Note
Vapor has only two networks,
mainnet
,solonet
andtestnet
.-
from_entropy
(entropy: str, language: str = 'english', passphrase: Optional[str] = None) → swap.providers.vapor.wallet.Wallet¶ Initiate Vapor wallet from entropy.
- Parameters
entropy (str) – Vapor wallet entropy.
language (str) – Vapor wallet language, default to english.
passphrase (str) – Vapor wallet passphrase, default to None.
- Returns
Wallet – Vapor wallet instance.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") <swap.providers.vapor.wallet.Wallet object at 0x040DA268>
-
from_mnemonic
(mnemonic: str, language: Optional[str] = None, passphrase: Optional[str] = None) → swap.providers.vapor.wallet.Wallet¶ Initialize Vapor wallet from mnemonic.
- Parameters
mnemonic (str) – Vapor wallet mnemonic.
language (str) – Vapor wallet language, default to english.
passphrase (str) – Vapor wallet passphrase, default to None.
- Returns
Wallet – Vapor wallet class instance.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_mnemonic("indicate warm sock mistake code spot acid ribbon sing over taxi toast") <swap.providers.vapor.wallet.Wallet object at 0x040DA268>
-
from_seed
(seed: str) → swap.providers.vapor.wallet.Wallet¶ Initialize Vapor wallet from seed.
- Parameters
seed (str) – Vapor wallet seed.
- Returns
Wallet – Vapor wallet class instance.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_seed("baff3e1fe60e1f2a2d840d304acc98d1818140c79354a353b400fb019bfb256bc392d7aa9047adff1f14bce0342e14605c6743a6c08e02150588375eb2eb7d49") <swap.providers.vapor.wallet.Wallet object at 0x040DA268>
-
from_xprivate_key
(xprivate_key: str) → swap.providers.vapor.wallet.Wallet¶ Initiate Vapor wallet from xprivate key.
- Parameters
xprivate_key (str) – Vapor wallet xprivate key.
- Returns
Wallet – Vapor wallet instance.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_xprivate_key("205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b") <swap.providers.vapor.wallet.Wallet object at 0x040DA268>
-
from_private_key
(private_key: str) → swap.providers.vapor.wallet.Wallet¶ Initialize Vapor wallet from private key.
- Parameters
private_key (str) – Vapor private key.
- Returns
Wallet – Vapor wallet instance.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_private_key("e07af52746e7cccd0a7d1fba6651a6f474bada481f34b1c5bab5e2d71e36ee515803ee0a6682fb19e279d8f4f7acebee8abd0fc74771c71565f9a9643fd77141") <swap.providers.vapor.wallet.Wallet object at 0x040DA268>
-
from_path
(path: str) → swap.providers.vapor.wallet.Wallet¶ Drive Vapor wallet from path.
- Parameters
path (str) – Vapor wallet path.
- Returns
Wallet – Vapor wallet instance.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") <swap.providers.vapor.wallet.Wallet object at 0x040DA268>
-
from_indexes
(indexes: List[str]) → swap.providers.vapor.wallet.Wallet¶ Drive Vapor wallet from indexes.
- Parameters
indexes (list) – Vapor derivation indexes.
- Returns
Wallet – Vapor wallet class instance.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_xprivate_key("205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b") >>> wallet.from_indexes(["2c000000", "99000000", "01000000", "00000000", "01000000"]) <swap.providers.vapor.wallet.Wallet object at 0x040DA268>
-
from_index
(index: int, harden: bool = False) → swap.providers.vapor.wallet.Wallet¶ Drive Vapor wallet from index.
- Parameters
index (int) – Vapor wallet index.
harden (bool) – Use harden, default to False.
- Returns
Wallet – Vapor wallet instance.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_index(44) >>> wallet.from_index(153) >>> wallet.from_index(1) >>> wallet.from_index(0) >>> wallet.from_index(1) <swap.providers.vapor.wallet.Wallet object at 0x040DA268>
-
clean_derivation
() → swap.providers.vapor.wallet.Wallet¶ Clean derivation Vapor wallet.
- Returns
Wallet – Vapor wallet instance.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.indexes() ["2c000000", "99000000", "01000000", "00000000", "01000000"] >>> wallet.path() "m/44/153/1/0/1" >>> wallet.clean_derivation() >>> wallet.indexes() [] >>> wallet.path() None
-
strength
() → Optional[int]¶ Get Vapor wallet strength.
- Returns
int – Vapor wallet strength.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.strength() 128
-
entropy
() → Optional[str]¶ Get Vapor wallet entropy.
- Returns
str – Vapor wallet entropy.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.entropy() "72fee73846f2d1a5807dc8c953bf79f1"
-
mnemonic
() → Optional[str]¶ Get Vapor wallet mnemonic.
- Returns
str – Vapor wallet mnemonic.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.mnemonic() "indicate warm sock mistake code spot acid ribbon sing over taxi toast"
-
passphrase
() → Optional[str]¶ Get Vapor wallet passphrase.
- Returns
str – Vapor wallet passphrase.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1", passphrase="meherett") >>> wallet.passphrase() "meherett"
-
language
() → Optional[str]¶ Get Vapor wallet language.
- Returns
str – Vapor wallet language.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.language() "english"
-
seed
() → Optional[str]¶ Get Vapor wallet seed.
- Returns
str – Vapor wallet seed.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.seed() "baff3e1fe60e1f2a2d840d304acc98d1818140c79354a353b400fb019bfb256bc392d7aa9047adff1f14bce0342e14605c6743a6c08e02150588375eb2eb7d49"
-
path
() → Optional[str]¶ Get Vapor wallet derivation path.
- Returns
str – Vapor derivation path.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet", change=True, address=3) >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.path() "m/44/153/1/0/1"
-
indexes
() → list¶ Get Vapor wallet derivation indexes.
- Returns
list – Vapor derivation indexes.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.indexes() ['2c000000', '99000000', '01000000', '00000000', '01000000']
-
xprivate_key
() → Optional[str]¶ Get Vapor wallet xprivate key.
- Returns
str – Vapor xprivate key.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.xprivate_key() "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b"
-
xpublic_key
() → Optional[str]¶ Get Vapor wallet xpublic key.
- Returns
str – Vapor xpublic key.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.xpublic_key() "16476b7fd68ca2acd92cfc38fa353e75d6103f828276f44d587e660a6bd7a5c5ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b"
-
expand_xprivate_key
() → Optional[str]¶ Get Vapor wallet expand xprivate key.
- Returns
str – Vapor expand xprivate key.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.expand_xprivate_key() "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee5102416c643cfb46ab1ae5a524c8b4aaa002eb771d0d9cfc7490c0c3a8177e053e"
-
child_xprivate_key
() → Optional[str]¶ Get Vapor child wallet xprivate key.
- Returns
str – Vapor child xprivate key.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.child_xprivate_key() "e07af52746e7cccd0a7d1fba6651a6f474bada481f34b1c5bab5e2d71e36ee515803ee0a6682fb19e279d8f4f7acebee8abd0fc74771c71565f9a9643fd77141"
-
child_xpublic_key
() → Optional[str]¶ Get Vapor child wallet xpublic key.
- Returns
str – Vapor child xpublic key.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.child_xpublic_key() "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e25803ee0a6682fb19e279d8f4f7acebee8abd0fc74771c71565f9a9643fd77141"
-
guid
() → Optional[str]¶ Get Vapor wallet Blockcenter GUID.
- Returns
str – Vapor Blockcenter GUID.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.guid() "f0ed6ddd-9d6b-49fd-8866-a52d1083a13b"
-
private_key
() → str¶ Get Vapor wallet private key.
- Returns
str – Vapor private key.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.private_key() "e07af52746e7cccd0a7d1fba6651a6f474bada481f34b1c5bab5e2d71e36ee515803ee0a6682fb19e279d8f4f7acebee8abd0fc74771c71565f9a9643fd77141"
-
public_key
() → str¶ Get Vapor wallet public key.
- Returns
str – Vapor public key.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.public_key() "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2"
-
program
() → str¶ Get Vapor wallet control program.
- Returns
str – Vapor control program.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.program() "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a"
-
address
(network: Optional[str] = 'mainnet') → str¶ Get Vapor wallet address.
- Parameters
network (str) – Vapor network, defaults to mainnet.
- Returns
str – Vapor wallet address.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_indexes(["2c000000", "99000000", "01000000", "00000000", "01000000"]) >>> wallet.address(network="mainnet") "vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag"
-
balance
(asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff') → int¶ Get Vapor wallet balance.
- Parameters
asset (str) – Vapor asset id, defaults to BTM asset.
- Returns
int – Vapor wallet balance (NEU amount).
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.balance() 47000000
-
utxos
(asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', limit: int = 15) → list¶ Get Vapor wallet unspent transaction output (UTXO’s).
- Parameters
asset (str) – Vapor asset id, defaults to BTM asset.
limit (int) – Limit of UTXO’s, default is 15.
- Returns
list – Vapor unspent transaction outputs.
>>> from swap.providers.vapor.wallet import Wallet >>> wallet = Wallet(network="mainnet") >>> wallet.from_entropy("72fee73846f2d1a5807dc8c953bf79f1") >>> wallet.from_path("m/44/153/1/0/1") >>> wallet.utxos() [{'hash': '4e2a17b01b9307107f0abb48ef757bec56befc74b903cfdb763981943bbe318b', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 47000000}]
Hash Time Lock Contract (HTLC)¶
Vapor Hash Time Lock Contract (HTLC).
-
class
swap.providers.vapor.htlc.
HTLC
(network: str = 'mainnet')¶ Vapor Hash Time Lock Contract (HTLC).
- Parameters
network (str) – Vapor network, defaults to mainnet.
- Returns
HTLC – Vapor HTLC instance.
Note
Vapor has only three networks,
mainnet
,solonet
andtestnet
.-
build_htlc
(secret_hash: str, recipient_public_key: str, sender_public_key: str, sequence: int = 1000, use_script: bool = False) → swap.providers.vapor.htlc.HTLC¶ Build Vapor Hash Time Lock Contract (HTLC).
- Parameters
secret_hash (str) – secret sha-256 hash.
recipient_public_key (str) – Vapor recipient public key.
sender_public_key (str) – Vapor sender public key.
sequence (int) – Vapor sequence number(expiration block), defaults to Vapor config sequence.
use_script (bool) – Initialize HTLC by using script, default to False.
- Returns
HTLC – Vapor Hash Time Lock Contract (HTLC) instance.
>>> from swap.providers.vapor.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="mainnet") >>> htlc.build_htlc(secret_hash=sha256("Hello Meheret!"), recipient_public_key="3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", sender_public_key="91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2", sequence=1000, use_script=False) <swap.providers.vapor.htlc.HTLC object at 0x0409DAF0>
-
from_bytecode
(bytecode: str) → swap.providers.vapor.htlc.HTLC¶ Initialize Vapor Hash Time Lock Contract (HTLC) from bytecode.
- Parameters
bytecode (str) – Vapor bytecode.
- Returns
HTLC – Vapor Hash Time Lock Contract (HTLC) instance.
>>> from swap.providers.vapor.htlc import HTLC >>> htlc = HTLC(network="testnet") >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> htlc.from_bytecode(bytecode=bytecode) <swap.providers.bitcoin.htlc.HTLC object at 0x0409DAF0>
-
bytecode
() → str¶ Get Vapor Hash Time Lock Contract (HTLC) bytecode.
- Returns
str – Vapor HTLC bytecode.
>>> from swap.providers.vapor.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="mainnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2", 1000, False) >>> htlc.bytecode() "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0"
-
opcode
() → Optional[str]¶ Get Vapor Hash Time Lock Contract (HTLC) OP_Code.
- Returns
str – Vapor HTLC opcode.
>>> from swap.providers.vapor.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="mainnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2", 1000, False) >>> htlc.opcode() "0xe803 0x91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2 0x3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e 0x3a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb DEPTH 0x547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac FALSE CHECKPREDICATE"
-
hash
() → str¶ Get Vapor Hash Time Lock Contract (HTLC) hash.
- Returns
str – Vapor HTLC hash.
>>> from swap.providers.vapor.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="mainnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2", 1000, False) >>> htlc.hash() "4f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc"
-
address
() → str¶ Get Vapor Hash Time Lock Contract (HTLC) address.
- Returns
str – Vapor HTLC address.
>>> from swap.providers.vapor.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="mainnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2", 1000, False) >>> htlc.address() "vp1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07qcyvk37"
-
balance
(asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff') → int¶ Get Vapor HTLC balance.
- Parameters
asset (str) – Vapor asset id, defaults to BTM asset.
- Returns
int – Vapor HTLC balance (NEU amount).
>>> from swap.providers.vapor.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="mainnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2", 1000, False) >>> htlc.balance(asset="ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") 30000
-
utxos
(asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', limit: int = 15) → list¶ Get Vapor HTLC unspent transaction output (UTXO’s).
- Parameters
asset (str) – Vapor asset id, defaults to BTM asset.
limit (int) – Limit of UTXO’s, default is 15.
- Returns
list – Vapor unspent transaction outputs.
>>> from swap.providers.vapor.htlc import HTLC >>> from swap.utils import sha256 >>> htlc = HTLC(network="mainnet") >>> htlc.build_htlc(sha256("Hello Meheret!"), "3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", "91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2", 1000, False) >>> htlc.utxos(asset="ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") [{'hash': '8a0d861767240a284ebed0320b11b81253727ecdac0c80bc6a88127327c0d8a1', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 10000}, {'hash': '76c9ec09f4990122337b1cb9925abc5c5de115065cb1eea7adb7b5fdeb2c6e1e', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 10000}, {'hash': '2637748a967aa5428008aa57159b9795f3aff63b81c72df0575041e7df1efe01', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 10000}]
Transaction¶
Bitcoin transaction in blockchain network.
-
class
swap.providers.vapor.transaction.
Transaction
(network: str = 'mainnet')¶ Vapor Transaction.
- Parameters
network (str) – Vapor network, defaults to mainnet.
- Returns
Transaction – Vapor transaction instance.
Note
Vapor has only three networks,
mainnet
.solonet
andmainnet
.-
fee
() → int¶ Get Bitcoin transaction fee.
- Returns
int – Bitcoin transaction fee.
>>> from swap.providers.vapor.transaction import ClaimTransaction >>> claim_transaction = ClaimTransaction("mainnet") >>> claim_transaction.build_transaction("vp1q3plwvmvy4qhjmp5zffzmk50aagpujt6flnf63h", "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") >>> claim_transaction.fee() 10000000
-
hash
() → str¶ Get Vapor transaction hash.
- Returns
str – Vapor transaction id/hash.
>>> from swap.providers.vapor.transaction import FundTransaction >>> fund_transaction = FundTransaction("mainnet") >>> fund_transaction.build_transaction("vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag", "vp1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07qcyvk37", 10000) >>> fund_transaction.hash() "2993414225f65390220730d0c1a356c14e91bca76db112d37366df93e364a492"
-
json
() → dict¶ Get Vapor transaction json format.
- Returns
dict – Vapor transaction json format.
>>> from swap.providers.vapor.transaction import RefundTransaction >>> refund_transaction = RefundTransaction("mainnet") >>> refund_transaction.build_transaction("vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag", "481c00212c552fbdf537fcc88c1006a69bdd3130f593965f6ff4f91818a1c6e1", 10000, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") >>> refund_transaction.json() {"hash": "2993414225f65390220730d0c1a356c14e91bca76db112d37366df93e364a492", "status_fail": false, "size": 379, "submission_timestamp": 0, "memo": "", "inputs": [{"script": "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", "address": "vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag", "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": "vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag", "asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount": 2439999000, "type": "control"}], "fee": 10000000, "balances": [{"asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "amount": "-10001000"}], "types": ["ordinary"]}
-
raw
() → str¶ Get Vapor transaction raw.
- Returns
str – Vapor transaction raw.
>>> from swap.providers.vapor.transaction import ClaimTransaction >>> claim_transaction = ClaimTransaction("mainnet") >>> claim_transaction.build_transaction("vp1q3plwvmvy4qhjmp5zffzmk50aagpujt6flnf63h", "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") >>> claim_transaction.raw() "070100010160015e7f2d7ecec3f61d30d0b2968973a3ac8448f0599ea20dce883b48c903c4d6e87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8091a0900901011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e20201ad01ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe80701880101642091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e220ac13c0bb1445423a641754182d53f0677cd4351a0e743e6f10b35122c3d7ea01202b9a5949f5546f63a253e41cda6bffdedb527288a7e24ed953f5c2680c70d6ff741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c000013dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98dcbd8b09011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a00"
-
type
() → str¶ Get Bitcoin signature transaction type.
- Returns
str – Bitcoin signature transaction type.
>>> from swap.providers.vapor.transaction import ClaimTransaction >>> claim_transaction = ClaimTransaction("mainnet") >>> claim_transaction.build_transaction("vp1q3plwvmvy4qhjmp5zffzmk50aagpujt6flnf63h", "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") >>> claim_transaction.type() "bitcoin_claim_unsigned"
-
unsigned_datas
(detail: bool = False) → list¶ Get Vapor transaction unsigned datas(messages) with instruction.
- Parameters
detail (bool) – Vapor unsigned datas to see detail, defaults to False.
- Returns
list – Vapor transaction unsigned datas.
>>> from swap.providers.vapor.transaction import FundTransaction >>> from swap.providers.vapor.solver import FundSolver >>> from swap.providers.vapor.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(), "vp1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07qcyvk37", 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 Vapor transaction signatures(signed datas).
- Returns
list – Vapor transaction signatures.
>>> from swap.providers.vapor.transaction import FundTransaction >>> from swap.providers.vapor.solver import FundSolver >>> from swap.providers.vapor.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(), "vp1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07qcyvk37", 10000) >>> fund_transaction.sign(solver=fund_solver) >>> fund_transaction.signatures() [['8ca69a01def05118866681bc7008971efcff40895285297e0d6bd791220a36d6ef85a11abc48438de21f0256c4f82752b66eb58100ce6b213e1af14cc130ec0e']]
FundTransaction¶
-
class
swap.providers.vapor.transaction.
FundTransaction
(network: str = {'blockcenter': 'https://bcapi.bystack.com/vapor/v3', 'blockmeta': 'https://vapor.blockmeta.com/api/v1', 'mov': 'https://ex.movapi.com/vapor/v3', 'vapor-core': 'http://localhost:9889'})¶ Vapor Fund transaction.
- Parameters
network (str) – Vapor network, defaults to mainnet.
- Returns
FundTransaction – Vapor 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.vapor.transaction.FundTransaction¶ Build Vapor fund transaction.
- Parameters
address (str) – Vapor sender wallet address.
htlc_address (str) – Vapor Hash Time Lock Contract (HTLC) address.
amount (int) – Vapor amount to fund.
asset (str) – Vapor asset id, defaults to BTM asset.
estimate_fee (bool) – Estimate Vapor transaction fee, defaults to True.
- Returns
FundTransaction – Vapor fund transaction instance.
>>> from swap.providers.vapor.transaction import FundTransaction >>> fund_transaction = FundTransaction("mainnet") >>> fund_transaction.build_transaction(address="vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag", htlc_address="vp1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07qcyvk37", amount=10000) <swap.providers.vapor.transaction.FundTransaction object at 0x0409DAF0>
-
sign
(solver: swap.providers.vapor.solver.FundSolver) → swap.providers.vapor.transaction.FundTransaction¶ Sign Vapor fund transaction.
- Parameters
solver (vapor.solver.FundSolver) – Vapor fund solver.
- Returns
FundTransaction – Vapor fund transaction instance.
>>> from swap.providers.vapor.transaction import FundTransaction >>> from swap.providers.vapor.solver import FundSolver >>> from swap.providers.vapor.wallet import Wallet, DEFAULT_PATH >>> 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(), "vp1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07qcyvk37", 10000) >>> fund_transaction.sign(solver=fund_solver) <swap.providers.vapor.transaction.FundTransaction object at 0x0409DAF0>
-
transaction_raw
() → str¶ Get Vapor fund transaction raw.
- Returns
str – Vapor fund transaction raw.
>>> from swap.providers.vapor.transaction import FundTransaction >>> fund_transaction = FundTransaction("mainnet") >>> fund_transaction.build_transaction("vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag", "vp1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07qcyvk37", 10000) >>> fund_transaction.transaction_raw() "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTJjMzkyMjE3NDgzOTA2ZjkwMmU3M2M0YmMxMzI4NjRkZTU4MTUzNzcyZDc5MjY4OTYwOTk4MTYyMjY2NjM0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmU4MDMwMDAwMDAwMDAwMDAxN2E5MTQ5NzE4OTRjNThkODU5ODFjMTZjMjA1OWQ0MjJiY2RlMGIxNTZkMDQ0ODdhNjI5MDAwMDAwMDAwMDAwMTk3NmE5MTQ2YmNlNjVlNThhNTBiOTc5ODk5MzBlOWE0ZmYxYWMxYTc3NTE1ZWYxODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiAxMjM0MCwgIm4iOiAxLCAic2NyaXB0IjogIjc2YTkxNDZiY2U2NWU1OGE1MGI5Nzk4OTkzMGU5YTRmZjFhYzFhNzc1MTVlZjE4OGFjIn1dLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfdW5zaWduZWQifQ"
ClaimTransaction¶
-
class
swap.providers.vapor.transaction.
ClaimTransaction
(network: str = 'mainnet')¶ Vapor Claim transaction.
- Parameters
network (str) – Vapor network, defaults to mainnet.
- Returns
ClaimTransaction – Vapor 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.vapor.transaction.ClaimTransaction¶ Build Vapor claim transaction.
- Parameters
address (str) – Vapor recipient wallet address.
transaction_id (str) – Vapor fund transaction id to redeem.
amount (int) – Vapor amount to withdraw.
asset (str) – Vapor asset id, defaults to BTM asset.
estimate_fee (bool) – Estimate Vapor transaction fee, defaults to True.
- Returns
ClaimTransaction – Vapor claim transaction instance.
>>> from swap.providers.vapor.transaction import ClaimTransaction >>> claim_transaction = ClaimTransaction("mainnet") >>> claim_transaction.build_transaction(address="vp1q3plwvmvy4qhjmp5zffzmk50aagpujt6flnf63h", transaction_id="1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", amount=10000, asset="ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") <swap.providers.vapor.transaction.ClaimTransaction object at 0x0409DAF0>
-
sign
(solver: swap.providers.vapor.solver.ClaimSolver) → swap.providers.vapor.transaction.ClaimTransaction¶ Sign Vapor claim transaction.
- Parameters
solver (vapor.solver.ClaimSolver) – Vapor claim solver.
- Returns
ClaimTransaction – Vapor claim transaction instance.
>>> from swap.providers.vapor.transaction import ClaimTransaction >>> from swap.providers.vapor.solver import ClaimSolver >>> from swap.providers.vapor.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.vapor.transaction.ClaimTransaction object at 0x0409DAF0>
-
transaction_raw
() → str¶ Get Vapor claim transaction raw.
- Returns
str – Vapor claim transaction raw.
>>> from swap.providers.vapor.transaction import ClaimTransaction >>> claim_transaction = ClaimTransaction("mainnet") >>> claim_transaction.build_transaction("vp1q3plwvmvy4qhjmp5zffzmk50aagpujt6flnf63h", "1006a6f537fcc4888c65f6ff4f91818a1c6e19bdd3130f59391c00212c552fbd", 10000, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") >>> claim_transaction.transaction_raw() "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTJjMzkyMjE3NDgzOTA2ZjkwMmU3M2M0YmMxMzI4NjRkZTU4MTUzNzcyZDc5MjY4OTYwOTk4MTYyMjY2NjM0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmU4MDMwMDAwMDAwMDAwMDAxN2E5MTQ5NzE4OTRjNThkODU5ODFjMTZjMjA1OWQ0MjJiY2RlMGIxNTZkMDQ0ODdhNjI5MDAwMDAwMDAwMDAwMTk3NmE5MTQ2YmNlNjVlNThhNTBiOTc5ODk5MzBlOWE0ZmYxYWMxYTc3NTE1ZWYxODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiAxMjM0MCwgIm4iOiAxLCAic2NyaXB0IjogIjc2YTkxNDZiY2U2NWU1OGE1MGI5Nzk4OTkzMGU5YTRmZjFhYzFhNzc1MTVlZjE4OGFjIn1dLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfdW5zaWduZWQifQ"
RefundTransaction¶
-
class
swap.providers.vapor.transaction.
RefundTransaction
(network: str = 'mainnet')¶ Vapor Refund transaction.
- Parameters
network (str) – Vapor network, defaults to mainnet.
- Returns
RefundTransaction – Vapor 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.vapor.transaction.RefundTransaction¶ Build Vapor refund transaction.
- Parameters
address (str) – Vapor sender wallet address.
transaction_id (str) – Vapor fund transaction id to redeem.
amount (int) – Vapor amount to withdraw.
asset (str) – Vapor asset id, defaults to BTM asset.
estimate_fee (bool) – Estimate Vapor transaction fee, defaults to True.
- Returns
RefundTransaction – Vapor refund transaction instance.
>>> from swap.providers.vapor.transaction import RefundTransaction >>> refund_transaction = RefundTransaction("mainnet") >>> refund_transaction.build_transaction(address="vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag", transaction_id="481c00212c552fbdf537fcc88c1006a69bdd3130f593965f6ff4f91818a1c6e1", amount=10000, asset="ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") <swap.providers.vapor.transaction.RefundTransaction object at 0x0409DAF0>
-
sign
(solver: swap.providers.vapor.solver.RefundSolver) → swap.providers.vapor.transaction.RefundTransaction¶ Sign Vapor refund transaction.
- Parameters
solver (vapor.solver.RefundSolver) – Vapor refund solver.
- Returns
RefundTransaction – Vapor refund transaction instance.
>>> from swap.providers.vapor.transaction import RefundTransaction >>> from swap.providers.vapor.solver import RefundSolver >>> from swap.providers.vapor.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.vapor.transaction.RefundTransaction object at 0x0409DAF0>
-
transaction_raw
() → str¶ Get Vapor refund transaction raw.
- Returns
str – Vapor refund transaction raw.
>>> from swap.providers.vapor.transaction import RefundTransaction >>> refund_transaction = RefundTransaction("mainnet") >>> refund_transaction.build_transaction("vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag", "481c00212c552fbdf537fcc88c1006a69bdd3130f593965f6ff4f91818a1c6e1", 10000, "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff") >>> refund_transaction.transaction_raw() "eyJmZWUiOiA2NzgsICJyYXciOiAiMDIwMDAwMDAwMTJjMzkyMjE3NDgzOTA2ZjkwMmU3M2M0YmMxMzI4NjRkZTU4MTUzNzcyZDc5MjY4OTYwOTk4MTYyMjY2NjM0YmUwMTAwMDAwMDAwZmZmZmZmZmYwMmU4MDMwMDAwMDAwMDAwMDAxN2E5MTQ5NzE4OTRjNThkODU5ODFjMTZjMjA1OWQ0MjJiY2RlMGIxNTZkMDQ0ODdhNjI5MDAwMDAwMDAwMDAwMTk3NmE5MTQ2YmNlNjVlNThhNTBiOTc5ODk5MzBlOWE0ZmYxYWMxYTc3NTE1ZWYxODhhYzAwMDAwMDAwIiwgIm91dHB1dHMiOiBbeyJhbW91bnQiOiAxMjM0MCwgIm4iOiAxLCAic2NyaXB0IjogIjc2YTkxNDZiY2U2NWU1OGE1MGI5Nzk4OTkzMGU5YTRmZjFhYzFhNzc1MTVlZjE4OGFjIn1dLCAidHlwZSI6ICJiaXRjb2luX2Z1bmRfdW5zaWduZWQifQ"
Solver¶
Vapor solver.
FundSolver¶
-
class
swap.providers.vapor.solver.
FundSolver
(xprivate_key: str, account: int = 1, change: bool = False, address: int = 1, path: Optional[str] = None, indexes: Optional[List[str]] = None)¶ Vapor Fund solver.
- Parameters
xprivate_key (str) – Vapor sender xprivate key.
account (int) – Vapor derivation account, defaults to 1.
change (bool) – Vapor derivation change, defaults to False.
address (int) – Vapor derivation address, defaults to 1.
path (str) – Vapor derivation path, defaults to None.
indexes (list) – Vapor derivation indexes, defaults to None.
- Returns
FundSolver – Vapor fund solver instance.
>>> from swap.providers.vapor.solver import FundSolver >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(xprivate_key=sender_xprivate_key) <swap.providers.vapor.solver.FundSolver object at 0x03FCCA60>
ClaimSolver¶
-
class
swap.providers.vapor.solver.
ClaimSolver
(xprivate_key: str, secret_key: str, bytecode: str, account: int = 1, change: bool = False, address: int = 1, path: Optional[str] = None, indexes: Optional[List[str]] = None)¶ Vapor Claim solver.
- Parameters
xprivate_key (str) – Vapor sender xprivate key.
secret_key (str) – Secret password/passphrase.
bytecode (str) – Vapor witness HTLC bytecode, defaults to None.
account (int) – Vapor derivation account, defaults to 1.
change (bool) – Vapor derivation change, defaults to False.
address (int) – Vapor derivation address, defaults to 1.
path (str) – Vapor derivation path, defaults to None.
indexes (list) – Vapor derivation indexes, defaults to None.
- Returns
ClaimSolver – Vapor claim solver instance.
>>> from swap.providers.vapor.solver import ClaimSolver >>> recipient_xprivate_key = "58dd4094155bbebf2868189231c47e4e0edbd9f74545f843c9537259e1d7a656983aef283d0ccebecc2d33577a9f650b53ac7adff44f48ec839e3346cc22418f" >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> claim_solver = ClaimSolver(xprivate_key=recipient_xprivate_key, secret_key="Hello Meheret!", bytecode=bytecode) <swap.providers.vapor.solver.ClaimSolver object at 0x03FCCA60>
RefundSolver¶
-
class
swap.providers.vapor.solver.
RefundSolver
(xprivate_key: str, bytecode: str, account: int = 1, change: bool = False, address: int = 1, path: Optional[str] = None, indexes: Optional[List[str]] = None)¶ Vapor Refund solver.
- Parameters
xprivate_key (str) – Vapor sender xprivate key.
bytecode (str) – Vapor witness HTLC bytecode, defaults to None.
account (int) – Vapor derivation account, defaults to 1.
change (bool) – Vapor derivation change, defaults to False.
address (int) – Vapor derivation address, defaults to 1.
path (str) – Vapor derivation path, defaults to None.
indexes (list) – Vapor derivation indexes, defaults to None.
- Returns
RefundSolver – Vapor refund solver instance.
>>> from swap.providers.vapor.solver import RefundSolver >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> refund_solver = RefundSolver(xprivate_key=sender_xprivate_key, bytecode=bytecode) <swap.providers.vapor.solver.RefundSolver object at 0x03FCCA60>
Signature¶
Vapor signature.
-
class
swap.providers.vapor.signature.
Signature
(network: str = 'mainnet')¶ Vapor Signature.
- Parameters
network (str) – Vapor network, defaults to mainnet.
- Returns
Signature – Vapor signature instance.
Note
Vapor has only three networks,
mainnet
,solonet
andtestnet
.-
fee
() → int¶ Get Vapor transaction fee.
- Returns
int – Vapor transaction fee.
>>> from swap.providers.vapor.signature import Signature >>> from swap.providers.vapor.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiA0NDkwMDAsICJhZGRyZXNzIjogInZwMXE5bmR5bHgwMnN5ZndkN25wZWhmeHo0bGRkaHpxc3ZlMnphMjNhZyIsICJyYXciOiAiMDcwMTAwMDEwMTVmMDE1ZDMyNDc5ZDgyMTY1ZmZlOTI0NjI4OTg5YmQ0MzgwYzE5MjYxZDI3YTQxYmM1NjBlMWFmZWMxMDNhNmE3Yzk0ZjFmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmODBiNGJjMDIwMTAxMTYwMDE0MmNkYTRmOTllYTgxMTJlNmZhNjFjZGQyNjE1N2VkNmRjNDA4MzMyYTIyMDEyMDkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIwMjAxNDgwMDQ2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjkwNGUwMTIyMDAyMDRmOGYwZTg4ZDBhNDRiM2Q4ODRiMDdiNmRkNDUzNjUxOGZmY2JiNTk2YTkxY2EwZTZiMmYzN2U5NjQ2M2JiZmMwMDAxM2UwMDNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjg4YjJhMDAyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICIwM2U1ZDkzZWExZmUzODMzMzk0NjZiMGMyMzc2MzNjNDY2NjBkZmYzOTAwYzI4ZWE3YWQwZDU5NzQwYzZiYWRhIiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImZlZmZmZGZhNTQ4NmY1YWJhNzlkNTIwMjY0NTg4YWI2NzNmMGU3Y2MzNjM3YzYwZGZhMmEwYTVkNWY0NGNiYTYiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9XSwgInNpZ25hdHVyZXMiOiBbXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJ0eXBlIjogInZhcG9yX2Z1bmRfdW5zaWduZWQifQ" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(sender_xprivate_key) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_fund_transaction_raw, fund_solver) >>> signature.fee() 10000000
-
hash
() → str¶ Get Vapor signature transaction hash.
- Returns
str – Vapor signature transaction hash or transaction id.
>>> from swap.providers.vapor.signature import Signature >>> from swap.providers.vapor.solver import ClaimSolver >>> unsigned_claim_transaction_raw = "eyJmZWUiOiA0NDkwMDAsICJhZGRyZXNzIjogInZwMXEzcGx3dm12eTRxaGptcDV6ZmZ6bWs1MGFhZ3B1anQ2ZmxuZjYzaCIsICJyYXciOiAiMDcwMTAwMDIwMTY5MDE2NzMyNDc5ZDgyMTY1ZmZlOTI0NjI4OTg5YmQ0MzgwYzE5MjYxZDI3YTQxYmM1NjBlMWFmZWMxMDNhNmE3Yzk0ZjFmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOTA0ZTAwMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDEwMDAxNWUwMTVjZmFiZTY1ZTNlZDFkMGE4NGE4ZTQzZTZkM2RlMWI0NmZkNGM5ZmE0N2YyZjA0NGU5NGU4NGUwZWM5YWU0MGE1ZGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkOGQwMjEwMTAxMTYwMDE0ODg3ZWU2NmQ4NGE4MmYyZDg2ODI0YTQ1YmI1MWZkZWEwM2M5MmY0OTIyMDEyMDNlMGEzNzdhZTRhZmEwMzFkNDU1MTU5OWQ5YmI3ZDViMjdmNDczNmQ3N2Y3OGNhYzRkNDc2ZjBmZmJhNWFlM2UwMjAxM2MwMDNhZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjkwNGUwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkwMDAxM2QwMDNiZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYwOWMwNjAxMTYwMDE0ODg3ZWU2NmQ4NGE4MmYyZDg2ODI0YTQ1YmI1MWZkZWEwM2M5MmY0OTAwIiwgImhhc2giOiAiNTAwYzEyMWU5N2ZmMWM0Y2ZjMmUzYWFiMDBkZDYzODQ0YTIzNjYzNWY2YmE2Yjk0MWM5MmQ5MGE1ZjhiZGJiNCIsICJ1bnNpZ25lZF9kYXRhcyI6IFt7ImRhdGFzIjogWyI2NzQ0YzA0NmU2MzgzOWE3MGVjMWQ4ZmE4Zjg5NjM4ZTAyNTE5M2QyYTIxZjI5MTkzNzg5MjQ3NDE1NDVlN2UzIl0sICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6IG51bGx9LCB7ImRhdGFzIjogWyI3ODAwMzk5ODc2MGExZDVjYzJmZGZlYzQ3NTc5MjcwMTY1MGFlN2Y1MGMzOGQ5MTg2N2NkYzg0ZDUzODBlM2Q5Il0sICJwdWJsaWNfa2V5IjogIjNlMGEzNzdhZTRhZmEwMzFkNDU1MTU5OWQ5YmI3ZDViMjdmNDczNmQ3N2Y3OGNhYzRkNDc2ZjBmZmJhNWFlM2UiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJ2YXBvcl9jbGFpbV91bnNpZ25lZCJ9" >>> recipient_xprivate_key = "58dd4094155bbebf2868189231c47e4e0edbd9f74545f843c9537259e1d7a656983aef283d0ccebecc2d33577a9f650b53ac7adff44f48ec839e3346cc22418f" >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> claim_solver = ClaimSolver(recipient_xprivate_key, "Hello Meheret!", bytecode) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_claim_transaction_raw, claim_solver) >>> signature.hash() "d544ad2d08f9dda33b78953c74eede9c9eb5d80835695310b242d5796cfb91d6"
-
json
() → dict¶ Get Vapor signature transaction json format.
- Returns
dict – Vapor signature transaction json format.
>>> from swap.providers.vapor.signature import Signature >>> from swap.providers.vapor.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(sender_xprivate_key) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_fund_transaction_raw, fund_solver) >>> signature.json() {"tx_id": "50b336ab6e055d9d4d65a9f2295b53270abd3816c23ba4c954841f399aa772d5", "version": 1, "size": 405, "time_range": 0, "inputs": [{"type": "spend", "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "asset_definition": {}, "amount": 8160000, "control_program": "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", "address": "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "spent_output_id": "88289fa4c7633574931be7ce4102aeb24def0de20e38e7d69a5ddd6efc116b95", "input_id": "49e97e1685d5b08b82713e6acb6747bd176177141cb5618aeecca418c3afd03a", "witness_arguments": ["91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2"], "sign_data": "f7d3aa18b295cda6f2b1132c4231933cc92f3baca705974c5de378f9b695f0e2"}, {"type": "spend", "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "asset_definition": {}, "amount": 167639800, "control_program": "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", "address": "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7", "spent_output_id": "d0cc73f664fdda20d6a9bb6f4c0204f30e738959b02f3b645ad17d190fafd5b3", "input_id": "d8729c2683f56cb50ee65c12484edfb4ea8182f71b11de84dfaf5cc05ccde47b", "witness_arguments": ["91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2"], "sign_data": "ca615ba2c729e463fbf79a11419176261b1bf6be44813335d2b256e8a7bbceee"}], "outputs": [{"type": "control", "id": "9c8c0b8ceaba9bea5ffe12fc51ac5ef82f1da6bebde537ab7d621845d1182151", "position": 0, "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "asset_definition": {}, "amount": 10000, "control_program": "00204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc", "address": "bm1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07q3yf5q8"}, {"type": "control", "id": "7dc2e56534ee173e0319020db5b05fd4450cab483f9b97f9b01dbc1879b1b8ff", "position": 1, "asset_id": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "asset_definition": {}, "amount": 173939800, "control_program": "00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", "address": "bm1q9ndylx02syfwd7npehfxz4lddhzqsve2fu6vc7"}], "fee": 1850000}
-
raw
() → str¶ Get Vapor signature transaction raw.
- Returns
str – Vapor signature transaction raw.
>>> from swap.providers.vapor.signature import Signature >>> from swap.providers.vapor.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(sender_xprivate_key) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_fund_transaction_raw, fund_solver) >>> signature.raw() "07010002015f015d82e65f964d3c3532548dfde938462f566c95d3c90e6a3a182a0b3bdae46aa790ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8086f20301011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2015f015d070d0eb22d32b82d3d2f3fc4bafb7a85f5229f7fd89042d2ff3257375e43d3ebfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8f5f74f01011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2020146ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff904e012200204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc00013cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8b8f852011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a00"
-
type
() → str¶ Get Vapor signature transaction type.
- Returns
str – Vapor signature transaction type.
>>> from swap.providers.vapor.signature import Signature >>> from swap.providers.vapor.solver import RefundSolver >>> unsigned_refund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgImhhc2giOiAiNjlhNWYzMDI4ODBhNzNkMzYzZWNiMzkyYzgyZGNkMzMyODNiZDFiYmU1NmFhMzAyODU4NzMzZTc5ZTE2Mzc5OCIsICJyYXciOiAiMDcwMTAwMDIwMTVmMDE1ZDMwNWEyOGQ4ZDM0YjQwYzY1OTM2ODEwZjllOWMxZjhiYzljNzkzZWMyZTcyYzcwZjkyMDNmYmJlYjBhNTZkYjlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmODBhZGUyMDQwMTAxMTYwMDE0MGU0M2E5MmE5ZThhY2E3ODhlYjE1NTFjMzE2NDQ4YzJlM2Y3ODIxNTAxMDAwMTVmMDE1ZDgyZTY1Zjk2NGQzYzM1MzI1NDhkZmRlOTM4NDYyZjU2NmM5NWQzYzkwZTZhM2ExODJhMGIzYmRhZTQ2YWE3OTBmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmODA4NmYyMDMwMTAxMTYwMDE0MmNkYTRmOTllYTgxMTJlNmZhNjFjZGQyNjE1N2VkNmRjNDA4MzMyYTIyMDEyMDkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIwMjAxM2FmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOTA0ZTAxMTYwMDE0MmNkYTRmOTllYTgxMTJlNmZhNjFjZGQyNjE1N2VkNmRjNDA4MzMyYTAwMDEzY2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlMDk2ZDMwODAxMTYwMDE0MmNkYTRmOTllYTgxMTJlNmZhNjFjZGQyNjE1N2VkNmRjNDA4MzMyYTAwIiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbIjY0ODJiMmRmZTliM2U3NjY0MzVlMDQ4MmI2MDAzN2FmYWVhYmFhYWExMDg5Mzc0OGEyODhiY2EwMjlmZjFjNTIiXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogbnVsbH0sIHsiZGF0YXMiOiBbIjBhNDY3NmE3MzI0MmNkMTI2NjFkYjBmM2Y3Mzc5NGQ0OWI3Nzc1NTBiZDk4MTc2YThkODhlYTg3NTVlNDE3ZjIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9XSwgInNpZ25hdHVyZXMiOiBbXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJ0eXBlIjogImJ5dG9tX3JlZnVuZF91bnNpZ25lZCJ9" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> refund_solver = RefundSolver(sender_xprivate_key, bytecode, 1000) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_refund_transaction_raw, refund_solver) >>> signature.type() "vapor_refund_signed"
-
sign
(transaction_raw: str, solver: Union[swap.providers.vapor.solver.FundSolver, swap.providers.vapor.solver.ClaimSolver, swap.providers.vapor.solver.RefundSolver]) → Union[swap.providers.vapor.signature.FundSignature, swap.providers.vapor.signature.ClaimSignature, swap.providers.vapor.signature.RefundSignature]¶ Sign unsigned transaction raw.
- Parameters
transaction_raw (str) – Vapor unsigned transaction raw.
solver (vapor.solver.FundSolver, vapor.solver.ClaimSolver, vapor.solver.RefundSolver) – Vapor solver
- Returns
FundSignature, ClaimSignature, RefundSignature – Vapor signature instance.
>>> from swap.providers.vapor.signature import Signature >>> from swap.providers.vapor.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(sender_xprivate_key) >>> signature = Signature("mainnet") >>> signature.sign(transaction_raw=unsigned_fund_transaction_raw, solver=fund_solver) <swap.providers.vapor.signature.FundSignature object at 0x0409DAF0>
-
unsigned_datas
(*args, **kwargs) → list¶ Get Vapor transaction unsigned datas with instruction.
- Returns
list – Vapor transaction unsigned datas.
>>> from swap.providers.vapor.signature import Signature >>> from swap.providers.vapor.solver import ClaimSolver >>> unsigned_claim_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTNwbHd2bXZ5NHFoam1wNXpmZnptazUwYWFncHVqdDZmNWplODVwIiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkMzA1YTI4ZDhkMzRiNDBjNjU5MzY4MTBmOWU5YzFmOGJjOWM3OTNlYzJlNzJjNzBmOTIwM2ZiYmViMGE1NmRiOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MGFkZTIwNDAxMDExNjAwMTQwZTQzYTkyYTllOGFjYTc4OGViMTU1MWMzMTY0NDhjMmUzZjc4MjE1MDEwMDAxNWQwMTViMTM4ODFmMzI3ZTJiZTBkNWMwMGYzODU2MGYxYzI5NDg2Y2RhZjI1NWMwOWMwMWVlZTFhMWViYWEzNzgzZGRkOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDAwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkyMjAxMjAzZTBhMzc3YWU0YWZhMDMxZDQ1NTE1OTlkOWJiN2Q1YjI3ZjQ3MzZkNzdmNzhjYWM0ZDQ3NmYwZmZiYTVhZTNlMDIwMTNhZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjkwNGUwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkwMDAxM2NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjBkZWUxMDQwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkwMCIsICJoYXNoIjogImQ1NDRhZDJkMDhmOWRkYTMzYjc4OTUzYzc0ZWVkZTljOWViNWQ4MDgzNTY5NTMxMGIyNDJkNTc5NmNmYjkxZDYiLCAidW5zaWduZWRfZGF0YXMiOiBbeyJkYXRhcyI6IFsiNTE3MjI5MGE5ODU4YTRhMDdjNjAzYzc0MWY2ZmQ4ZTg2NzE1YThhNDQ3MGViMjM3ZDBhMmQ4MzI1YzE3MDZiNyJdLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiBudWxsfSwgeyJkYXRhcyI6IFsiZTQxYWI5NjQ3MDFmMjBhMjM0NzMzNDBiMTFkNWNiY2ZiYTlhMzczY2VkZjI4NGY4MDljMGM2MWNlN2Q3MTVkYSJdLCAicHVibGljX2tleSI6ICIzZTBhMzc3YWU0YWZhMDMxZDQ1NTE1OTlkOWJiN2Q1YjI3ZjQ3MzZkNzdmNzhjYWM0ZDQ3NmYwZmZiYTVhZTNlIiwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogIm0vNDQvMTUzLzEvMC8xIn1dLCAic2lnbmF0dXJlcyI6IFtdLCAibmV0d29yayI6ICJtYWlubmV0IiwgInR5cGUiOiAiYnl0b21fY2xhaW1fdW5zaWduZWQifQ" >>> recipient_xprivate_key = "58dd4094155bbebf2868189231c47e4e0edbd9f74545f843c9537259e1d7a656983aef283d0ccebecc2d33577a9f650b53ac7adff44f48ec839e3346cc22418f" >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> claim_solver = ClaimSolver(recipient_xprivate_key, "Hello Meheret!", bytecode) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_claim_transaction_raw, claim_solver) >>> signature.unsigned_datas() [{"datas": ["5172290a9858a4a07c603c741f6fd8e86715a8a4470eb237d0a2d8325c1706b7"], "network": "mainnet", "path": null}, {"datas": ["e41ab964701f20a23473340b11d5cbcfba9a373cedf284f809c0c61ce7d715da"], "public_key": "3e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e", "network": "mainnet", "path": "m/44/153/1/0/1"}]
-
signatures
() → list¶ Get Vapor transaction signatures(signed datas).
- Returns
list – Vapor transaction signatures.
>>> from swap.providers.vapor.signature import Signature >>> from swap.providers.vapor.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(sender_xprivate_key) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_fund_transaction_raw, fund_solver) >>> signature.signatures() [["00c005bc114ec5f89b49e48526f90312b6f1a5274efd252049880023aeb8e7998c15e0baa4ff10fabbdae702f245405a36022e3c9acc5e5e6c9ac4b9d937a801"], ["fbfb123ef062c9068dad22ce28de2a4e72f82076b6f98cb7e0909c11856260e7020aecbdca639f0b6e39d345c05913d2c9291db130b53d5b2bc59f61adfc1406"]]
-
transaction_raw
() → str¶ Get Vapor signed transaction raw.
- Returns
str – Vapor signed transaction raw.
>>> from swap.providers.vapor.signature import Signature >>> from swap.providers.vapor.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(sender_xprivate_key) >>> signature = Signature("mainnet") >>> signature.sign(unsigned_fund_transaction_raw, fund_solver) >>> signature.transaction_raw() "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW1siMDBjMDA1YmMxMTRlYzVmODliNDllNDg1MjZmOTAzMTJiNmYxYTUyNzRlZmQyNTIwNDk4ODAwMjNhZWI4ZTc5OThjMTVlMGJhYTRmZjEwZmFiYmRhZTcwMmYyNDU0MDVhMzYwMjJlM2M5YWNjNWU1ZTZjOWFjNGI5ZDkzN2E4MDEiXSwgWyJmYmZiMTIzZWYwNjJjOTA2OGRhZDIyY2UyOGRlMmE0ZTcyZjgyMDc2YjZmOThjYjdlMDkwOWMxMTg1NjI2MGU3MDIwYWVjYmRjYTYzOWYwYjZlMzlkMzQ1YzA1OTEzZDJjOTI5MWRiMTMwYjUzZDViMmJjNTlmNjFhZGZjMTQwNiJdXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJ0eXBlIjogImJ5dG9tX2Z1bmRfc2lnbmVkIn0"
FundSignature¶
-
class
swap.providers.vapor.signature.
FundSignature
(network: str = 'mainnet')¶ Vapor Fund signature.
- Parameters
network (str) – Vapor network, defaults to mainnet.
- Returns
FundSignature – Vapor fund signature instance.
-
sign
(transaction_raw: str, solver: swap.providers.vapor.solver.FundSolver) → swap.providers.vapor.signature.FundSignature¶ Sign unsigned fund transaction raw.
- Parameters
transaction_raw (str) – Vapor unsigned fund transaction raw.
solver (vapor.solver.FundSolver) – Vapor fund solver.
- Returns
FundSignature – Vapor fund signature instance.
>>> from swap.providers.vapor.signature import FundSignature >>> from swap.providers.vapor.solver import FundSolver >>> unsigned_fund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkODJlNjVmOTY0ZDNjMzUzMjU0OGRmZGU5Mzg0NjJmNTY2Yzk1ZDNjOTBlNmEzYTE4MmEwYjNiZGFlNDZhYTc5MGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg2ZjIwMzAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAxNWYwMTVkMDcwZDBlYjIyZDMyYjgyZDNkMmYzZmM0YmFmYjdhODVmNTIyOWY3ZmQ4OTA0MmQyZmYzMjU3Mzc1ZTQzZDNlYmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOGY1Zjc0ZjAxMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMjIwMTIwOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMjAyMDE0NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDEyMjAwMjA0ZjhmMGU4OGQwYTQ0YjNkODg0YjA3YjZkZDQ1MzY1MThmZmNiYjU5NmE5MWNhMGU2YjJmMzdlOTY0NjNiYmZjMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQ4YjhmODUyMDExNjAwMTQyY2RhNGY5OWVhODExMmU2ZmE2MWNkZDI2MTU3ZWQ2ZGM0MDgzMzJhMDAiLCAiaGFzaCI6ICI1MGIzMzZhYjZlMDU1ZDlkNGQ2NWE5ZjIyOTViNTMyNzBhYmQzODE2YzIzYmE0Yzk1NDg0MWYzOTlhYTc3MmQ1IiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbImY3ZDNhYTE4YjI5NWNkYTZmMmIxMTMyYzQyMzE5MzNjYzkyZjNiYWNhNzA1OTc0YzVkZTM3OGY5YjY5NWYwZTIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9LCB7ImRhdGFzIjogWyJjYTYxNWJhMmM3MjllNDYzZmJmNzlhMTE0MTkxNzYyNjFiMWJmNmJlNDQ4MTMzMzVkMmIyNTZlOGE3YmJjZWVlIl0sICJwdWJsaWNfa2V5IjogIjkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIiLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiAibS80NC8xNTMvMS8wLzEifV0sICJzaWduYXR1cmVzIjogW10sICJuZXR3b3JrIjogIm1haW5uZXQiLCAidHlwZSI6ICJieXRvbV9mdW5kX3Vuc2lnbmVkIn0" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> fund_solver = FundSolver(sender_xprivate_key) >>> fund_signature = FundSignature("mainnet") >>> fund_signature.sign(unsigned_fund_transaction_raw, fund_solver) <swap.providers.vapor.signature.FundSignature object at 0x0409DAF0>
ClaimSignature¶
-
class
swap.providers.vapor.signature.
ClaimSignature
(network: str = 'mainnet')¶ Vapor Claim signature.
- Parameters
network (str) – Vapor network, defaults to mainnet.
- Returns
ClaimSignature – Vapor claim signature instance.
-
sign
(transaction_raw: str, solver: swap.providers.vapor.solver.ClaimSolver) → swap.providers.vapor.signature.ClaimSignature¶ Sign unsigned claim transaction raw.
- Parameters
transaction_raw (str) – Vapor unsigned claim transaction raw.
solver (vapor.solver.ClaimSolver) – Vapor claim solver.
- Returns
ClaimSignature – Vapor claim signature instance.
>>> from swap.providers.vapor.signature import ClaimSignature >>> from swap.providers.vapor.solver import ClaimSolver >>> unsigned_claim_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTNwbHd2bXZ5NHFoam1wNXpmZnptazUwYWFncHVqdDZmNWplODVwIiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkMzA1YTI4ZDhkMzRiNDBjNjU5MzY4MTBmOWU5YzFmOGJjOWM3OTNlYzJlNzJjNzBmOTIwM2ZiYmViMGE1NmRiOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MGFkZTIwNDAxMDExNjAwMTQwZTQzYTkyYTllOGFjYTc4OGViMTU1MWMzMTY0NDhjMmUzZjc4MjE1MDEwMDAxNWQwMTViMTM4ODFmMzI3ZTJiZTBkNWMwMGYzODU2MGYxYzI5NDg2Y2RhZjI1NWMwOWMwMWVlZTFhMWViYWEzNzgzZGRkOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDAwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkyMjAxMjAzZTBhMzc3YWU0YWZhMDMxZDQ1NTE1OTlkOWJiN2Q1YjI3ZjQ3MzZkNzdmNzhjYWM0ZDQ3NmYwZmZiYTVhZTNlMDIwMTNhZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjkwNGUwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkwMDAxM2NmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjBkZWUxMDQwMTE2MDAxNDg4N2VlNjZkODRhODJmMmQ4NjgyNGE0NWJiNTFmZGVhMDNjOTJmNDkwMCIsICJoYXNoIjogImQ1NDRhZDJkMDhmOWRkYTMzYjc4OTUzYzc0ZWVkZTljOWViNWQ4MDgzNTY5NTMxMGIyNDJkNTc5NmNmYjkxZDYiLCAidW5zaWduZWRfZGF0YXMiOiBbeyJkYXRhcyI6IFsiNTE3MjI5MGE5ODU4YTRhMDdjNjAzYzc0MWY2ZmQ4ZTg2NzE1YThhNDQ3MGViMjM3ZDBhMmQ4MzI1YzE3MDZiNyJdLCAibmV0d29yayI6ICJtYWlubmV0IiwgInBhdGgiOiBudWxsfSwgeyJkYXRhcyI6IFsiZTQxYWI5NjQ3MDFmMjBhMjM0NzMzNDBiMTFkNWNiY2ZiYTlhMzczY2VkZjI4NGY4MDljMGM2MWNlN2Q3MTVkYSJdLCAicHVibGljX2tleSI6ICIzZTBhMzc3YWU0YWZhMDMxZDQ1NTE1OTlkOWJiN2Q1YjI3ZjQ3MzZkNzdmNzhjYWM0ZDQ3NmYwZmZiYTVhZTNlIiwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogIm0vNDQvMTUzLzEvMC8xIn1dLCAic2lnbmF0dXJlcyI6IFtdLCAibmV0d29yayI6ICJtYWlubmV0IiwgInR5cGUiOiAiYnl0b21fY2xhaW1fdW5zaWduZWQifQ" >>> recipient_xprivate_key = "58dd4094155bbebf2868189231c47e4e0edbd9f74545f843c9537259e1d7a656983aef283d0ccebecc2d33577a9f650b53ac7adff44f48ec839e3346cc22418f" >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> claim_solver = ClaimSolver(recipient_xprivate_key, "Hello Meheret!", bytecode) >>> claim_signature = ClaimSignature("mainnet") >>> claim_signature.sign(transaction_raw=unsigned_claim_transaction_raw, solver=claim_solver) <swap.providers.vapor.signature.ClaimSignature object at 0x0409DAF0>
RefundSignature¶
-
class
swap.providers.vapor.signature.
RefundSignature
(network: str = 'mainnet')¶ Vapor Refund signature.
- Parameters
network (str) – Vapor network, defaults to mainnet.
- Returns
RefundSignature – Vapor claim signature instance.
-
sign
(transaction_raw: str, solver: swap.providers.vapor.solver.RefundSolver) → swap.providers.vapor.signature.RefundSignature¶ Sign unsigned refund transaction raw.
- Parameters
transaction_raw (str) – Vapor unsigned refund transaction raw.
solver (vapor.solver.RefundSolver) – Vapor refund solver.
- Returns
RefundSignature – Vapor refund signature instance.
>>> from swap.providers.vapor.signature import RefundSignature >>> from swap.providers.vapor.solver import RefundSolver >>> unsigned_refund_transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcTluZHlseDAyc3lmd2Q3bnBlaGZ4ejRsZGRoenFzdmUyZnU2dmM3IiwgImhhc2giOiAiNjlhNWYzMDI4ODBhNzNkMzYzZWNiMzkyYzgyZGNkMzMyODNiZDFiYmU1NmFhMzAyODU4NzMzZTc5ZTE2Mzc5OCIsICJyYXciOiAiMDcwMTAwMDIwMTVmMDE1ZDMwNWEyOGQ4ZDM0YjQwYzY1OTM2ODEwZjllOWMxZjhiYzljNzkzZWMyZTcyYzcwZjkyMDNmYmJlYjBhNTZkYjlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmODBhZGUyMDQwMTAxMTYwMDE0MGU0M2E5MmE5ZThhY2E3ODhlYjE1NTFjMzE2NDQ4YzJlM2Y3ODIxNTAxMDAwMTVmMDE1ZDgyZTY1Zjk2NGQzYzM1MzI1NDhkZmRlOTM4NDYyZjU2NmM5NWQzYzkwZTZhM2ExODJhMGIzYmRhZTQ2YWE3OTBmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmODA4NmYyMDMwMTAxMTYwMDE0MmNkYTRmOTllYTgxMTJlNmZhNjFjZGQyNjE1N2VkNmRjNDA4MzMyYTIyMDEyMDkxZmY3ZjUyNWZmNDA4NzRjNGY0N2YwY2FiNDJlNDZlM2JmNTNhZGFkNTlhZGVmOTU1OGFkMWI2NDQ4ZjIyZTIwMjAxM2FmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmOTA0ZTAxMTYwMDE0MmNkYTRmOTllYTgxMTJlNmZhNjFjZGQyNjE1N2VkNmRjNDA4MzMyYTAwMDEzY2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlMDk2ZDMwODAxMTYwMDE0MmNkYTRmOTllYTgxMTJlNmZhNjFjZGQyNjE1N2VkNmRjNDA4MzMyYTAwIiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbIjY0ODJiMmRmZTliM2U3NjY0MzVlMDQ4MmI2MDAzN2FmYWVhYmFhYWExMDg5Mzc0OGEyODhiY2EwMjlmZjFjNTIiXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogbnVsbH0sIHsiZGF0YXMiOiBbIjBhNDY3NmE3MzI0MmNkMTI2NjFkYjBmM2Y3Mzc5NGQ0OWI3Nzc1NTBiZDk4MTc2YThkODhlYTg3NTVlNDE3ZjIiXSwgInB1YmxpY19rZXkiOiAiOTFmZjdmNTI1ZmY0MDg3NGM0ZjQ3ZjBjYWI0MmU0NmUzYmY1M2FkYWQ1OWFkZWY5NTU4YWQxYjY0NDhmMjJlMiIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9XSwgInNpZ25hdHVyZXMiOiBbXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJ0eXBlIjogImJ5dG9tX3JlZnVuZF91bnNpZ25lZCJ9" >>> sender_xprivate_key = "205b15f70e253399da90b127b074ea02904594be9d54678207872ec1ba31ee51ef4490504bd2b6f997113671892458830de09518e6bd5958d5d5dd97624cfa4b" >>> bytecode = "02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0" >>> refund_solver = RefundSolver(sender_xprivate_key, bytecode, 1000) >>> refund_signature = RefundSignature("mainnet") >>> refund_signature.sign(transaction_raw=unsigned_refund_transaction_raw, solver=refund_solver) <swap.providers.vapor.signature.RefundSignature object at 0x0409DAF0>
Remote Procedure Call (RPC)¶
Vapor remote procedure call.
-
swap.providers.vapor.rpc.
get_balance
(address: str, asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → int¶ Get Vapor balance.
- Parameters
address (str) – Vapor address.
asset (str) – Vapor asset, default to BTM asset.
network (str) – Vapor network, defaults to mainnet.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 15.
- Returns
int – Vapor asset balance (NEU amount).
>>> from swap.providers.vapor.rpc import get_balance >>> from swap.providers.vapor.assets import BTM as ASSET >>> get_balance(address="vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag", asset=ASSET, network="mainnet") 97000000
-
swap.providers.vapor.rpc.
get_utxos
(program: str, asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', network: str = 'mainnet', limit: int = 15, by: str = 'amount', order: str = 'desc', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → list¶ Get Vapor unspent transaction outputs (UTXO’s).
- Parameters
program (str) – Vapor control program.
asset (str) – Vapor asset id, defaults to BTM asset.
network (str) – Vapor network, defaults to mainnet.
limit (int) – Vapor utxo’s limit, defaults to 15.
by (str) – Sort by, defaults to amount.
order (str) – Sort order, defaults to desc.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
list – Vapor unspent transaction outputs (UTXO’s).
>>> from swap.providers.vapor.rpc import get_utxos >>> from swap.providers.vapor.assets import BTM as ASSET >>> get_utxos(program="00142cda4f99ea8112e6fa61cdd26157ed6dc408332a", asset=ASSET, network="mainnet") [{'hash': 'e152f88d33c6659ad823d15c5c65b2ed946d207c42430022cba9bb9b9d70a7a4', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 587639800}, {'hash': '88289fa4c7633574931be7ce4102aeb24def0de20e38e7d69a5ddd6efc116b95', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 8160000}, {'hash': 'f71c68f921b434cc2bcd469d26e7927aa6db7500e4cdeef814884f11c10f5de2', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 10000}, {'hash': 'e46cfecc1f1a26413172ce81c78affb19408e613915642fa5fb04d3b0a4ffa65', 'asset': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 100}]
-
swap.providers.vapor.rpc.
estimate_transaction_fee
(address: str, amount: int, asset: str = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', confirmations: int = 1, network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → int¶ Estimate Vapor transaction fee.
- Parameters
address (str) – Vapor address.
amount (int) – Vapor amount (NEU amount).
asset (str) – Vapor asset id, default to BTM asset.
confirmations (int) – Vapor confirmations, default to 1.
network (str) – Vapor network, defaults to solonet.
headers (dict) – Request headers, default to common headers.
timeout (int) – request timeout, default to 60.
- Returns
str – Estimated transaction fee (NEU amount).
>>> from swap.providers.vapor.rpc import estimate_transaction_fee >>> from swap.providers.vapor.assets import BTM as ASSET >>> estimate_transaction_fee(address="vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag", asset=ASSET, amount=100_000, confirmations=100, network="mainnet") 449000
-
swap.providers.vapor.rpc.
build_transaction
(address: str, transaction: dict, network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → dict¶ Build Vapor transaction.
- Parameters
address (str) – Vapor address.
transaction (dict) – Vapor transaction (inputs, outputs, fee, confirmations & forbid_chain_tx).
network (str) – Vapor network, defaults to mainnet.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Vapor builted transaction.
>>> from swap.providers.vapor.rpc import build_transaction >>> build_transaction(address="vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag", transaction={"fee": "0.1", "confirmations": 1, "inputs": [{"type": "spend_wallet", "amount": "0.1", "asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}], "outputs": [{"type": "control_address", "amount": "0.1", "asset": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "address": "vp1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07qcyvk37"}]}, network="mainnet") {'tx': {'hash': 'f6b35e2f37862bc9a2cfbc9f21440102599fc5860ed73ba5c3f44e17408e2c8c', 'status': True, 'size': 279, 'submission_timestamp': 0, 'memo': '', 'inputs': [{'script': '00142cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'address': 'vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag', 'asset': {'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'decimals': 0, 'symbol': 'BTM'}, 'amount': '0.9', 'type': 'spend'}], 'outputs': [{'utxo_id': '793540933493c531efdc0dfd89d95041badc4e1efaf938d9916cdc7834984c74', 'script': '00204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc', 'address': 'vp1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07qcyvk37', 'asset': {'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'decimals': 0, 'symbol': 'BTM'}, 'amount': '0.1', 'type': 'control'}, {'utxo_id': '62c391358a7bccac6a3a1b9efd5339eb7207660372290ceb8718af2284467ba0', 'script': '00142cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'address': 'vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag', 'asset': {'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'decimals': 0, 'symbol': 'BTM'}, 'amount': '0.7', 'type': 'control'}], 'fee': '0.1', 'balances': [{'asset': {'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'decimals': 0, 'symbol': 'BTM'}, 'amount': '-0.1'}], 'types': ['ordinary'], 'min_veto_height': 0}, 'raw_transaction': '07010001015f015d0c8382b6aadd32748d0a9490259bf9ba5b55f6ac283535f8752cf5d51621801cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8095f52a00011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e202014a0048ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80ade204012200204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc00013e003cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80bbb021011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a00', 'signing_instructions': [{'derivation_path': ['2c000000', '99000000', '01000000', '00000000', '01000000'], 'sign_data': ['4491d22111d3b75faa8f65ab23cd4b221fd14c99b1260239e3398ab3c347a769'], 'pubkey': '91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2'}]}
-
swap.providers.vapor.rpc.
get_transaction
(transaction_id: str, network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → dict¶ Get Vapor transaction detail.
- Parameters
transaction_id (str) – Vapor transaction id.
network (str) – Vapor network, defaults to mainnet.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Vapor transaction detail.
>>> from swap.providers.vapor.rpc import get_transaction >>> get_transaction(transaction_id="4e91bca76db112d3a356c17366df93e364a4922993414225f65390220730d0c1", network="mainnet") {'tx_id': '961d984b04214dc202fb40f4c48466d10a2813a138a31e1d2877ad3b6af0ef4c', 'timestamp': 1606993457000, 'block_hash': '440e791390f61c615b974c9292ac1d43bad67368076ef6d86a77cab22f1c2119', 'block_height': 85098064, 'trx_amount': 0, 'trx_fee': 10000000, 'status_fail': False, 'is_vote': False, 'is_cross_chain': False, 'coinbase': 0, 'size': 646, 'chain_status': 'mainnet', 'index_id': 18811685, 'mux_id': '97fdbe17d62ae8f8f2024ebc6a231183e8ce7c4e8fde5645b9a3c973f8d0d3ad', 'inputs': [{'type': 'spend', 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 10000, 'control_program': '00204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc', 'address': 'vp1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07qcyvk37', 'spent_output_id': 'c30e26caef4ad3436542700c5b32a91cdf0622c60a6c8a6e11cb1c0b250bc65f', 'input_id': 'c470139ab9f9e81829e51096c57365392195ea2e90d7fb19e9eb2b309df22425', 'witness_arguments': ['db718488496e0823b1cfd9ce64f226ffc4e9debd30eac0b751aa6bd28f694908ae0c0f5d39dd6ed697cae9b0857832ffcb9989487eea81d49d5f2a1228425205', '01', '02e8032091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2203e0a377ae4afa031d4551599d9bb7d5b27f4736d77f78cac4d476f0ffba5ae3e203a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb741f547a6416000000557aa888537a7cae7cac631f000000537acd9f6972ae7cac00c0'], 'decode_program': ['DUP ', 'SHA3 ', 'DATA_32 4f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc', 'EQUALVERIFY ', 'DATA_8 ffffffffffffffff', 'SWAP ', 'FALSE ', 'CHECKPREDICATE '], 'decimals': 8, 'symbol': 'BTM'}, {'type': 'spend', 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 16990000, 'control_program': '00142cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'address': 'vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag', 'spent_output_id': '1a7f2357f2ec272ea2d96413aee511d2077447731a799110cef97de177739181', 'input_id': '4f50c438b5006eafc547cc48128cb94d2e39430ef30f117aa85e6f30ac92ce09', 'witness_arguments': ['e31abbf90f8b20cb41f4daedc2f558dedcbc258fcfb9a36ae1f8c0b4b80f448a78d1d835adb02cc918374c71df8c02c52b425b18d14601ad11e5f0ad8eb00a07', '91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2'], 'decode_program': ['DUP ', 'HASH160 ', 'DATA_20 2cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'EQUALVERIFY ', 'TXSIGHASH ', 'SWAP ', 'CHECKSIG '], 'decimals': 8, 'symbol': 'BTM'}], 'outputs': [{'type': 'control', 'id': '20c00b6f9f4fc4f22ccee6c5f8b471a72b1f514f821b1c9c3d1f3243ff011cf1', 'position': 0, 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 10000, 'control_program': '00142cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'address': 'vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag', 'decimals': 8, 'decode_program': ['DUP ', 'HASH160 ', 'DATA_20 2cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'EQUALVERIFY ', 'TXSIGHASH ', 'SWAP ', 'CHECKSIG '], 'symbol': 'BTM'}, {'type': 'control', 'id': 'f7a36ebce7001e83510eb16c13ff0e5ef311179c25e8cf7bcb599ff8d17e23b2', 'position': 1, 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'amount': 6990000, 'control_program': '00142cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'address': 'vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag', 'decimals': 8, 'decode_program': ['DUP ', 'HASH160 ', 'DATA_20 2cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'EQUALVERIFY ', 'TXSIGHASH ', 'SWAP ', 'CHECKSIG '], 'symbol': 'BTM'}], 'mov_type': ''}
-
swap.providers.vapor.rpc.
decode_raw
(raw: str, network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → dict¶ Decode original Vapor raw.
- Parameters
raw (str) – Vapor transaction raw.
network (str) – Vapor network, defaults to mainnet.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Vapor decoded transaction raw.
>>> from swap.providers.vapor.rpc import decode_raw >>> decode_raw(raw="07010001015f015d0c8382b6aadd32748d0a9490259bf9ba5b55f6ac283535f8752cf5d51621801cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8095f52a00011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e202014a0048ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80ade204012200204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc00013e003cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80bbb021011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a00", network="testnet") {'tx_id': 'f6b35e2f37862bc9a2cfbc9f21440102599fc5860ed73ba5c3f44e17408e2c8c', 'version': 1, 'size': 279, 'time_range': 0, 'inputs': [{'type': 'spend', 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'asset_definition': {}, 'amount': 90000000, 'control_program': '00142cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'address': 'vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag', 'spent_output_id': 'f337ffe5333849636e7f6ca01b8a3aa0ef8cc50fadf875730cd40786bb504f80', 'input_id': '437cebc2dbdff6f5c821fbf6895455192685411bca64f796ff389554e0c23f44', 'witness_arguments': ['91ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e2']}], 'outputs': [{'type': 'control', 'id': '793540933493c531efdc0dfd89d95041badc4e1efaf938d9916cdc7834984c74', 'position': 0, 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'asset_definition': {}, 'amount': 10000000, 'control_program': '00204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc', 'address': 'vp1qf78sazxs539nmzztq7md63fk2x8lew6ed2gu5rnt9um7jerrh07qcyvk37'}, {'type': 'control', 'id': '62c391358a7bccac6a3a1b9efd5339eb7207660372290ceb8718af2284467ba0', 'position': 1, 'asset_id': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'asset_definition': {}, 'amount': 70000000, 'control_program': '00142cda4f99ea8112e6fa61cdd26157ed6dc408332a', 'address': 'vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag'}], 'fee': 10000000}
-
swap.providers.vapor.rpc.
submit_raw
(address: str, raw: str, signatures: list, network: str = 'mainnet', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → str¶ Submit original Vapor raw into blockchain.
- Parameters
address (str) – Vapor address.
raw (str) – Vapor transaction raw.
signatures (list) – Vapor signed massage datas.
network (str) – Vapor network, defaults to mainnet.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
str – Vapor submitted transaction id/hash.
>>> from swap.providers.vapor.rpc import submit_raw >>> submit_raw(address="vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag", raw="07010001015f015d0c8382b6aadd32748d0a9490259bf9ba5b55f6ac283535f8752cf5d51621801cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8095f52a00011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a22012091ff7f525ff40874c4f47f0cab42e46e3bf53adad59adef9558ad1b6448f22e202014a0048ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80ade204012200204f8f0e88d0a44b3d884b07b6dd4536518ffcbb596a91ca0e6b2f37e96463bbfc00013e003cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80bbb021011600142cda4f99ea8112e6fa61cdd26157ed6dc408332a00", signatures=[["31818788bd6cfd255643242212efc1239db8f9dcd91b0e07ef1ddd38d8edf98c420da5578ec195ff7a5ddd72605a1973c040f2345ea630e0e584e28738ad3f03"]], network="mainnet") "2993414225f65390220730d0c1a356c14e91bca76db112d37366df93e364a492"
Utils¶
Vapor Utils.
-
swap.providers.vapor.utils.
amount_converter
(amount: Union[int, float], symbol: str = 'NEU2BTM') → Union[int, float]¶ Vapor amount converter.
- Parameters
amount (int, float) – Vapor amount.
symbol (str) – Vapor symbol, default to NEU2BTM.
- Returns
int, float – BTM asset amount.
>>> from swap.providers.vapor.utils import amount_converter >>> amount_converter(amount=10_000_000, symbol="NEU2BTM") 0.1
-
swap.providers.vapor.utils.
is_network
(network: str) → bool¶ Check Vapor network.
- Parameters
network (str) – Vapor network.
- Returns
bool – Vapor valid/invalid network.
>>> from swap.providers.vapor.utils import is_network >>> is_network(network="solonet") True
-
swap.providers.vapor.utils.
is_address
(address: str, network: Optional[str] = None) → bool¶ Check Vapor address.
- Parameters
address (str) – Vapor address.
network (str) – Vapor network, defaults to None.
- Returns
bool – Vapor valid/invalid address.
>>> from swap.providers.vapor.utils import is_address >>> is_address(address="vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag", network="mainnet") True
-
swap.providers.vapor.utils.
is_transaction_raw
(transaction_raw: str) → bool¶ Check Vapor transaction raw.
- Parameters
transaction_raw (str) – Vapor transaction raw.
- Returns
bool – Vapor valid/invalid transaction raw.
>>> from swap.providers.vapor.utils import is_transaction_raw >>> transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcWU5MHFqdDl3NG04cnQzdG51dTBwenAyNGRrZmZlbHlzOHpjd3llIiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkMzA1YTI4ZDhkMzRiNDBjNjU5MzY4MTBmOWU5YzFmOGJjOWM3OTNlYzJlNzJjNzBmOTIwM2ZiYmViMGE1NmRiOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MGFkZTIwNDAxMDExNjAwMTQwZTQzYTkyYTllOGFjYTc4OGViMTU1MWMzMTY0NDhjMmUzZjc4MjE1MDEwMDAxNWYwMTVkMjAyZmQyNTU3YjY3ZjFkZjhiOGFjZWYwNjZmNWQ0NmE4NTAwODE0MzliNDE5MzI1ZDU1ZGJkOTM0MWUxMWFjNGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg0YWY1ZjAxMDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMjIwMTIwNTk5MDdmZGFkMGZmOTVmZWJhNDNhZWYzN2QyZTU1YzU3YjZlMTg2Y2QzYWQxN2M4M2U2YzgwYzY1ODIxOGI2NTAyMDEzYWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmUwOTQ5MDY0MDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMDAiLCAiaGFzaCI6ICI3NzlmYzliOWNhNGRiMTVkNDFhYzgwNDNlZDRlNDFkYjg4NDU2ZjA1YzljZmJhMDQ5MzYyZWNlZmQ2MjY3ZmMzIiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbIjMzZThkYThjZThlZjEzZmI0OTM4YTM3NGFlYTM2NjRlNGNkMmNkMDBmZGQ5ZDI5ODU5M2JkYmQ4NzJkNjZiODgiXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogbnVsbH0sIHsiZGF0YXMiOiBbIjc1ZTg3Yzc5MzNiNGRjNGE4N2UwNmZlZDMyM2U4NDI1ZTU0YTQ5NGZmODBkYzdmOGM0NTUyY2RiMGE2YmM3NGEiXSwgInB1YmxpY19rZXkiOiAiNTk5MDdmZGFkMGZmOTVmZWJhNDNhZWYzN2QyZTU1YzU3YjZlMTg2Y2QzYWQxN2M4M2U2YzgwYzY1ODIxOGI2NSIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9XSwgInNpZ25hdHVyZXMiOiBbXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJ0eXBlIjogImJ5dG9tX2NsYWltX3Vuc2lnbmVkIn0" >>> is_transaction_raw(transaction_raw=transaction_raw) True
-
swap.providers.vapor.utils.
decode_transaction_raw
(transaction_raw: str, headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → dict¶ Decode Vapor transaction raw.
- Parameters
transaction_raw (str) – Vapor transaction raw.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Decoded Vapor transaction raw.
>>> from swap.providers.vapor.utils import decode_transaction_raw >>> transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcWU5MHFqdDl3NG04cnQzdG51dTBwenAyNGRrZmZlbHlzOHpjd3llIiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkMzA1YTI4ZDhkMzRiNDBjNjU5MzY4MTBmOWU5YzFmOGJjOWM3OTNlYzJlNzJjNzBmOTIwM2ZiYmViMGE1NmRiOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MGFkZTIwNDAxMDExNjAwMTQwZTQzYTkyYTllOGFjYTc4OGViMTU1MWMzMTY0NDhjMmUzZjc4MjE1MDEwMDAxNWYwMTVkMjAyZmQyNTU3YjY3ZjFkZjhiOGFjZWYwNjZmNWQ0NmE4NTAwODE0MzliNDE5MzI1ZDU1ZGJkOTM0MWUxMWFjNGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg0YWY1ZjAxMDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMjIwMTIwNTk5MDdmZGFkMGZmOTVmZWJhNDNhZWYzN2QyZTU1YzU3YjZlMTg2Y2QzYWQxN2M4M2U2YzgwYzY1ODIxOGI2NTAyMDEzYWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmUwOTQ5MDY0MDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMDAiLCAiaGFzaCI6ICI3NzlmYzliOWNhNGRiMTVkNDFhYzgwNDNlZDRlNDFkYjg4NDU2ZjA1YzljZmJhMDQ5MzYyZWNlZmQ2MjY3ZmMzIiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbIjMzZThkYThjZThlZjEzZmI0OTM4YTM3NGFlYTM2NjRlNGNkMmNkMDBmZGQ5ZDI5ODU5M2JkYmQ4NzJkNjZiODgiXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogbnVsbH0sIHsiZGF0YXMiOiBbIjc1ZTg3Yzc5MzNiNGRjNGE4N2UwNmZlZDMyM2U4NDI1ZTU0YTQ5NGZmODBkYzdmOGM0NTUyY2RiMGE2YmM3NGEiXSwgInB1YmxpY19rZXkiOiAiNTk5MDdmZGFkMGZmOTVmZWJhNDNhZWYzN2QyZTU1YzU3YjZlMTg2Y2QzYWQxN2M4M2U2YzgwYzY1ODIxOGI2NSIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9XSwgInNpZ25hdHVyZXMiOiBbXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJ0eXBlIjogImJ5dG9tX2NsYWltX3Vuc2lnbmVkIn0" >>> decode_transaction_raw(transaction_raw=transaction_raw) {'fee': ..., 'type': '...', 'address': '...', 'transaction': {...}, 'unsigned_datas': [...], 'signatures': [...], 'network': '...'}
-
swap.providers.vapor.utils.
submit_transaction_raw
(transaction_raw: str, headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.3.0'}, timeout: int = 60) → dict¶ Submit Vapor transaction raw.
- Parameters
transaction_raw (str) – Vapor transaction raw.
headers (dict) – Request headers, default to common headers.
timeout (int) – Request timeout, default to 60.
- Returns
dict – Vapor submitted transaction id, fee, type and date.
>>> from swap.providers.vapor.utils import submit_transaction_raw >>> transaction_raw = "eyJmZWUiOiAxMDAwMDAwMCwgImFkZHJlc3MiOiAiYm0xcWU5MHFqdDl3NG04cnQzdG51dTBwenAyNGRrZmZlbHlzOHpjd3llIiwgInJhdyI6ICIwNzAxMDAwMjAxNWYwMTVkMzA1YTI4ZDhkMzRiNDBjNjU5MzY4MTBmOWU5YzFmOGJjOWM3OTNlYzJlNzJjNzBmOTIwM2ZiYmViMGE1NmRiOWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MGFkZTIwNDAxMDExNjAwMTQwZTQzYTkyYTllOGFjYTc4OGViMTU1MWMzMTY0NDhjMmUzZjc4MjE1MDEwMDAxNWYwMTVkMjAyZmQyNTU3YjY3ZjFkZjhiOGFjZWYwNjZmNWQ0NmE4NTAwODE0MzliNDE5MzI1ZDU1ZGJkOTM0MWUxMWFjNGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY4MDg0YWY1ZjAxMDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMjIwMTIwNTk5MDdmZGFkMGZmOTVmZWJhNDNhZWYzN2QyZTU1YzU3YjZlMTg2Y2QzYWQxN2M4M2U2YzgwYzY1ODIxOGI2NTAyMDEzYWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmY5MDRlMDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMDAwMTNjZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmUwOTQ5MDY0MDExNjAwMTRjOTVlMDkyY2FlYWVjZTM1YzU3M2U3MWUxMTA1NTU2ZDkyOWNmYzkwMDAiLCAiaGFzaCI6ICI3NzlmYzliOWNhNGRiMTVkNDFhYzgwNDNlZDRlNDFkYjg4NDU2ZjA1YzljZmJhMDQ5MzYyZWNlZmQ2MjY3ZmMzIiwgInVuc2lnbmVkX2RhdGFzIjogW3siZGF0YXMiOiBbIjMzZThkYThjZThlZjEzZmI0OTM4YTM3NGFlYTM2NjRlNGNkMmNkMDBmZGQ5ZDI5ODU5M2JkYmQ4NzJkNjZiODgiXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJwYXRoIjogbnVsbH0sIHsiZGF0YXMiOiBbIjc1ZTg3Yzc5MzNiNGRjNGE4N2UwNmZlZDMyM2U4NDI1ZTU0YTQ5NGZmODBkYzdmOGM0NTUyY2RiMGE2YmM3NGEiXSwgInB1YmxpY19rZXkiOiAiNTk5MDdmZGFkMGZmOTVmZWJhNDNhZWYzN2QyZTU1YzU3YjZlMTg2Y2QzYWQxN2M4M2U2YzgwYzY1ODIxOGI2NSIsICJuZXR3b3JrIjogIm1haW5uZXQiLCAicGF0aCI6ICJtLzQ0LzE1My8xLzAvMSJ9XSwgInNpZ25hdHVyZXMiOiBbXSwgIm5ldHdvcmsiOiAibWFpbm5ldCIsICJ0eXBlIjogImJ5dG9tX2NsYWltX3Vuc2lnbmVkIn0" >>> submit_transaction_raw(transaction_raw=transaction_raw) {'fee': ..., 'type': '...', 'transaction_id': '...', 'network': '...', 'date': '...'}
-
swap.providers.vapor.utils.
get_address_type
(address: str) → Optional[str]¶ Get Vapor address type.
- Parameters
address (str) – Vapor address.
- Returns
str – Vapor address type (P2WPKH, P2WSH).
>>> from swap.providers.vapor.utils import get_address_type >>> get_address_type(address="vp1q9ndylx02syfwd7npehfxz4lddhzqsve2za23ag") "p2wpkh"