Developer Interface

Keys

bitcash.Key

alias of PrivateKey

class bitcash.PrivateKey(wif=None, network='main')

This class represents a BitcoinCash private key. Key is an alias.

Parameters:

wif (str) – A private key serialized to the Wallet Import Format. If the argument is not supplied, a new private key will be created. The WIF compression flag will be adhered to, but the version byte is disregarded. Compression will be used by all new keys.

Raises:

TypeError – If wif is not a str.

property address

The public address you share with others to receive funds.

balance_as(currency)

Returns your balance as a formatted string in a particular currency.

Parameters:

currency (str) – One of the Supported Currencies.

Return type:

str

create_transaction(outputs, fee=None, leftover=None, combine=True, message=None, unspents=None, custom_pushdata=False)

Creates a signed P2PKH transaction.

Parameters:
  • outputs (list of tuple) – A sequence of outputs you wish to send in the form (destination, amount, currency). The amount can be either an int, float, or string as long as it is a valid input to decimal.Decimal. The currency must be supported.

  • fee (int) – The number of satoshi per byte to pay to miners. By default Bitcash will poll https://bitcoincashfees.earn.com and use a fee that will allow your transaction to be confirmed as soon as possible.

  • leftover (str) – The destination that will receive any change from the transaction. By default Bitcash will send any change to the same address you sent from.

  • combine (bool) – Whether or not Bitcash should use all available UTXOs to make future transactions smaller and therefore reduce fees. By default Bitcash will consolidate UTXOs.

  • message (str) – A message to include in the transaction. This will be stored in the blockchain forever. Due to size limits, each message will be stored in chunks of 220 bytes.

  • unspents (list of Unspent) – The UTXOs to use as the inputs. By default Bitcash will communicate with the blockchain itself.

Returns:

The signed transaction as hex.

Return type:

str

classmethod from_bytes(bytestr)
Parameters:

bytestr (bytes) – A private key previously encoded as hex.

Return type:

PrivateKey

classmethod from_der(der)
Parameters:

der (bytes) – A private key previously encoded as DER.

Return type:

PrivateKey

classmethod from_hex(hexed)
Parameters:

hexed (str) – A private key previously encoded as hex.

Return type:

PrivateKey

classmethod from_int(num)
Parameters:

num (int) – A private key in raw integer form.

Return type:

PrivateKey

classmethod from_pem(pem)
Parameters:

pem (bytes) – A private key previously encoded as PEM.

Return type:

PrivateKey

get_balance(currency='satoshi')

Fetches the current balance by calling get_balance() and returns it using balance_as().

Parameters:

currency (str) – One of the Supported Currencies.

Return type:

str

get_transactions()

Fetches transaction history.

Return type:

list of str transaction IDs

get_unspents()

Fetches all available unspent transaction outputs.

Return type:

list of Unspent

is_compressed()

Returns whether or not this private key corresponds to a compressed public key.

Return type:

bool

classmethod prepare_transaction(address, outputs, compressed=True, fee=None, leftover=None, combine=True, message=None, unspents=None)

Prepares a P2PKH transaction for offline signing.

Parameters:
  • address (str) – The address the funds will be sent from.

  • outputs (list of tuple) – A sequence of outputs you wish to send in the form (destination, amount, currency). The amount can be either an int, float, or string as long as it is a valid input to decimal.Decimal. The currency must be supported.

  • compressed (bool) – Whether or not the address corresponds to a compressed public key. This influences the fee.

  • fee (int) –

    The number of satoshi per byte to pay to miners. By default Bitcash will poll https://bitcoincashfees.earn.com and use a fee that will allow your transaction to be confirmed as soon as possible.

  • leftover (str) – The destination that will receive any change from the transaction. By default Bitcash will send any change to the same address you sent from.

  • combine (bool) – Whether or not Bitcash should use all available UTXOs to make future transactions smaller and therefore reduce fees. By default Bitcash will consolidate UTXOs.

  • message (str) – A message to include in the transaction. This will be stored in the blockchain forever. Due to size limits, each message will be stored in chunks of 220 bytes.

  • unspents (list of Unspent) – The UTXOs to use as the inputs. By default Bitcash will communicate with the blockchain itself.

Returns:

JSON storing data required to create an offline transaction.

Return type:

str

property public_key

The public point serialized to bytes.

property public_point

The public point (x, y).

property scriptcode
send(outputs, fee=None, leftover=None, combine=True, message=None, unspents=None)

Creates a signed P2PKH transaction and attempts to broadcast it on the blockchain. This accepts the same arguments as create_transaction().

