当前位置:   article > 正文

bip32-utils_python bip32utils

python bip32utils

A set of utilities for working with BIP32. Compatible with bitgo-utxo-lib.

Example

  1. var bitcoin = require('bitgo-utxo-lib')
  2. var bip32utils = require('bip32-utils')
  3. // ...
  4. var m = bitcoin.HDNode.fromSeedHex(seedHex)
  5. var i = m.deriveHardened(0)
  6. var external = i.derive(0)
  7. var internal = i.derive(1)
  8. var account = new bip32utils.Account([
  9. new bip32utils.Chain(external.neutered()),
  10. new bip32utils.Chain(internal.neutered())
  11. ])
  12. console.log(account.getChainAddress(0))
  13. // => 1QEj2WQD9vxTzsGEvnmLpvzeLVrpzyKkGt
  14. account.nextChainAddress(0)
  15. console.log(account.getChainAddress(1))
  16. // => 1DAi282VN7Ack9o5BqWYkiEsS8Vgx1rLn
  17. console.log(account.nextChainAddress(1))
  18. // => 1CXKM323V3kkrHmZQYPUTftGh9VrAWuAYX
  19. console.log(account.derive('1QEj2WQD9vxTzsGEvnmLpvzeLVrpzyKkGt'))
  20. // => xpub6A5Fz4JZg4kd8pLTTaMBKsvVgzRBrvai6ChoxWNTtYQ3UDVG1VyAWQqi6SNqkpsfsx9F8pRqwtKUbU4j4gqpuN2gpgQs4DiJxsJQvTjdzfA
  21. // NOTE: passing in the parent nodes allows for private key escalation (see xprv vs xpub)
  22. console.log(account.derive('1QEj2WQD9vxTzsGEvnmLpvzeLVrpzyKkGt', [external, internal]))
  23. // => xprv9vodQPEygdPGUWeKUVNd6M2N533PvEYP21tYxznauyhrYBBCmdKxRJzmnsTsSNqfTJPrDF98GbLCm6xRnjceZ238Qkf5GQGHk79CrFqtG4d
BIP32 Chains
  1. var bitcoin = require('bitgo-utxo-lib')
  2. var bip32utils = require('bip32-utils')
  3. // ...
  4. var hdNode = bitcoin.HDNode.fromSeedHex(seedHex)
  5. var chain = new bip32utils.Chain(hdNode)
  6. for (var k = 0; k < 10; ++k) chain.next()
  7. var address = chain.get()
  8. console.log(chain.find(address))
  9. // => 9
  10. console.log(chain.pop())
  11. // => address
BIP32 Discovery (manual)
  1. var bip32utils = require('bip32-utils')
  2. var bitcoin = require('bitgo-utxo-lib')
  3. var Blockchain = require('cb-blockr')
  4. // ...
  5. var blockchain = new Blockchain('testnet')
  6. var hdNode = bitcoin.HDNode.fromSeedHex(seedHex)
  7. var chain = bip32utils.Chain(hdNode)
  8. var GAP_LIMIT = 20
  9. bip32utils.discovery(chain, GAP_LIMIT, function(addresses, callback) {
  10. blockchain.addresses.summary(addresses, function(err, results) {
  11. if (err) return callback(err)
  12. var areUsed = results.map(function(result) {
  13. return result.totalReceived > 0
  14. })
  15. callback(undefined, areUsed)
  16. })
  17. }, function(err, used, checked) {
  18. if (err) throw err
  19. console.log('Discovered at most ' + used + ' used addresses')
  20. console.log('Checked ' + checked + ' addresses')
  21. console.log('With at least ' + (checked - used) + ' unused addresses')
  22. // throw away ALL unused addresses AFTER the last unused address
  23. var unused = checked - used
  24. for (var i = 1; i < unused; ++i) chain.pop()
  25. // remember used !== total, chain may have started at a k-index > 0
  26. console.log('Total number of addresses (after prune): ', chain.addresses.length)
  27. })

原文来自:TokenPocket社区

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/831994
推荐阅读
相关标签
  

闽ICP备14008679号