# 附錄7、比特幣瀏覽器命令
Bitcoin Explorer(bx)是一個命令行工具,提供了各種用于密鑰管理和交易構建的命令。 它是libbitcoin比特幣庫的一部分。
```
Usage: bx COMMAND [--help]
Info: The bx commands are:
address-decode
address-embed
address-encode
address-validate
base16-decode
base16-encode
base58-decode
base58-encode
base58check-decode
base58check-encode
base64-decode
base64-encode
bitcoin160
bitcoin256
btc-to-satoshi
ec-add
ec-add-secrets
ec-multiply
ec-multiply-secrets
ec-new
ec-to-address
ec-to-public
ec-to-wif
fetch-balance
fetch-header
fetch-height
fetch-history
fetch-stealth
fetch-tx
fetch-tx-index
hd-new
hd-private
hd-public
hd-to-address
hd-to-ec
hd-to-public
hd-to-wif
help
input-set
input-sign
input-validate
message-sign
message-validate
mnemonic-decode
mnemonic-encode
ripemd160
satoshi-to-btc
script-decode
script-encode
script-to-address
seed
send-tx
send-tx-node
send-tx-p2p
settings
sha160
sha256
sha512
stealth-decode
stealth-encode
stealth-public
stealth-secret
stealth-shared
tx-decode
tx-encode
uri-decode
uri-encode
validate-tx
watch-address
wif-to-ec
wif-to-public
wrap-decode
wrap-encode
```
更多信息參見[Bitcoin Explorer homepage](#) 和 [Bitcoin Explorer user documentation](#)
bx命令使用示例
我們來看一些使用Bitcoin Explorer命令來測試密鑰和地址的例子。
使用種子命令生成隨機“種子”值,該種子命令使用操作系統的隨機數生成器。 將種子傳遞到ec-new命令以生成新的私鑰。 我們將標準輸出保存到文件private_key中:
```
$ bx seed | bx ec-new > private_key
$ cat private_key
73096ed11ab9f1db6135857958ece7d73ea7c30862145bcc4bbc7649075de474
```
現在,使用ec-to-public命令從私鑰生成公鑰。 我們將private_key文件傳遞到標準輸入并將命令的標準輸出保存到新文件public_key中:
```
$ bx ec-to-public < private_key > public_key
$ cat public_key
02fca46a6006a62dfdd2dbb2149359d0d97a04f430f12a7626dd409256c12be500
```
我們可以使用ec-to-address命令將public_key重新格式化為一個地址。 我們將public_key傳遞給標準輸入:
```
$ bx ec-to-address < public_key
17re1S4Q8ZHyCP8Kw7xQad1Lr6XUzWUnkG
```
以這種方式產生的密鑰產生零型非確定性錢包。 這意味著每個密鑰都是由一個獨立的種子生成的。 Bitcoin Explorer命令也可以根據BIP-32確定性地生成密鑰。 在這種情況下,從種子創建“主”鍵,然后確定性地擴展以產生一個子項的樹,從而產生一個2類確定性錢包。
首先,我們使用seed和hd-new命令生成一個主密鑰,該密鑰將被用作導出密鑰層次結構的基礎:
```
$ bx seed > seed
$ cat seed
eb68ee9f3df6bd4441a9feadec179ff1
$ bx hd-new < seed > master
$ cat master
xprv9s21ZrQH143K2BEhMYpNQoUvAgiEjArAVaZaCTgsaGe6LsAnwubeiTcDzd23mAoyizm9cApe51gNfLMkBqkYoWWMCRwzfuJk8RwF1SVEpAQ
```
我們現在使用hd-private命令在帳戶中生成一個強化的“帳戶”鍵和兩個私鑰序列:
```
$ bx hd-private --hard < master > account
$ cat account
xprv9vkDLt81dTKjwHB8fsVB5QK8cGnzveChzSrtCfvu3aMWvQaThp59ueufuyQ8Qi3qpjk4aKsbmbfxwcgS8PYbgoR2NWHeLyvg4DhoEE68A1n
$ bx hd-private --index 0 < account
xprv9xHfb6w1vX9xgZyPNXVgAhPxSsEkeRcPHEUV5iJcVEsuUEACvR3NRY3fpGhcnBiDbvG4LgndirDsia1e9F3DWPkX7Tp1V1u97HKG1FJwUpU
$ bx hd-private --index 1 < account
xprv9xHfb6w1vX9xjc8XbN4GN86jzNAZ6xHEqYxzbLB4fzHFd6VqCLPGRZFsdjsuMVERadbgDbziCRJru9n6tzEWrASVpEdrZrFidt1RDfn4yA3
```
接下來,我們使用hd-public命令來生成兩個公鑰的相應序列:
```
$ bx hd-public --index 0 < account
xpub6BH1zcTuktiFu43rUZ2gXqLgzu5F3tLEeTQ5t6iE3aQtM2VMTxMcyLN9fYHiGhGpQe9QQYmqL2eYPFJ3vezHz5wzaSW4FiGrseNDR4LKqTy
$ bx hd-public --index 1 < account
xpub6BH1zcTuktiFx6CzhPbGjG3UYQ13WR16CmtbPiagEKpEVtpyjshWyMaMV1cn7nUPUkgQHPVXJVqsrA8xWbGQDhohEcDFTEYMvYzwRD7Juf8
```
公鑰也可以使用hd-to-public命令從其相應的私鑰派生:
```
$ bx hd-private --index 0 < account | bx hd-to-public
xpub6BH1zcTuktiFu43rUZ2gXqLgzu5F3tLEeTQ5t6iE3aQtM2VMTxMcyLN9fYHiGhGpQe9QQYmqL2eYPFJ3vezHz5wzaSW4FiGrseNDR4LKqTy
$ bx hd-private --index 1 < account | bx hd-to-public
xpub6BH1zcTuktiFx6CzhPbGjG3UYQ13WR16CmtbPiagEKpEVtpyjshWyMaMV1cn7nUPUkgQHPVXJVqsrA8xWbGQDhohEcDFTEYMvYzwRD7Juf8
```
我們可以在確定性鏈中產生幾乎無限數量的密鑰,全部來源于單個種子。 這種技術用于許多錢包應用程序中以生成可以使用單個種子值進行備份和恢復的密鑰。 每次創建一個新的密鑰時,這比將其所有隨機生成的密鑰備份在一起更容易。
可以使用助記符編碼命令對種子進行編碼:
```
$ bx hd-mnemonic < seed > words
adore repeat vision worst especially veil inch woman cast recall dwell appreciate
```
然后可以使用mnemonic-decode命令對種子進行解碼:
```
$ bx mnemonic-decode < words
eb68ee9f3df6bd4441a9feadec179ff1
```
助記符編碼可以使種子更容易記錄甚至記住。