Skip to main content

Python Bitcoin Tool

Project description

pybtctools

Python library for Bitcoin signatures and transactions

Tests PyPI Read the Docs

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybtctools-0.2.0.tar.gz (39.5 kB view details)

Uploaded Source

Built Distribution

pybtctools-0.2.0-py3-none-any.whl (39.3 kB view details)

Uploaded Python 3

File details

Details for the file pybtctools-0.2.0.tar.gz.

File metadata

  • Download URL: pybtctools-0.2.0.tar.gz
  • Upload date:
  • Size: 39.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.10 CPython/3.9.7 Linux/5.8.0-1041-azure

File hashes

Hashes for pybtctools-0.2.0.tar.gz
Algorithm Hash digest
SHA256 aaaebfd6874c401aba2d0e1d520fcd257bd3131b9ae433cf186410c05f76208a
MD5 07504d50c1c4d4d9f6a73e6128987b81
BLAKE2b-256 ba8227041a741675a822b8e08e93fd76daf376c72d70d1d246474a477767d869

See more details on using hashes here.

File details

Details for the file pybtctools-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pybtctools-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 39.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.10 CPython/3.9.7 Linux/5.8.0-1041-azure

File hashes

Hashes for pybtctools-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6a77f5436d1f8cf8e1130ee40b7cd409b20d902af7df2680a4e5a7603e586514
MD5 bcb83fabf99a147433cea430f975acbd
BLAKE2b-256 751f268563b73815cd1d6b6c8d9e91b2454ad202c4aac7ca47839cd352da2ada

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page