Parameters:
  • outputs (list of tuple) – A sequence of outputs you wish to send in the form (destination, amount, currency). The amount can be either an int, float, or string as long as it is a valid input to decimal.Decimal. The currency must be supported.

  • fee (int) –

    The number of satoshi per byte to pay to miners. By default Bitcash will poll https://bitcoincashfees.earn.com and use a fee that will allow your transaction to be confirmed as soon as possible.

  • leftover (str) – The destination that will receive any change from the transaction. By default Bitcash will send any change to the same address you sent from.

  • combine (bool) – Whether or not Bitcash should use all available UTXOs to make future transactions smaller and therefore reduce fees. By default Bitcash will consolidate UTXOs.

  • message (str) – A message to include in the transaction. This will be stored in the blockchain forever. Due to size limits, each message will be stored in chunks of 220 bytes.

  • unspents (list of Unspent) – The UTXOs to use as the inputs. By default Bitcash will communicate with the blockchain itself.

Returns:

The transaction ID.

Return type:

str

sign(data)

Signs some data which can be verified later by others using the public key.

Parameters:

data (bytes) – The message to sign.

Returns:

A signature compliant with BIP-62.

Return type:

bytes

sign_transaction(tx_data)

Creates a signed P2PKH transaction using previously prepared transaction data.

Parameters:

tx_data (str) – Output of prepare_transaction().

Returns:

The signed transaction as hex.

Return type:

str

to_bytes()
Return type:

bytes

to_der()
Return type:

bytes

to_hex()
Return type:

str

to_int()
Return type:

int

to_pem()
Return type:

bytes

to_wif()
verify(signature, data)

Verifies some data was signed by this private key.

Parameters:
  • signature (bytes) – The signature to verify.

  • data (bytes) – The data that was supposedly signed.

Return type:

bool

class bitcash.PrivateKeyTestnet(wif=None, network='test')

This class represents a testnet BitcoinCash private key. Note: coins on the test network have no monetary value!

Parameters:

wif (str) – A private key serialized to the Wallet Import Format. If the argument is not supplied, a new private key will be created. The WIF compression flag will be adhered to, but the version byte is disregarded. Compression will be used by all new keys.

Raises:

TypeError – If wif is not a str.

property address

The public address you share with others to receive funds.

balance_as(currency)

Returns your balance as a formatted string in a particular currency.

Parameters:

currency (str) – One of the Supported Currencies.

Return type:

str

create_transaction(outputs, fee=None, leftover=None, combine=True, message=None, unspents=None, custom_pushdata=False)

Creates a signed P2PKH transaction.

Parameters:
  • outputs (list of tuple) – A sequence of outputs you wish to send in the form (destination, amount, currency). The amount can be either an int, float, or string as long as it is a valid input to decimal.Decimal. The currency must be supported.

  • fee (int) –

    The number of satoshi per byte to pay to miners. By default Bitcash will poll https://bitcoincashfees.earn.com and use a fee that will allow your transaction to be confirmed as soon as possible.

  • leftover (str) – The destination that will receive any change from the transaction. By default Bitcash will send any change to the same address you sent from.

  • combine (bool) – Whether or not Bitcash should use all available UTXOs to make future transactions smaller and therefore reduce fees. By default Bitcash will consolidate UTXOs.

  • message (str) – A message to include in the transaction. This will be stored in the blockchain forever. Due to size limits, each message will be stored in chunks of 220 bytes.

  • unspents (list of Unspent) – The UTXOs to use as the inputs. By default Bitcash will communicate with the blockchain itself.

Returns:

The signed transaction as hex.

Return type:

str

classmethod from_bytes(bytestr)
Parameters:

bytestr (bytes) – A private key previously encoded as hex.

Return type:

PrivateKeyTestnet

classmethod from_der(der)
Parameters:

der (bytes) – A private key previously encoded as DER.

Return type:

PrivateKeyTestnet

classmethod from_hex(hexed)
Parameters:

hexed (str) – A private key previously encoded as hex.

Return type:

PrivateKeyTestnet

classmethod from_int(num)
Parameters:

num (int) – A private key in raw integer form.

Return type:

PrivateKeyTestnet

classmethod from_pem(pem)
Parameters:

pem (bytes) – A private key previously encoded as PEM.

Return type:

PrivateKeyTestnet

get_balance(currency='satoshi')

Fetches the current balance by calling get_balance() and returns it using balance_as().

Parameters:

currency (str) – One of the Supported Currencies.

Return type:

str

get_transactions()

Fetches transaction history.

