python比特币工具

bitcoin的Python项目详细描述


#pybitcointools,用于比特币签名和交易的python库

###优点:

  • 函数有一个简单的界面,以标准格式输入和输出
  • 不上课
  • 许多功能都可以单独使用
  • 支持二进制、十六进制和base58
  • 事务反序列化格式几乎与bitcoinjs兼容
  • Electrum和BIP0032支持
  • 在一条命令行指令中生成并发布事务
  • 包括非比特币特定转换和JSON实用程序

###缺点:

  • 不是完整节点,不知道块是什么
  • 依赖集中服务(blockchain.info)进行区块链操作,但操作确实有备份(eligius,blockr.io)

###示例用法(最佳学习方法:):

> 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’

或者使用pybtctool命令行界面:

@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

-s选项允许您从命令行读取参数

@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

-b选项允许您将二进制数据作为参数读取

@vub: pybtctool sha256 123 | pybtctool -s changebase 16 256 | pybtctool -b changebase 256 16 a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae30a

-j选项允许您从命令行读取json(-j将json列表拆分为多个参数)

@vub: pybtctool unspent 1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq | pybtctool -j select 200000001 | pybtctool -j mksend 1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P:20000 1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq 1000 | pybtctool -s signall 805cd74ca322633372b9bfb857f3be41db0b8de43a3c44353b238c0acff9d523 0100000003d5001aae8358ae98cb02c1b6f9859dc1ac3dbc1e9cc88632afeb7b7e3c510a49000000008b4830450221009e03bb6122437767e2ca785535824f4ed13d2ebbb9fa4f9becc6d6f4e1e217dc022064577353c08d8d974250143d920d3b963b463e43bbb90f3371060645c49266b90141048ef80f6bd6b073407a69299c2ba89de48adb59bb9689a5ab040befbbebcfbb15d01b006a6b825121a0d2c546c277acb60f0bd3203bd501b8d67c7dba91f27f47ffffffff1529d655dff6a0f6c9815ee835312fb3ca4df622fde21b6b9097666e9284087d010000008a473044022035dd67d18b575ebd339d05ca6ffa1d27d7549bd993aeaf430985795459fc139402201aaa162cc50181cee493870c9479b1148243a33923cb77be44a73ca554a4e5d60141048ef80f6bd6b073407a69299c2ba89de48adb59bb9689a5ab040befbbebcfbb15d01b006a6b825121a0d2c546c277acb60f0bd3203bd501b8d67c7dba91f27f47ffffffff23d5f9cf0a8c233b35443c3ae48d0bdb41bef357b8bfb972336322a34cd75c80010000008b483045022014daa5c5bbe9b3e5f2539a5cd8e22ce55bc84788f946c5b3643ecac85b4591a9022100a4062074a1df3fa0aea5ef67368d0b1f0eaac520bee6e417c682d83cd04330450141048ef80f6bd6b073407a69299c2ba89de48adb59bb9689a5ab040befbbebcfbb15d01b006a6b825121a0d2c546c277acb60f0bd3203bd501b8d67c7dba91f27f47ffffffff02204e0000000000001976a914946cb2e08075bcbaf157e47bcb67eb2b2339d24288ac5b3c4411000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac00000000

json的有趣之处:

@vub: pybtctool history 1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P | pybtctool -j multiaccess value | pybtctool -j sum 625216206372

@vub: pybtctool history 1EXoDusjGwvnjZUyKkxZ4UHEf77z6A5S4P | pybtctool -j count 6198

###主要命令列表:

  • pubkey:(privkey)->;pubkey
  • privtopub:(privkey)->;pubkey
  • pubkey_to_address:(pubkey)->;地址
  • pubtoaddr:(pubkey)->;地址
  • privkey_to_地址:(privkey)->;地址
  • privToaddr:(privkey)->;地址
  • 添加:(key1,key2)->;key1+key2(用于私钥或pubkeys)
  • 乘法:(pubkey,privkey)->;返回pubkey*privkey
  • ecdsa_sign:(消息,私钥)->;sig
  • ecdsa_verify:(消息、sig、pubkey)->;真/假
  • ecdsa_recover:(消息,sig)->;pubkey
  • 随机密钥:()->;私钥
  • 随机驻极体种子:(->;驻极体种子
  • 驻极体伸展:(种子)->;秘密指数
  • electrum_privkey:(seed或secret exponent,i,type)->;私钥
  • electrum_mpk:(种子或秘密指数)->;主公钥
  • electrum_pubkey:(seed或secexp或mpk)->;pubkey
  • bip32_主密钥:(seed)->;bip32主密钥
  • bip32-ckd:(私有或公共bip32密钥,i)->;子密钥
  • bip32_privtopub:(private bip32 key)->;public bip32 key
  • bip32_extract_key:(私有或公共bip32_key)->;私有密钥或公共密钥
  • 反序列化:(十六进制或二进制事务)->;json tx
  • 序列化:(json tx)->;十六进制或二进制tx
  • mktx:(输入、输出)->;tx
  • mksend:(输入、输出、更改地址、费用)->;发送
  • 签名:(tx,i,privkey)->;带有索引的tx i使用privkey签名
  • 多重签名:(tx,i,script,privkey)->;签名
  • 应用多信号:(tx,i,script,sigs)->;tx,索引i,sigs
  • scriptaddr:(脚本)->;p2sh地址
  • mk_multisig_脚本:(pubkeys,k,n)->;k-of-n pubkeys中的multisig脚本
  • 验证“tx”输入:(tx,i,script,sig,pub)->;真/假
  • tx_hash:(十六进制或二进制tx)->;哈希
  • 历史记录:(地址1、地址2等)->;输出到这些地址
  • 未使用的:(地址1、地址2等)>;未使用的输出到这些地址
  • fetchtx:(txash)->;如果存在则发送
  • push tx:(hex或bin tx)->;尝试推送到blockchain.info/pushtx
  • 访问:(json list/object,prop)->;所需属性json对象的y
  • multiaccess:(json list,prop)->;类似于access,但映射到每个list元素中
  • 切片:(json list,start,end)->;给定的列表切片
  • count:(json list)->;元素数
  • sum:(json list)->;所有值之和

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
多线程如何在读取文本文件时使用Java进度条?   ChromeDriver出现“java.lang.module.InvalidModuleDescriptorException:提供程序类org.apache.bsf.BSFManager不在模块中”错误   java如何将Google日历链接到应用程序?   java线程信令序列   java StackOverflowerr不知道出了什么问题   从azure mobile apps easy tables获取表格时,java Android应用程序冻结   java Android应用程序无法连接到firebase数据库   java如何将属性文件中的值注入字段?   无法创建java Spring引导CXF XMLOutputFactory   javaui:月份选择器   获取java数组中n个最大值的索引   java注入servlet调度器中的EntityManagerFactory(非托管)   我在Android Studio中编写java代码,需要从特定网页获取并显示特定行的数据   java如何在Hibernate中设置内部查询的限制?   java如何编写接受一个数组和两个整数的交换方法   基于递归的java快速供电方法