Utils
Bitcoin Utils.
- 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.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.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, address_type: Optional[str] = None) bool
Check Bitcoin address.
- Parameters
address (str) – Bitcoin address.
network (str) – Bitcoin network, defaults to
None
.address_type (str) – Bitcoin address type, 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.amount_unit_converter(amount: Union[int, float], unit_from: str = 'Satoshi2BTC') Union[int, float]
Bitcoin amount unit converter
- Parameters
amount (Union[int, float]) – Bitcoin any amount.
unit_from (str) – Bitcoin unit convert from symbol, default to
Satoshi2BTC
.
- Returns
int, float – BTC asset amount.
>>> from swap.providers.bitcoin.utils import amount_unit_converter >>> amount_unit_converter(amount=10_000_000, unit_from="Satoshi2BTC") 0.1
- 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.5.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, endpoint: str = 'sochain', headers: dict = {'accept': 'application/json', 'content-type': 'application/json; charset=utf-8', 'user-agent': 'Swap User-Agent 0.5.0'}, timeout: int = 60) dict
Submit transaction raw to Bitcoin blockchain.
- Parameters
transaction_raw (str) – Bitcoin transaction raw.
endpoint (str) – Bitcoin transaction submiter endpoint api name, defaults to
sochain
.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_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"