Return type:

list of str transaction IDs

get_unspents()

Fetches all available unspent transaction outputs.

Return type:

list of Unspent

is_compressed()

Returns whether or not this private key corresponds to a compressed public key.

Return type:

bool

classmethod prepare_transaction(address, outputs, compressed=True, fee=None, leftover=None, combine=True, message=None, unspents=None)

Prepares a P2PKH transaction for offline signing.

Parameters:
  • address (str) – The address the funds will be sent from.

  • outputs (list of tuple) – A sequence of outputs you wish to send in the form (destination, amount, currency). The amount can be either an int, float, or string as long as it is a valid input to decimal.Decimal. The currency must be supported.

  • compressed (bool) – Whether or not the address corresponds to a compressed public key. This influences the fee.

  • fee (int) –

    The number of satoshi per byte to pay to miners. By default Bitcash will poll https://bitcoincashfees.earn.com and use a fee that will allow your transaction to be confirmed as soon as possible.

  • leftover (str) – The destination that will receive any change from the transaction. By default Bitcash will send any change to the same address you sent from.

  • combine (bool) – Whether or not Bitcash should use all available UTXOs to make future transactions smaller and therefore reduce fees. By default Bitcash will consolidate UTXOs.

  • message (str) – A message to include in the transaction. This will be stored in the blockchain forever. Due to size limits, each message will be stored in chunks of 220 bytes.

  • unspents (list of Unspent) – The UTXOs to use as the inputs. By default Bitcash will communicate with the blockchain itself.

Returns:

JSON storing data required to create an offline transaction.

Return type:

str

property public_key

The public point serialized to bytes.

property public_point

The public point (x, y).

property scriptcode
send(outputs, fee=None, leftover=None, combine=True, message=None, unspents=None)

Creates a signed P2PKH transaction and attempts to broadcast it on the blockchain. This accepts the same arguments as create_transaction().

Parameters:
  • outputs (list of tuple) – A sequence of outputs you wish to send in the form (destination, amount, currency). The amount can be either an int, float, or string as long as it is a valid input to decimal.Decimal. The currency must be supported.

  • fee (int) –

    The number of satoshi per byte to pay to miners. By default Bitcash will poll https://bitcoincashfees.earn.com and use a fee that will allow your transaction to be confirmed as soon as possible.

  • leftover (str) – The destination that will receive any change from the transaction. By default Bitcash will send any change to the same address you sent from.

  • combine (bool) – Whether or not Bitcash should use all available UTXOs to make future transactions smaller and therefore reduce fees. By default Bitcash will consolidate UTXOs.

  • message (str) – A message to include in the transaction. This will be stored in the blockchain forever. Due to size limits, each message will be stored in chunks of 220 bytes.

  • unspents (list of Unspent) – The UTXOs to use as the inputs. By default Bitcash will communicate with the blockchain itself.

Returns:

The transaction ID.

Return type:

str

sign(data)

Signs some data which can be verified later by others using the public key.

Parameters:

data (bytes) – The message to sign.

Returns:

A signature compliant with BIP-62.

Return type:

bytes

sign_transaction(tx_data)

Creates a signed P2PKH transaction using previously prepared transaction data.

Parameters:

tx_data (str) – Output of prepare_transaction().

Returns:

The signed transaction as hex.

Return type:

str

to_bytes()
Return type:

bytes

to_der()
Return type:

bytes

to_hex()
Return type:

str

to_int()
Return type:

int

to_pem()
Return type:

bytes

to_wif()
verify(signature, data)

Verifies some data was signed by this private key.

Parameters:
  • signature (bytes) – The signature to verify.

  • data (bytes) – The data that was supposedly signed.

Return type:

bool

class bitcash.wallet.BaseKey(wif=None, regtest=False)

This class represents a point on the elliptic curve secp256k1 and provides all necessary cryptographic functionality. You shouldn’t use this class directly.

Parameters:

wif (str) – A private key serialized to the Wallet Import Format. If the argument is not supplied, a new private key will be created. The WIF compression flag will be adhered to, but the version byte is disregarded. Compression will be used by all new keys.

Raises:

TypeError – If wif is not a str.

is_compressed()

Returns whether or not this private key corresponds to a compressed public key.

Return type:

bool

property public_key

The public point serialized to bytes.

property public_point

The public point (x, y).

sign(data)

Signs some data which can be verified later by others using the public key.

Parameters:

data (bytes) – The message to sign.

Returns:

A signature compliant with BIP-62.

Return type:

bytes

to_bytes()
Return type:

bytes

