Network¶
Balance¶
Every private key has a balance
property which is initially set to 0. This
internal balance will always be in satoshi.
>>> from bitcash import PrivateKeyTestnet
>>>
>>> key = PrivateKeyTestnet('cU6s7jckL3bZUUkb3Q2CD9vNu8F1o58K5R5a3JFtidoccMbhEGKZ')
>>> key.balance
0
You can query the blockchain for the current balance by calling
get_balance()
. It takes an optional argument currency
(see Supported Currencies) and returns a formatted string rounded down
to the proper number of decimal places. By default it will return the balance
in satoshi.
>>> key.get_balance('bch')
'0.82721202'
>>> key.balance
82721202
After you communicate with the network, you can view the internal balance in
terms of other currencies using balance_as()
.
>>> key.balance_as('mbch')
'827.21202'
>>> key.balance_as('usd')
'944.06'
>>> key.balance_as('gbp')
'757.58'
>>> key.balance_as('cny')
'6485.39'
See also Unsupported Currencies.
Unspent¶
You can see what unspent transaction outputs (commonly referred to as UTXO)
you have available to spend by calling get_unspents()
.
>>> key = PrivateKeyTestnet('cU6s7jckL3bZUUkb3Q2CD9vNu8F1o58K5R5a3JFtidoccMbhEGKZ')
>>> key.unspents
[]
>>> key.get_unspents()
[Unspent(amount=82721202, confirmations=688, script='76a914990ef60d63b5b5964a1c2282061af45123e93fcb88ac', txid='2ae6f3cc21cf11cfc7ad5d79436ecf08521df6a106691dcd1672b076138ea6ff', txindex=1)]
>>> key.unspents
[Unspent(amount=82721202, confirmations=688, script='76a914990ef60d63b5b5964a1c2282061af45123e93fcb88ac', txid='2ae6f3cc21cf11cfc7ad5d79436ecf08521df6a106691dcd1672b076138ea6ff', txindex=1)]
As you can see, this address has 1 available UTXO to spend worth 82721202
satoshi. get_balance()
uses this method by totalling the
amount of all UTXO. You will never have to use this directly.
Transaction History¶
Get a list of all transactions from newest to oldest by calling
get_transactions()
.
>>> key = PrivateKeyTestnet('cU6s7jckL3bZUUkb3Q2CD9vNu8F1o58K5R5a3JFtidoccMbhEGKZ')
>>> key.transactions
[]
>>> key.get_transactions()
['2ae6f3cc21cf11cfc7ad5d79436ecf08521df6a106691dcd1672b076138ea6ff',
'56e2df8402c86c3e9467a296d112127a27c11ba8d187e0e1cac1b35f4780d11d',
'c055bd6c8090e839ac8caea116aa5519897aaa6ee12fb2566de996dd46c9ca97',
'ab8e45386651c6bc1230841b6c728bff222754d6c9c0b4e40bb5bbc39796dc44',
'9c3d31f8a72f3358a73d39abdf1088d119bac2baba31bb04f0721aeb4e19fd61',
'94fe41e489626642541df5deccaed64354f0840934fb0177dc0374beecaaeaa7',
'143c0fc2fae94a0ad5572e8f1735db5fe26835778127f29e097b1e736f8842b7',
'21064f95e82f6061704652a0fe9b92a2c7a75a75be4aa8a83bdf9b45678818a2',
'0ec29933320919b4b92c3df2ad646e01ffa62f139530e7d98934db884b264943',
'bdf635087dc14111eda16a094b41acc6fe6563fe315cc10562f3736b364173c6',
'4c82f8f10adeae19003586fe1a705395fc91683b8e7364823227f0003639b233',
'a3533f0cf84f57f20c9697c5e8379f7b5c5f3461ba6f80acd906104788a92ddd',
'1eceb6c9576d0a9ab23a9e25c07b8c7407d9363a8a30ad9309941783d831305f',
'e02e968a68788bb53dba546a775b79ede8a704e5761d37644f02f76fc1d2b52a',
'52a573c2aa3428f035b8b90b1663dec70c8a1fae4f99f183eb88be4393c395ea',
'5c9ae53024e1606f74d7c7219a629cf582432e402f5d5de599377a4932423731',
'b99dd023ddd511e185c25cbb829f0f96c5515d4fc35ec86e23db30e43c37baa2',
'66aa55b471b39534935d011f445ea1bc83b5d785a533d7c1f29116d9360f1dd0',
'0338b19483b32d9f3b1d11e7fc79ac14b1ed14fcfa66fce4b9a691082985665b',
'51e09d0752fc6cc22cf2de73b9cab1bd0394f9b0fa9aa05638136f539f4e8091',
'4e1e8302572dd910bb7478b8b0a7839ac34999bec847c2940be29100ae4af472',
'dc885a7cfcb12d8553cc91f06c0cebf72228ba1abaed67c0b40c2d6a620b2df4',
'1bf4248262aba1518e8fbe09fdc2feb8b8165205d9cae150077f1b0dc5df5d16']
Presently this just returns each transaction’s hash for further lookup. In a future release they will become proper objects.
Services¶
BitCash communicates with the blockchain using trusted third-party APIs. Specifically, on mainnet, it can access:
https://demo.chaingraph.cash/v1/graphql via
ChaingraphAPI
https://gql.chaingraph.pat.mn/v1/graphql via
ChaingraphAPI
bch.imaginary.cash:50002 via
FulcrumProtocolAPI
electron.jochen-hoenicke.de:51002 via
FulcrumProtocolAPI
https://rest.bch.actorforth.org/v2/ via
BitcoinDotComAPI
And on testnet, it can access:
https://demo.chaingraph.cash/v1/graphql via
ChaingraphAPI
https://gql.chaingraph.pat.mn/v1/graphql via
ChaingraphAPI
testnet.imaginary.cash:50002 via
FulcrumProtocolAPI
testnet.bitcoincash.network:60002 via
FulcrumProtocolAPI
NetworkAPI¶
Private key network operations use NetworkAPI
. For each method,
it polls a service and if an error occurs it tries another.
Note
Default chaingraph APIs do not indicate if a transaction broadcast has failed. The NetworkAPI fallbacks to
FulcrumProtocolAPI on mainnet
to broadcast a transaction.