From 8e28ef83021707cf212877843db3d799b76582e2 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Wed, 12 Apr 2023 05:54:58 +0000 Subject: automatic import of python-bitcoin --- python-bitcoin.spec | 498 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 498 insertions(+) create mode 100644 python-bitcoin.spec (limited to 'python-bitcoin.spec') diff --git a/python-bitcoin.spec b/python-bitcoin.spec new file mode 100644 index 0000000..39a754c --- /dev/null +++ b/python-bitcoin.spec @@ -0,0 +1,498 @@ +%global _empty_manifest_terminate_build 0 +Name: python-bitcoin +Version: 1.1.42 +Release: 1 +Summary: Python Bitcoin Tools +License: UNKNOWN +URL: http://github.com/vbuterin/pybitcointools +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/12/88/c9390638d5b2713d38ccea46c93e8ec084f052a15a94f9b1d4c66baabd24/bitcoin-1.1.42.tar.gz +BuildArch: noarch + + +%description +# Pybitcointools, Python library for Bitcoin signatures and transactions + +### Advantages: + +* Functions have a simple interface, inputting and outputting in standard formats +* No classes +* 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) + +### Example usage (best way to learn :) ): + + > from bitcoin import * + > priv = sha256('some big long brainwallet password') + > priv + '57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4' + > pub = privtopub(priv) + > pub + '0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9' + > addr = pubtoaddr(pub) + > addr + '1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6' + > h = history(addr) + > 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) + > tx + '01000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f7970000000000ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000' + > tx2 = sign(tx,0,priv) + > tx2 + '01000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b483045022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d29d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e01410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000' + > tx3 = sign(tx2,1,priv) + > tx3 + '01000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b483045022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d29d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e01410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c010000008c4930460221008bbaaaf172adfefc3a1315dc7312c88645832ff76d52e0029d127e65bbeeabe1022100fdeb89658d503cf2737cedb4049e5070f689c50a9b6c85997d49e0787938f93901410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000' + > pushtx(tx3) + 'Transaction Submitted' + +Or using the pybtctool command line interface: + + @vub: pybtctool random_electrum_seed + 484ccb566edb66c65dd0fd2e4d90ef65 + + @vub: pybtctool electrum_privkey 484ccb566edb66c65dd0fd2e4d90ef65 0 0 + 593240c2205e7b7b5d7c13393b7c9553497854b75c7470b76aeca50cd4a894d7 + + @vub: pybtctool electrum_mpk 484ccb566edb66c65dd0fd2e4d90ef65 + 484e42865b8e9a6ea8262fd1cde666b557393258ed598d842e563ad9e5e6c70a97e387eefdef123c1b8b4eb21fe210c6216ad7cc1e4186fbbba70f0e2c062c25 + + @vub: pybtctool bip32_master_key 21456t243rhgtucyadh3wgyrcubw3grydfbng + xprv9s21ZrQH143K2napkeoHT48gWmoJa89KCQj4nqLfdGybyWHP9Z8jvCGzuEDv4ihCyoed7RFPNbc9NxoSF7cAvH9AaNSvepUaeqbSpJZ4rbT + + @vub: pybtctool bip32_ckd xprv9s21ZrQH143K2napkeoHT48gWmoJa89KCQj4nqLfdGybyWHP9Z8jvCGzuEDv4ihCyoed7RFPNbc9NxoSF7cAvH9AaNSvepUaeqbSpJZ4rbT 0 + xprv9vfzYrpwo7QHFdtrcvsSCTrBESFPUf1g7NRvayy1QkEfUekpDKLfqvHjgypF5w3nAvnwPjtQUNkyywWNkLbiUS95khfHCzJXFkLEdwRepbw + + @vub: pybtctool bip32_privtopub xprv9s21ZrQH143K2napkeoHT48gWmoJa89KCQj4nqLfdGybyWHP9Z8jvCGzuEDv4ihCyoed7RFPNbc9NxoSF7cAvH9AaNSvepUaeqbSpJZ4rbT + xpub661MyMwAqRbcFGfHrgLHpC5R4odnyasAZdefbDkHBcWarJcXh6SzTzbUkWuhnP142ZFdKdAJSuTSaiGDYjvm7bCLmA8DZqksYjJbYmcgrYF + +The -s option lets you read arguments from the command line + + @vub: pybtctool sha256 'some big long brainwallet password' | pybtctool -s privtoaddr | pybtctool -s history + [{'output': u'97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e:0', 'value': 50000, 'address': u'1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6'}, {'output': u'4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171:1', 'value': 50000, 'address': u'1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6'}] + @vub: pybtctool random_electrum_seed | pybtctool -s electrum_privkey 0 0 + 593240c2205e7b7b5d7c13393b7c9553497854b75c7470b76aeca50cd4a894d7 + +The -b option lets you read binary data as an argument + + @vub: pybtctool sha256 123 | pybtctool -s changebase 16 256 | pybtctool -b changebase 256 16 + a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae30a + +The -j option lets you read json from the command line (-J to split a json list into multiple arguments) + + @vub: pybtctool unspent 1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq | pybtctool -j select 200000001 | pybtctool -j mksend 1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P:20000 1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq 1000 | pybtctool -s signall 805cd74ca322633372b9bfb857f3be41db0b8de43a3c44353b238c0acff9d523 + 0100000003d5001aae8358ae98cb02c1b6f9859dc1ac3dbc1e9cc88632afeb7b7e3c510a49000000008b4830450221009e03bb6122437767e2ca785535824f4ed13d2ebbb9fa4f9becc6d6f4e1e217dc022064577353c08d8d974250143d920d3b963b463e43bbb90f3371060645c49266b90141048ef80f6bd6b073407a69299c2ba89de48adb59bb9689a5ab040befbbebcfbb15d01b006a6b825121a0d2c546c277acb60f0bd3203bd501b8d67c7dba91f27f47ffffffff1529d655dff6a0f6c9815ee835312fb3ca4df622fde21b6b9097666e9284087d010000008a473044022035dd67d18b575ebd339d05ca6ffa1d27d7549bd993aeaf430985795459fc139402201aaa162cc50181cee493870c9479b1148243a33923cb77be44a73ca554a4e5d60141048ef80f6bd6b073407a69299c2ba89de48adb59bb9689a5ab040befbbebcfbb15d01b006a6b825121a0d2c546c277acb60f0bd3203bd501b8d67c7dba91f27f47ffffffff23d5f9cf0a8c233b35443c3ae48d0bdb41bef357b8bfb972336322a34cd75c80010000008b483045022014daa5c5bbe9b3e5f2539a5cd8e22ce55bc84788f946c5b3643ecac85b4591a9022100a4062074a1df3fa0aea5ef67368d0b1f0eaac520bee6e417c682d83cd04330450141048ef80f6bd6b073407a69299c2ba89de48adb59bb9689a5ab040befbbebcfbb15d01b006a6b825121a0d2c546c277acb60f0bd3203bd501b8d67c7dba91f27f47ffffffff02204e0000000000001976a914946cb2e08075bcbaf157e47bcb67eb2b2339d24288ac5b3c4411000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac00000000 + +Fun stuff with json: + + @vub: pybtctool history 1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P | pybtctool -j multiaccess value | pybtctool -j sum + 625216206372 + + @vub: pybtctool history 1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P | pybtctool -j count + 6198 + +### Listing of main commands: + +* 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 + + +%package -n python3-bitcoin +Summary: Python Bitcoin Tools +Provides: python-bitcoin +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-bitcoin +# Pybitcointools, Python library for Bitcoin signatures and transactions + +### Advantages: + +* Functions have a simple interface, inputting and outputting in standard formats +* No classes +* 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) + +### Example usage (best way to learn :) ): + + > from bitcoin import * + > priv = sha256('some big long brainwallet password') + > priv + '57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4' + > pub = privtopub(priv) + > pub + '0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9' + > addr = pubtoaddr(pub) + > addr + '1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6' + > h = history(addr) + > 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) + > tx + '01000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f7970000000000ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000' + > tx2 = sign(tx,0,priv) + > tx2 + '01000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b483045022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d29d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e01410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000' + > tx3 = sign(tx2,1,priv) + > tx3 + '01000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b483045022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d29d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e01410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c010000008c4930460221008bbaaaf172adfefc3a1315dc7312c88645832ff76d52e0029d127e65bbeeabe1022100fdeb89658d503cf2737cedb4049e5070f689c50a9b6c85997d49e0787938f93901410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000' + > pushtx(tx3) + 'Transaction Submitted' + +Or using the pybtctool command line interface: + + @vub: pybtctool random_electrum_seed + 484ccb566edb66c65dd0fd2e4d90ef65 + + @vub: pybtctool electrum_privkey 484ccb566edb66c65dd0fd2e4d90ef65 0 0 + 593240c2205e7b7b5d7c13393b7c9553497854b75c7470b76aeca50cd4a894d7 + + @vub: pybtctool electrum_mpk 484ccb566edb66c65dd0fd2e4d90ef65 + 484e42865b8e9a6ea8262fd1cde666b557393258ed598d842e563ad9e5e6c70a97e387eefdef123c1b8b4eb21fe210c6216ad7cc1e4186fbbba70f0e2c062c25 + + @vub: pybtctool bip32_master_key 21456t243rhgtucyadh3wgyrcubw3grydfbng + xprv9s21ZrQH143K2napkeoHT48gWmoJa89KCQj4nqLfdGybyWHP9Z8jvCGzuEDv4ihCyoed7RFPNbc9NxoSF7cAvH9AaNSvepUaeqbSpJZ4rbT + + @vub: pybtctool bip32_ckd xprv9s21ZrQH143K2napkeoHT48gWmoJa89KCQj4nqLfdGybyWHP9Z8jvCGzuEDv4ihCyoed7RFPNbc9NxoSF7cAvH9AaNSvepUaeqbSpJZ4rbT 0 + xprv9vfzYrpwo7QHFdtrcvsSCTrBESFPUf1g7NRvayy1QkEfUekpDKLfqvHjgypF5w3nAvnwPjtQUNkyywWNkLbiUS95khfHCzJXFkLEdwRepbw + + @vub: pybtctool bip32_privtopub xprv9s21ZrQH143K2napkeoHT48gWmoJa89KCQj4nqLfdGybyWHP9Z8jvCGzuEDv4ihCyoed7RFPNbc9NxoSF7cAvH9AaNSvepUaeqbSpJZ4rbT + xpub661MyMwAqRbcFGfHrgLHpC5R4odnyasAZdefbDkHBcWarJcXh6SzTzbUkWuhnP142ZFdKdAJSuTSaiGDYjvm7bCLmA8DZqksYjJbYmcgrYF + +The -s option lets you read arguments from the command line + + @vub: pybtctool sha256 'some big long brainwallet password' | pybtctool -s privtoaddr | pybtctool -s history + [{'output': u'97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e:0', 'value': 50000, 'address': u'1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6'}, {'output': u'4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171:1', 'value': 50000, 'address': u'1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6'}] + @vub: pybtctool random_electrum_seed | pybtctool -s electrum_privkey 0 0 + 593240c2205e7b7b5d7c13393b7c9553497854b75c7470b76aeca50cd4a894d7 + +The -b option lets you read binary data as an argument + + @vub: pybtctool sha256 123 | pybtctool -s changebase 16 256 | pybtctool -b changebase 256 16 + a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae30a + +The -j option lets you read json from the command line (-J to split a json list into multiple arguments) + + @vub: pybtctool unspent 1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq | pybtctool -j select 200000001 | pybtctool -j mksend 1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P:20000 1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq 1000 | pybtctool -s signall 805cd74ca322633372b9bfb857f3be41db0b8de43a3c44353b238c0acff9d523 + 0100000003d5001aae8358ae98cb02c1b6f9859dc1ac3dbc1e9cc88632afeb7b7e3c510a49000000008b4830450221009e03bb6122437767e2ca785535824f4ed13d2ebbb9fa4f9becc6d6f4e1e217dc022064577353c08d8d974250143d920d3b963b463e43bbb90f3371060645c49266b90141048ef80f6bd6b073407a69299c2ba89de48adb59bb9689a5ab040befbbebcfbb15d01b006a6b825121a0d2c546c277acb60f0bd3203bd501b8d67c7dba91f27f47ffffffff1529d655dff6a0f6c9815ee835312fb3ca4df622fde21b6b9097666e9284087d010000008a473044022035dd67d18b575ebd339d05ca6ffa1d27d7549bd993aeaf430985795459fc139402201aaa162cc50181cee493870c9479b1148243a33923cb77be44a73ca554a4e5d60141048ef80f6bd6b073407a69299c2ba89de48adb59bb9689a5ab040befbbebcfbb15d01b006a6b825121a0d2c546c277acb60f0bd3203bd501b8d67c7dba91f27f47ffffffff23d5f9cf0a8c233b35443c3ae48d0bdb41bef357b8bfb972336322a34cd75c80010000008b483045022014daa5c5bbe9b3e5f2539a5cd8e22ce55bc84788f946c5b3643ecac85b4591a9022100a4062074a1df3fa0aea5ef67368d0b1f0eaac520bee6e417c682d83cd04330450141048ef80f6bd6b073407a69299c2ba89de48adb59bb9689a5ab040befbbebcfbb15d01b006a6b825121a0d2c546c277acb60f0bd3203bd501b8d67c7dba91f27f47ffffffff02204e0000000000001976a914946cb2e08075bcbaf157e47bcb67eb2b2339d24288ac5b3c4411000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac00000000 + +Fun stuff with json: + + @vub: pybtctool history 1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P | pybtctool -j multiaccess value | pybtctool -j sum + 625216206372 + + @vub: pybtctool history 1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P | pybtctool -j count + 6198 + +### Listing of main commands: + +* 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 + + +%package help +Summary: Development documents and examples for bitcoin +Provides: python3-bitcoin-doc +%description help +# Pybitcointools, Python library for Bitcoin signatures and transactions + +### Advantages: + +* Functions have a simple interface, inputting and outputting in standard formats +* No classes +* 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) + +### Example usage (best way to learn :) ): + + > from bitcoin import * + > priv = sha256('some big long brainwallet password') + > priv + '57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4' + > pub = privtopub(priv) + > pub + '0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9' + > addr = pubtoaddr(pub) + > addr + '1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6' + > h = history(addr) + > 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) + > tx + '01000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f7970000000000ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000' + > tx2 = sign(tx,0,priv) + > tx2 + '01000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b483045022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d29d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e01410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000' + > tx3 = sign(tx2,1,priv) + > tx3 + '01000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b483045022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d29d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e01410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c010000008c4930460221008bbaaaf172adfefc3a1315dc7312c88645832ff76d52e0029d127e65bbeeabe1022100fdeb89658d503cf2737cedb4049e5070f689c50a9b6c85997d49e0787938f93901410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000' + > pushtx(tx3) + 'Transaction Submitted' + +Or using the pybtctool command line interface: + + @vub: pybtctool random_electrum_seed + 484ccb566edb66c65dd0fd2e4d90ef65 + + @vub: pybtctool electrum_privkey 484ccb566edb66c65dd0fd2e4d90ef65 0 0 + 593240c2205e7b7b5d7c13393b7c9553497854b75c7470b76aeca50cd4a894d7 + + @vub: pybtctool electrum_mpk 484ccb566edb66c65dd0fd2e4d90ef65 + 484e42865b8e9a6ea8262fd1cde666b557393258ed598d842e563ad9e5e6c70a97e387eefdef123c1b8b4eb21fe210c6216ad7cc1e4186fbbba70f0e2c062c25 + + @vub: pybtctool bip32_master_key 21456t243rhgtucyadh3wgyrcubw3grydfbng + xprv9s21ZrQH143K2napkeoHT48gWmoJa89KCQj4nqLfdGybyWHP9Z8jvCGzuEDv4ihCyoed7RFPNbc9NxoSF7cAvH9AaNSvepUaeqbSpJZ4rbT + + @vub: pybtctool bip32_ckd xprv9s21ZrQH143K2napkeoHT48gWmoJa89KCQj4nqLfdGybyWHP9Z8jvCGzuEDv4ihCyoed7RFPNbc9NxoSF7cAvH9AaNSvepUaeqbSpJZ4rbT 0 + xprv9vfzYrpwo7QHFdtrcvsSCTrBESFPUf1g7NRvayy1QkEfUekpDKLfqvHjgypF5w3nAvnwPjtQUNkyywWNkLbiUS95khfHCzJXFkLEdwRepbw + + @vub: pybtctool bip32_privtopub xprv9s21ZrQH143K2napkeoHT48gWmoJa89KCQj4nqLfdGybyWHP9Z8jvCGzuEDv4ihCyoed7RFPNbc9NxoSF7cAvH9AaNSvepUaeqbSpJZ4rbT + xpub661MyMwAqRbcFGfHrgLHpC5R4odnyasAZdefbDkHBcWarJcXh6SzTzbUkWuhnP142ZFdKdAJSuTSaiGDYjvm7bCLmA8DZqksYjJbYmcgrYF + +The -s option lets you read arguments from the command line + + @vub: pybtctool sha256 'some big long brainwallet password' | pybtctool -s privtoaddr | pybtctool -s history + [{'output': u'97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e:0', 'value': 50000, 'address': u'1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6'}, {'output': u'4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171:1', 'value': 50000, 'address': u'1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6'}] + @vub: pybtctool random_electrum_seed | pybtctool -s electrum_privkey 0 0 + 593240c2205e7b7b5d7c13393b7c9553497854b75c7470b76aeca50cd4a894d7 + +The -b option lets you read binary data as an argument + + @vub: pybtctool sha256 123 | pybtctool -s changebase 16 256 | pybtctool -b changebase 256 16 + a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae30a + +The -j option lets you read json from the command line (-J to split a json list into multiple arguments) + + @vub: pybtctool unspent 1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq | pybtctool -j select 200000001 | pybtctool -j mksend 1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P:20000 1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq 1000 | pybtctool -s signall 805cd74ca322633372b9bfb857f3be41db0b8de43a3c44353b238c0acff9d523 + 0100000003d5001aae8358ae98cb02c1b6f9859dc1ac3dbc1e9cc88632afeb7b7e3c510a49000000008b4830450221009e03bb6122437767e2ca785535824f4ed13d2ebbb9fa4f9becc6d6f4e1e217dc022064577353c08d8d974250143d920d3b963b463e43bbb90f3371060645c49266b90141048ef80f6bd6b073407a69299c2ba89de48adb59bb9689a5ab040befbbebcfbb15d01b006a6b825121a0d2c546c277acb60f0bd3203bd501b8d67c7dba91f27f47ffffffff1529d655dff6a0f6c9815ee835312fb3ca4df622fde21b6b9097666e9284087d010000008a473044022035dd67d18b575ebd339d05ca6ffa1d27d7549bd993aeaf430985795459fc139402201aaa162cc50181cee493870c9479b1148243a33923cb77be44a73ca554a4e5d60141048ef80f6bd6b073407a69299c2ba89de48adb59bb9689a5ab040befbbebcfbb15d01b006a6b825121a0d2c546c277acb60f0bd3203bd501b8d67c7dba91f27f47ffffffff23d5f9cf0a8c233b35443c3ae48d0bdb41bef357b8bfb972336322a34cd75c80010000008b483045022014daa5c5bbe9b3e5f2539a5cd8e22ce55bc84788f946c5b3643ecac85b4591a9022100a4062074a1df3fa0aea5ef67368d0b1f0eaac520bee6e417c682d83cd04330450141048ef80f6bd6b073407a69299c2ba89de48adb59bb9689a5ab040befbbebcfbb15d01b006a6b825121a0d2c546c277acb60f0bd3203bd501b8d67c7dba91f27f47ffffffff02204e0000000000001976a914946cb2e08075bcbaf157e47bcb67eb2b2339d24288ac5b3c4411000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac00000000 + +Fun stuff with json: + + @vub: pybtctool history 1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P | pybtctool -j multiaccess value | pybtctool -j sum + 625216206372 + + @vub: pybtctool history 1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P | pybtctool -j count + 6198 + +### Listing of main commands: + +* 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 + + +%prep +%autosetup -n bitcoin-1.1.42 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-bitcoin -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed Apr 12 2023 Python_Bot - 1.1.42-1 +- Package Spec generated -- cgit v1.2.3