to_der()
Return type:

bytes

to_hex()
Return type:

str

to_int()
Return type:

int

to_pem()
Return type:

bytes

verify(signature, data)

Verifies some data was signed by this private key.

Parameters:
  • signature (bytes) – The signature to verify.

  • data (bytes) – The data that was supposedly signed.

Return type:

bool

Network

class bitcash.network.NetworkAPI
IGNORED_ERRORS = (<class 'requests.exceptions.RequestException'>, <class 'requests.exceptions.HTTPError'>, <class 'requests.exceptions.ConnectionError'>, <class 'requests.exceptions.ProxyError'>, <class 'requests.exceptions.SSLError'>, <class 'requests.exceptions.Timeout'>, <class 'requests.exceptions.ConnectTimeout'>, <class 'requests.exceptions.ReadTimeout'>, <class 'requests.exceptions.TooManyRedirects'>, <class 'requests.exceptions.ChunkedEncodingError'>, <class 'requests.exceptions.ContentDecodingError'>, <class 'requests.exceptions.StreamConsumedError'>)
classmethod broadcast_tx(tx_hex, network='mainnet')

Broadcasts a transaction to the blockchain.

Parameters:

tx_hex (str) – A signed transaction in hex form.

Raises:

ConnectionError – If all API services fail.

classmethod get_balance(address, network='mainnet')

Gets the balance of an address in satoshi.

Parameters:

address (str) – The address in question.

Raises:

ConnectionError – If all API services fail.

Return type:

int

classmethod get_raw_transaction(txid, network='mainnet')

Gets the raw, unparsed transaction details.

Parameters:

txid (str) – The transaction id in question.

Raises:

ConnectionError – If all API services fail.

Return type:

Transaction

classmethod get_transaction(txid, network='mainnet')

Gets the full transaction details.

Parameters:

txid (str) – The transaction id in question.

Raises:

ConnectionError – If all API services fail.

Return type:

Transaction

classmethod get_transactions(address, network='mainnet')

Gets the ID of all transactions related to an address.

Parameters:

address (str) – The address in question.

Raises:

ConnectionError – If all API services fail.

Return type:

list of str

classmethod get_tx_amount(txid, txindex, network='mainnet')

Gets the amount of a given transaction output.

Parameters:
  • txid (str) – The transaction id in question.

  • txindex (int) – The transaction index in question.

Raises:

ConnectionError – If all API services fail.

Return type:

Decimal

classmethod get_unspent(address, network='mainnet')

Gets all unspent transaction outputs belonging to an address.

Parameters:

address (str) – The address in question.

Raises:

ConnectionError – If all API services fail.

Return type:

list of Unspent

class bitcash.network.meta.Unspent(amount, confirmations, script, txid, txindex)

Represents an unspent transaction output (UTXO).

amount
confirmations
classmethod from_dict(d)
script
to_dict()
txid
txindex

Exchange Rates

bitcash.network.currency_to_satoshi(amount, currency)

Converts a given amount of currency to the equivalent number of satoshi. The amount can be either an int, float, or string as long as it is a valid input to decimal.Decimal.

Parameters:
Return type:

int

bitcash.network.currency_to_satoshi_cached(amount, currency)

Converts a given amount of currency to the equivalent number of satoshi. The amount can be either an int, float, or string as long as it is a valid input to decimal.Decimal. Results are cached using a decorator for 60 seconds by default. See Cache Times.

Parameters:
Return type:

int

bitcash.network.satoshi_to_currency(num, currency)

Converts a given number of satoshi to another currency as a formatted string rounded down to the proper number of decimal places.

Parameters:
Return type:

str

bitcash.network.satoshi_to_currency_cached(num, currency)

Converts a given number of satoshi to another currency as a formatted string rounded down to the proper number of decimal places. Results are cached using a decorator for 60 seconds by default. See Cache Times.

Parameters:
Return type:

str

class bitcash.network.rates.RatesAPI

Each method converts exactly 1 unit of the currency to the equivalent number of satoshi.

