Mastering Bitcoin
Apéndice A: Comandos del Explorador de Bitcoin (bx)
Página 93 de 98
Apéndice A: Comandos del Explorador de Bitcoin (bx)
Uso: bx COMANDO [--help]
Info: Los comandos bx son:
descodificar-dirección
incrustar-dirección
codificar-dirección
validar-dirección
descodificar-base16
codificar-base16
descodificar-base58
codificar-base58
descodificar-base58check
codificar-base58check
descodificar-base64
codificar-base64
bitcoin160
bitcoin256
btc-a-satoshi
ec-añadir
ec-añadir-secretos
ec-multiplicar
ec-multiplicar-secretos
ec-nuevo
ec-a-dirección
ec-a-público
ec-a-
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
ayuda
establecer-entrada
firma-entrada
validar-entrada
firma-mensaje
validar-mensaje
descodificar-mnemonic
codificar-mnemonic
ripemd160
satoshi-a-btc
descodificar-script
codificar-script
script-a-dirección
semilla
send-tx
send-tx-node
send-tx-p2p
ajustes
sha160
sha256
sha512
descodificar-stealth
codificar-stealth
pública-stealth
secreta-stealth
compartida-stealth
descodificar-tx
codificar-tx
descodificar-uri
codificar-uri
validar-tx
ver-dirección
wif-to-ec
wif-to-public
descodificar-wrap
codificar-wrap
Para más información, ver la página principal del Explorador Bitcoin y la documentación de usuario del Explorador de Bitcoin.
Ejemplos de uso de los comandos bx.
Veamos algunos ejemplos de utilización de comandos del Explorador de Bitcoin para experimentar con las claves y las direcciones:
Generar un valor «semilla» aleatorio usando el comando seed, el cual usa el generador de números aleatorios del sistema operativo. Pasa la semilla al comando ec-new para generar una nueva clave privada. Guardamos el output estándar en el archivo private_key:
$ bx seed | bx ec-new > private_key
$ cat private_key
73096ed11ab9f1db6135857958ece7d73ea7c30862145bcc4bbc7649075de474
Ahora, genera la clave pública a partir de esa clave privada usando el comando ec-to-public. Pasamos el archivo private_key a la entrada estándar y guardamos la salida estándar del comando en un nuevo archivo public_key:
$ bx ec-to-public < clave_privada > public_key
$ cat public_key
02fca46a6006a62dfdd2dbb2149359d0d97a04f430f12a7626dd409256c12be500
Podemos reformatear la clave_privada como una dirección usando el comando ec-to-address. Pasamos public_key a la entrada estándar:
$ bx ec-to-address < public_key
17re1S4Q8ZHyCP8Kw7xQad1Lr6XUzWUnkG
Las claves generadas de esta manera produce una cartera de tipo 0 no determinística. Eso significa que cada clave es generada a partir de una semilla independiente. Los comandos de Bitcoin Explorer también pueden generar claves determinísticamente, de acuerdo a BIP0032. En este caso, una clave «maestra» es creada a partir de una semilla y luego extendida determinísticamente para producir un árbol de subclaves, resultando en una cartera de tipo 2 determinística.
Primero, usamos los comandos seed y hd-new para generar una clave maestra que usaremos como la base para derivar una jerarquía de claves.
$ bx seed > seed
$ cat seed
eb68ee9f3df6bd4441a9feadec179ff1
$ bx hd-new < semilla > master
$ cat master
xprv9s21ZrQH143K2BEhMYpNQoUvAgiEjArAVaZaCTgsaGe6LsAnwubeiTcDzd23mAoyizm9cApe51gNfLMkBqkYo WWMCRwzfuJk8RwF1SVEpAQ
Ahora usamos el comando hd-private para generar una clave de «cuenta» endurecida y una secuencia de dos claves privadas dentro de la cuenta.
$ bx hd-private --hard < maestra > account
$ cat account
xprv9vkDLt81dTKjwHB8fsVB5QK8cGnzveChzSrtCfvu3aMWvQaThp59ueufuyQ8Qi3qpjk4aKsbmbfxwcgS8PYbg oR2NWHeLyvg4DhoEE68A1n
$ bx hd-private --index 0 < account
xprv9xHfb6w1vX9xgZyPNXVgAhPxSsEkeRcPHEUV5iJcVEsuUEACvR3NRY3fpGhcnBiDbvG4LgndirDsia1e9F3DW
PkX7Tp1V1u97HKG1FJwUpU
$ bx hd-private --index 1 < account
xprv9xHfb6w1vX9xjc8XbN4GN86jzNAZ6xHEqYxzbLB4fzHFd6VqCLPGRZFsdjsuMVERadbgDbziCRJru9n6tzEWr ASVpEdrZrFidt1RDfn4yA3
A continuación usamos el comando hd-public para generar la correspondiente secuencia de dos claves públicas.
$ bx hd-public --index 0 < account
xpub6BH1zcTuktiFu43rUZ2gXqLgzu5F3tLEeTQ5t6iE3aQtM2VMTxMcyLN9fYHiGhGpQe9QQYmqL2eYPFJ3vezHz 5wzaSW4FiGrseNDR4LKqTy
$ bx hd-public --index 1 < account
xpub6BH1zcTuktiFx6CzhPbGjG3UYQ13WR16CmtbPiagEKpEVtpyjshWyMaMV1cn7nUPUkgQHPVXJVqsrA8xWbGQD
hohEcDFTEYMvYzwRD7Juf8
Las claves públicas también pueden ser derivadas a partir de sus correspondientes claves privadas usando el comando hd-to-public.
$ bx hd-private --index 0 < account | bx hd-to-public
xpub6BH1zcTuktiFu43rUZ2gXqLgzu5F3tLEeTQ5t6iE3aQtM2VMTxMcyLN9fYHiGhGpQe9QQYmqL2eYPFJ3vezHz 5wzaSW4FiGrseNDR4LKqTy
$ bx hd-private --index 1 < account | bx hd-to-public
xpub6BH1zcTuktiFx6CzhPbGjG3UYQ13WR16CmtbPiagEKpEVtpyjshWyMaMV1cn7nUPUkgQHPVXJVqsrA8xWbGQD
hohEcDFTEYMvYzwRD7Juf8
Podemos generar un número prácticamente ilimitado de claves en una cadena determinística, todas derivadas de una misma semilla. Esta técnica es usada en muchas aplicaciones de cartera para generar claves a las que es posible hacer copias de respaldo con un único valor semilla. Esto es más fácil que tener que guardar copias de la cartera con todas sus claves generadas aleatoriamente cada vez que una nueva clave es creada.
La semilla puede ser codificada usando el comando mnemonic-encode.
$ bx hd-mnemonic < semilla > words
adore repeat vision worst especially veil inch woman cast recall dwell appreciate
La semilla puede luego ser decodificada usando el comando mnemonic-decode.
$ bx mnemonic-decode < words
eb68ee9f3df6bd4441a9feadec179ff1
La codificación mnemónica puede hacer que una semilla sea más fácil de registrar y hasta recordar.