附录7、比特币浏览器命令

Bitcoin Explorer(bx)是一个命令行工具,提供了各种用于密钥管理和交易构建的命令。 它是libbitcoin比特币库的一部分。

  1. Usage: bx COMMAND [--help]
  2. Info: The bx commands are:
  3. address-decode
  4. address-embed
  5. address-encode
  6. address-validate
  7. base16-decode
  8. base16-encode
  9. base58-decode
  10. base58-encode
  11. base58check-decode
  12. base58check-encode
  13. base64-decode
  14. base64-encode
  15. bitcoin160
  16. bitcoin256
  17. btc-to-satoshi
  18. ec-add
  19. ec-add-secrets
  20. ec-multiply
  21. ec-multiply-secrets
  22. ec-new
  23. ec-to-address
  24. ec-to-public
  25. ec-to-wif
  26. fetch-balance
  27. fetch-header
  28. fetch-height
  29. fetch-history
  30. fetch-stealth
  31. fetch-tx
  32. fetch-tx-index
  33. hd-new
  34. hd-private
  35. hd-public
  36. hd-to-address
  37. hd-to-ec
  38. hd-to-public
  39. hd-to-wif
  40. help
  41. input-set
  42. input-sign
  43. input-validate
  44. message-sign
  45. message-validate
  46. mnemonic-decode
  47. mnemonic-encode
  48. ripemd160
  49. satoshi-to-btc
  50. script-decode
  51. script-encode
  52. script-to-address
  53. seed
  54. send-tx
  55. send-tx-node
  56. send-tx-p2p
  57. settings
  58. sha160
  59. sha256
  60. sha512
  61. stealth-decode
  62. stealth-encode
  63. stealth-public
  64. stealth-secret
  65. stealth-shared
  66. tx-decode
  67. tx-encode
  68. uri-decode
  69. uri-encode
  70. validate-tx
  71. watch-address
  72. wif-to-ec
  73. wif-to-public
  74. wrap-decode
  75. wrap-encode

更多信息参见Bitcoin Explorer homepageBitcoin Explorer user documentation

bx命令使用示例

我们来看一些使用Bitcoin Explorer命令来测试密钥和地址的例子。

使用种子命令生成随机“种子”值,该种子命令使用操作系统的随机数生成器。 将种子传递到ec-new命令以生成新的私钥。 我们将标准输出保存到文件private_key中:

  1. $ bx seed | bx ec-new > private_key
  2. $ cat private_key
  3. 73096ed11ab9f1db6135857958ece7d73ea7c30862145bcc4bbc7649075de474

现在,使用ec-to-public命令从私钥生成公钥。 我们将private_key文件传递到标准输入并将命令的标准输出保存到新文件public_key中:

  1. $ bx ec-to-public < private_key > public_key
  2. $ cat public_key
  3. 02fca46a6006a62dfdd2dbb2149359d0d97a04f430f12a7626dd409256c12be500

我们可以使用ec-to-address命令将public_key重新格式化为一个地址。 我们将public_key传递给标准输入:

  1. $ bx ec-to-address < public_key
  2. 17re1S4Q8ZHyCP8Kw7xQad1Lr6XUzWUnkG

以这种方式产生的密钥产生零型非确定性钱包。 这意味着每个密钥都是由一个独立的种子生成的。 Bitcoin Explorer命令也可以根据BIP-32确定性地生成密钥。 在这种情况下,从种子创建“主”键,然后确定性地扩展以产生一个子项的树,从而产生一个2类确定性钱包。

首先,我们使用seed和hd-new命令生成一个主密钥,该密钥将被用作导出密钥层次结构的基础:

  1. $ bx seed > seed
  2. $ cat seed
  3. eb68ee9f3df6bd4441a9feadec179ff1
  4. $ bx hd-new < seed > master
  5. $ cat master
  6. xprv9s21ZrQH143K2BEhMYpNQoUvAgiEjArAVaZaCTgsaGe6LsAnwubeiTcDzd23mAoyizm9cApe51gNfLMkBqkYoWWMCRwzfuJk8RwF1SVEpAQ

我们现在使用hd-private命令在帐户中生成一个强化的“帐户”键和两个私钥序列:

  1. $ bx hd-private --hard < master > account
  2. $ cat account
  3. xprv9vkDLt81dTKjwHB8fsVB5QK8cGnzveChzSrtCfvu3aMWvQaThp59ueufuyQ8Qi3qpjk4aKsbmbfxwcgS8PYbgoR2NWHeLyvg4DhoEE68A1n
  4. $ bx hd-private --index 0 < account
  5. xprv9xHfb6w1vX9xgZyPNXVgAhPxSsEkeRcPHEUV5iJcVEsuUEACvR3NRY3fpGhcnBiDbvG4LgndirDsia1e9F3DWPkX7Tp1V1u97HKG1FJwUpU
  6. $ bx hd-private --index 1 < account
  7. xprv9xHfb6w1vX9xjc8XbN4GN86jzNAZ6xHEqYxzbLB4fzHFd6VqCLPGRZFsdjsuMVERadbgDbziCRJru9n6tzEWrASVpEdrZrFidt1RDfn4yA3

接下来,我们使用hd-public命令来生成两个公钥的相应序列:

  1. $ bx hd-public --index 0 < account
  2. xpub6BH1zcTuktiFu43rUZ2gXqLgzu5F3tLEeTQ5t6iE3aQtM2VMTxMcyLN9fYHiGhGpQe9QQYmqL2eYPFJ3vezHz5wzaSW4FiGrseNDR4LKqTy
  3. $ bx hd-public --index 1 < account
  4. xpub6BH1zcTuktiFx6CzhPbGjG3UYQ13WR16CmtbPiagEKpEVtpyjshWyMaMV1cn7nUPUkgQHPVXJVqsrA8xWbGQDhohEcDFTEYMvYzwRD7Juf8

公钥也可以使用hd-to-public命令从其相应的私钥派生:

  1. $ bx hd-private --index 0 < account | bx hd-to-public
  2. xpub6BH1zcTuktiFu43rUZ2gXqLgzu5F3tLEeTQ5t6iE3aQtM2VMTxMcyLN9fYHiGhGpQe9QQYmqL2eYPFJ3vezHz5wzaSW4FiGrseNDR4LKqTy
  3. $ bx hd-private --index 1 < account | bx hd-to-public
  4. xpub6BH1zcTuktiFx6CzhPbGjG3UYQ13WR16CmtbPiagEKpEVtpyjshWyMaMV1cn7nUPUkgQHPVXJVqsrA8xWbGQDhohEcDFTEYMvYzwRD7Juf8

我们可以在确定性链中产生几乎无限数量的密钥,全部来源于单个种子。 这种技术用于许多钱包应用程序中以生成可以使用单个种子值进行备份和恢复的密钥。 每次创建一个新的密钥时,这比将其所有随机生成的密钥备份在一起更容易。

可以使用助记符编码命令对种子进行编码:

  1. $ bx hd-mnemonic < seed > words
  2. adore repeat vision worst especially veil inch woman cast recall dwell appreciate

然后可以使用mnemonic-decode命令对种子进行解码:

  1. $ bx mnemonic-decode < words
  2. eb68ee9f3df6bd4441a9feadec179ff1

助记符编码可以使种子更容易记录甚至记住。