ARS_RATES = [<bound method BitpayRates.ars_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
AUD_RATES = [<bound method BitpayRates.aud_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
BOB_RATES = [<bound method BitpayRates.bob_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
BRL_RATES = [<bound method BitpayRates.brl_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
CAD_RATES = [<bound method BitpayRates.cad_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
CHF_RATES = [<bound method BitpayRates.chf_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
CLP_RATES = [<bound method BitpayRates.clp_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
CNY_RATES = [<bound method BitpayRates.cny_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
COP_RATES = [<bound method BitpayRates.cop_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
CUP_RATES = [<bound method BitpayRates.cup_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
DKK_RATES = [<bound method BitpayRates.dkk_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
DOP_RATES = [<bound method BitpayRates.dop_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
EUR_RATES = [<bound method BitpayRates.eur_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
GBP_RATES = [<bound method BitpayRates.gbp_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
HKD_RATES = [<bound method BitpayRates.hkd_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
IGNORED_ERRORS = (<class 'requests.exceptions.ConnectionError'>, <class 'requests.exceptions.HTTPError'>, <class 'requests.exceptions.Timeout'>)
ISK_RATES = [<bound method BitpayRates.isk_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
JPY_RATES = [<bound method BitpayRates.jpy_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
KRW_RATES = [<bound method BitpayRates.krw_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
MXN_RATES = [<bound method BitpayRates.mxn_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
NZD_RATES = [<bound method BitpayRates.nzd_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
PEN_RATES = [<bound method BitpayRates.pen_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
PLN_RATES = [<bound method BitpayRates.pln_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
RUB_RATES = [<bound method BitpayRates.rub_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
SEK_RATES = [<bound method BitpayRates.sek_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
SGD_RATES = [<bound method BitpayRates.sgd_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
THB_RATES = [<bound method BitpayRates.thb_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
TWD_RATES = [<bound method BitpayRates.twd_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
USD_RATES = [<bound method BitpayRates.usd_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>, <bound method CoinbaseRates.usd_to_satoshi of <class 'bitcash.network.rates.CoinbaseRates'>>]
UYU_RATES = [<bound method BitpayRates.uyu_to_satoshi of <class 'bitcash.network.rates.BitpayRates'>>]
classmethod ars_to_satoshi()
classmethod aud_to_satoshi()
classmethod bob_to_satoshi()
classmethod brl_to_satoshi()
classmethod cad_to_satoshi()
classmethod chf_to_satoshi()
classmethod clp_to_satoshi()
classmethod cny_to_satoshi()
classmethod cop_to_satoshi()
classmethod cup_to_satoshi()
classmethod dkk_to_satoshi()
classmethod dop_to_satoshi()
classmethod eur_to_satoshi()
classmethod gbp_to_satoshi()
classmethod hkd_to_satoshi()
classmethod isk_to_satoshi()
classmethod jpy_to_satoshi()
classmethod krw_to_satoshi()
classmethod mxn_to_satoshi()
classmethod nzd_to_satoshi()
classmethod pen_to_satoshi()
classmethod pln_to_satoshi()
classmethod rub_to_satoshi()
classmethod sek_to_satoshi()
classmethod sgd_to_satoshi()
classmethod thb_to_satoshi()
classmethod twd_to_satoshi()
classmethod usd_to_satoshi()
classmethod uyu_to_satoshi()
class bitcash.network.rates.BitpayRates

API Documentation: https://bitpay.com/api/rates#rest-api-resources-rates

SINGLE_RATE = 'https://bitpay.com/rates/BCH/'
classmethod ars_to_satoshi()
classmethod aud_to_satoshi()
classmethod bob_to_satoshi()
classmethod brl_to_satoshi()
classmethod cad_to_satoshi()
classmethod chf_to_satoshi()
classmethod clp_to_satoshi()
classmethod cny_to_satoshi()
classmethod cop_to_satoshi()
classmethod cup_to_satoshi()
classmethod currency_to_satoshi(currency)
classmethod dkk_to_satoshi()
classmethod dop_to_satoshi()
classmethod eur_to_satoshi()
classmethod gbp_to_satoshi()
classmethod hkd_to_satoshi()
classmethod isk_to_satoshi()
classmethod jpy_to_satoshi()
classmethod krw_to_satoshi()
classmethod mxn_to_satoshi()
classmethod nzd_to_satoshi()
classmethod pen_to_satoshi()
classmethod pln_to_satoshi()
classmethod rub_to_satoshi()
classmethod sek_to_satoshi()
classmethod sgd_to_satoshi()
classmethod thb_to_satoshi()
classmethod twd_to_satoshi()
classmethod usd_to_satoshi()
classmethod uyu_to_satoshi()

Utilities

bitcash.verify_sig(signature, data, public_key)

Verifies some data was signed by the owner of a public key.

Parameters:
  • signature (bytes) – The signature to verify.

  • data (bytes) – The data that was supposedly signed.

  • public_key (bytes) – The public key.

Returns:

True if all checks pass, False otherwise.

Exceptions

exception bitcash.exceptions.InsufficientFunds