pybtctools
Python library for Bitcoin signatures and transactions
Features:
- Functions have a simple interface, inputting and outputting in standard formats
- Many functions can be taken out and used individually
- Supports binary, hex and base58
- Transaction deserialization format almost compatible with BitcoinJS
- Electrum and BIP0032 support
- Make and publish a transaction all in a single command line instruction
- Includes non-bitcoin-specific conversion and JSON utilities
Disadvantages:
- Not a full node, has no idea what blocks are
- Relies on centralized service (blockchain.info) for blockchain operations, although operations do have backups (eligius, blockr.io). (Deprecated, please don't rely on these functions, we're working on replace the current API calls)
Usage:
from bitcoin import *
priv = sha256('some big long brainwallet password')
print(priv)
# 57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4'
pub = privtopub(priv)
print(pub)
# '0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9'
addr = pubtoaddr(pub)
print(addr)
# '1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6'
h = history(addr)
print(h)
# [{'output': u'97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e:0', 'value': 50000, 'address': u'1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6'}, {'output': u'4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171:1', 'value': 50000, 'address': u'1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6'}]
outs = [{'value': 90000, 'address': '16iw1MQ1sy1DtRPYw3ao1bCamoyBJtRB4t'}]
tx = mktx(h,outs)
print(tx)
# '01000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f7970000000000ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000'
tx2 = sign(tx,0,priv)
print(tx2)
# '01000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b483045022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d29d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e01410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000'
tx3 = sign(tx2,1,priv)
print(tx3)
# '01000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b483045022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d29d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e01410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c010000008c4930460221008bbaaaf172adfefc3a1315dc7312c88645832ff76d52e0029d127e65bbeeabe1022100fdeb89658d503cf2737cedb4049e5070f689c50a9b6c85997d49e0787938f93901410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000'
pushtx(tx3)
# 'Transaction Submitted'
CLI
The legacy CLI is not available at the moment
Public interface:
| Function | Description |
|---|---|
| privkey_to_pubkey | (privkey) -> pubkey |
| privtopub | (privkey) -> pubkey |
| pubkey_to_address | (pubkey) -> address |
| pubtoaddr | (pubkey) -> address |
| privkey_to_address | (privkey) -> address |
| privtoaddr | (privkey) -> address |
| add | (key1, key2) -> key1 + key2 (works on privkeys or pubkeys) |
| multiply | (pubkey, privkey) -> returns pubkey * privkey |
| ecdsa_sign | (message, privkey) -> sig |
| ecdsa_verify | (message, sig, pubkey) -> True/False |
| ecdsa_recover | (message, sig) -> pubkey |
| random_key | () -> privkey |
| random_electrum_seed | () -> electrum seed |
| electrum_stretch | (seed) -> secret exponent |
| electrum_privkey | (seed or secret exponent, i, type) -> privkey |
| electrum_mpk | (seed or secret exponent) -> master public key |
| electrum_pubkey | (seed or secexp or mpk) -> pubkey |
| bip32_master_key | (seed) -> bip32 master key |
| bip32_ckd | (private or public bip32 key, i) -> child key |
| bip32_privtopub | (private bip32 key) -> public bip32 key |
| bip32_extract_key | (private or public bip32_key) -> privkey or pubkey |
| deserialize | (hex or bin transaction) -> JSON tx |
| serialize | (JSON tx) -> hex or bin tx |
| mktx | (inputs, outputs) -> tx |
| mksend | (inputs, outputs, change_addr, fee) -> tx |
| sign | (tx, i, privkey) -> tx with index i signed with privkey |
| multisign | (tx, i, script, privkey) -> signature |
| apply_multisignatures | (tx, i, script, sigs) -> tx with index i signed with sigs |
| scriptaddr | (script) -> P2SH address |
| mk_multisig_script | (pubkeys, k, n) -> k-of-n multisig script from pubkeys |
| verify_tx_input | (tx, i, script, sig, pub) -> True/False |
| tx_hash | (hex or bin tx) -> hash |
| history | (address1, address2, etc) -> outputs to those addresses |
| unspent | (address1, address2, etc) -> unspent outputs to those addresses |
| fetchtx | (txash) -> tx if present |
| pushtx | (hex or bin tx) -> tries to push to blockchain.info/pushtx |
| access | (json list/object, prop) -> desired property of that json object |
| multiaccess | (json list, prop) -> like access, but mapped across each list element |
| slice | (json list, start, end) -> given slice of the list |
| count | (json list) -> number of elements |
| sum | (json list) -> sum of all values |
Metadata
Release files for pybtctools 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pybtctools-0.2.0.tar.gz | 39.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pybtctools-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 78.7 kB
Release files / pybtctools-0.2.0.tar.gz
| Download URL | pybtctools-0.2.0.tar.gz |
|---|---|
| Size | 39.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
aaaebfd6874c401aba2d0e1d520fcd257bd3131b9ae433cf186410c05f76208a
|
|
BLAKE2b-256 checksum How to use checksums |
ba8227041a741675a822b8e08e93fd76daf376c72d70d1d246474a477767d869
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.10 CPython/3.9.7 Linux/5.8.0-1041-azure
|
Release files / pybtctools-0.2.0-py3-none-any.whl
| Download URL | pybtctools-0.2.0-py3-none-any.whl |
|---|---|
| Size | 39.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6a77f5436d1f8cf8e1130ee40b7cd409b20d902af7df2680a4e5a7603e586514
|
|
BLAKE2b-256 checksum How to use checksums |
751f268563b73815cd1d6b6c8d9e91b2454ad202c4aac7ca47839cd352da2ada
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.10 CPython/3.9.7 Linux/5.8.0-1041-azure
|