mirror of
https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line.git
synced 2025-06-07 16:06:26 +00:00
Restrict lines to no more than 80 characters
It is cumbersome to comment one line for multiple corrections, so the idea behind this is to ease the task of the reviewer by breaking lines, so he/she can make the comment in the place where the comment target is.
This commit is contained in:
parent
80c6bd55f5
commit
3d71a09ebf
@ -1,6 +1,8 @@
|
|||||||
# Apéndices
|
# Apéndices
|
||||||
|
|
||||||
El cuerpo principal de este curso sugiere una configuración bastante estándar para hacer pruebas con Bitcoin. Lo que sigue en estos apéndices es una mejor explicación de la configuración y otras opciones de alternativas.
|
El cuerpo principal de este curso sugiere una configuración bastante estándar
|
||||||
|
para hacer pruebas con Bitcoin. Lo que sigue en estos apéndices es una mejor
|
||||||
|
explicación de la configuración y otras opciones de alternativas.
|
||||||
|
|
||||||
## Objetivos para esta sección
|
## Objetivos para esta sección
|
||||||
|
|
||||||
|
@ -1,51 +1,87 @@
|
|||||||
# Apéndice I: Entendiendo la Configuración Inicial de Bitcoin
|
# Apéndice I: Entendiendo la Configuración Inicial de Bitcoin
|
||||||
|
|
||||||
[§2.1: Configurando un VPS Bitcoin-Core con Bitcoin-Standup](02_1_Configurando_un_Bitcoin-Core_VPS_con_StackScript.md) explica el proceso de crear un nodo Bitcoin usando [Bitcoin-Standup-Scripts](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts). El siguiente apéndice explica que hacen las principales secciones del programa. Usted puede querer seguir junto con [Linode Standup](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts/blob/master/Scripts/LinodeStandUp.sh) en otra ventana.
|
[§2.1: Configurando un VPS Bitcoin-Core con Bitcoin-Standup](02_1_Configurando_un_Bitcoin-Core_VPS_con_StackScript.md)
|
||||||
|
explica el proceso de crear un nodo Bitcoin usando
|
||||||
|
[Bitcoin-Standup-Scripts](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts).
|
||||||
|
El siguiente apéndice explica que hacen las principales secciones del programa.
|
||||||
|
Usted puede querer seguir junto con
|
||||||
|
[Linode Standup](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts/blob/master/Scripts/LinodeStandUp.sh)
|
||||||
|
en otra ventana.
|
||||||
|
|
||||||
## Paso 1: Nombre del host
|
## Paso 1: Nombre del host
|
||||||
|
|
||||||
Su nombre de host es almacenado en `/etc/hostname` y configurado con el comando `hostname`. También aparece en `/etc/hosts`.
|
Su nombre de host es almacenado en `/etc/hostname` y configurado con el comando
|
||||||
|
`hostname`. También aparece en `/etc/hosts`.
|
||||||
|
|
||||||
## Paso 2: Zona horaria
|
## Paso 2: Zona horaria
|
||||||
|
|
||||||
La zona horaria de su host es almacenada en `/etc/timezone`, luego un archivo apropiado es copiado desde `/usr/share/zoneinfo/` a `/etc/localtime`.
|
La zona horaria de su host es almacenada en `/etc/timezone`, luego un archivo
|
||||||
|
apropiado es copiado desde `/usr/share/zoneinfo/` a `/etc/localtime`.
|
||||||
|
|
||||||
## Paso 3: Actualizando Debian
|
## Paso 3: Actualizando Debian
|
||||||
|
|
||||||
El gestor de paquetes `apt-get` es usado para actualizar su maquina e instalar `gnupg`, el generador de números aleatorios `haveged`, y el simple cortafuegos `ufw`.
|
El gestor de paquetes `apt-get` es usado para actualizar su maquina e instalar
|
||||||
|
`gnupg`, el generador de números aleatorios `haveged`, y el simple cortafuegos
|
||||||
|
`ufw`.
|
||||||
|
|
||||||
Su maquina es configurada automáticamente para estar al día con `echo "unattended-upgrades unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections`.
|
Su maquina es configurada automáticamente para estar al día con `echo
|
||||||
|
"unattended-upgrades unattended-upgrades/enable_auto_updates boolean true" |
|
||||||
|
debconf-set-selections`.
|
||||||
|
|
||||||
## Paso 4: Configurando un usuario
|
## Paso 4: Configurando un usuario
|
||||||
|
|
||||||
Un usuario `standup` es creado, el cual sera usado por sus aplicaciones Bitcoin. Este también tiene permisos `sudo`, permitiéndole tomar acciones privilegiadas con esta cuenta.
|
Un usuario `standup` es creado, el cual sera usado por sus aplicaciones
|
||||||
|
Bitcoin. Este también tiene permisos `sudo`, permitiéndole tomar acciones
|
||||||
|
privilegiadas con esta cuenta.
|
||||||
|
|
||||||
Si usted suministro una llave SSH, esta le permitirá acceder a su cuenta (de otra manera, deberá usar una contraseña creada en la configuración).
|
Si usted suministro una llave SSH, esta le permitirá acceder a su cuenta (de
|
||||||
|
otra manera, deberá usar una contraseña creada en la configuración).
|
||||||
|
|
||||||
Si usted suministro una dirección IP, el acceso `ssh` estará limitado a esa dirección, según `/etc/hosts.allow`.
|
Si usted suministro una dirección IP, el acceso `ssh` estará limitado a esa
|
||||||
|
dirección, según `/etc/hosts.allow`.
|
||||||
|
|
||||||
## Paso 5: Configurando Tor
|
## Paso 5: Configurando Tor
|
||||||
|
|
||||||
Tor es instalado para proveer servicios protegidos (ocultos) para acceder a los comandos RPC de Bitcoin a través de su servidor. Vea [§14.1: Verificando Su Configuración Tor](14_1_Verificando_Su_Configuracion_Tor.md) para mas información acerca de su configuración Tor.
|
Tor es instalado para proveer servicios protegidos (ocultos) para acceder a los
|
||||||
|
comandos RPC de Bitcoin a través de su servidor. Vea
|
||||||
|
[§14.1: Verificando Su Configuración Tor](14_1_Verificando_Su_Configuracion_Tor.md)
|
||||||
|
para mas información acerca de su configuración Tor.
|
||||||
|
|
||||||
Si usted suministro un cliente autorizado para los servicios ocultos, el acceso estará limitado para esa llave, según `/var/lib/tor/standup/authorized_clients`. Si usted no lo hizo, [§14.2](14_2_Cambiando_Sus_Servicios_Bitcoin_Ocultos.md) explica como hacerlo luego.
|
Si usted suministro un cliente autorizado para los servicios ocultos, el acceso
|
||||||
|
estará limitado para esa llave, según
|
||||||
|
`/var/lib/tor/standup/authorized_clients`. Si usted no lo hizo,
|
||||||
|
[§14.2](14_2_Cambiando_Sus_Servicios_Bitcoin_Ocultos.md) explica como hacerlo
|
||||||
|
luego.
|
||||||
|
|
||||||
## Paso 6: Instalando Bitcoin
|
## Paso 6: Instalando Bitcoin
|
||||||
|
|
||||||
Bitcoin es instalado en `~standup/.bitcoin`. Su configuración es almacenada en `~standup/.bitcoin/bitcoin.conf`.
|
Bitcoin es instalado en `~standup/.bitcoin`. Su configuración es almacenada en
|
||||||
|
`~standup/.bitcoin/bitcoin.conf`.
|
||||||
|
|
||||||
Asegúrese que las sumas de comprobación verifiquen según [§2.1](02_1_Configurando_un_Bitcoin-Core_VPS_con_StackScript.md), de otra manera, podría estar expuesto a ataques de la cadena de suministro.
|
Asegúrese que las sumas de comprobación verifiquen según
|
||||||
|
[§2.1](02_1_Configurando_un_Bitcoin-Core_VPS_con_StackScript.md), de otra
|
||||||
|
manera, podría estar expuesto a ataques de la cadena de suministro.
|
||||||
|
|
||||||
## Paso 7: Instalando codificador QR
|
## Paso 7: Instalando codificador QR
|
||||||
|
|
||||||
Para mantener todo compatible con [GordianSystem](https://github.com/BlockchainCommons/GordianSystem), un código QR es creado en `/qrcode.png`. Esto puede leerse desde un cliente QuickConnect, tal como [GordianWallet](https://github.com/BlockchainCommons/GordianWallet-iOS)
|
Para mantener todo compatible con
|
||||||
|
[GordianSystem](https://github.com/BlockchainCommons/GordianSystem), un código
|
||||||
|
QR es creado en `/qrcode.png`. Esto puede leerse desde un cliente QuickConnect,
|
||||||
|
tal como
|
||||||
|
[GordianWallet](https://github.com/BlockchainCommons/GordianWallet-iOS)
|
||||||
|
|
||||||
## Conclusión — Entendiendo la Configuración Inicial de Bitcoin
|
## Conclusión — Entendiendo la Configuración Inicial de Bitcoin
|
||||||
|
|
||||||
Bitcoin Standup usa programas para probar e imitar mucha de las funcionalidades de un [GordianNode](https://github.com/BlockchainCommons/GordianNode-macOS). Este debe proveerlo con un entorno Bitcoin seguro, construido en las bases de Bitcoin Core y Tor para comunicaciones RPC.
|
Bitcoin Standup usa programas para probar e imitar mucha de las funcionalidades
|
||||||
|
de un [GordianNode](https://github.com/BlockchainCommons/GordianNode-macOS).
|
||||||
|
Este debe proveerlo con un entorno Bitcoin seguro, construido en las bases de
|
||||||
|
Bitcoin Core y Tor para comunicaciones RPC.
|
||||||
|
|
||||||
## ¿Que sigue?
|
## ¿Que sigue?
|
||||||
|
|
||||||
Si usted se encontraba en el proceso de crear un nodo Bitcoin para utilizar en este curso, usted debería volver a [§2.1](02_1_Configurando_un_Bitcoin-Core_VPS_con_StackScript.md).
|
Si usted se encontraba en el proceso de crear un nodo Bitcoin para utilizar en
|
||||||
|
este curso, usted debería volver a
|
||||||
|
[§2.1](02_1_Configurando_un_Bitcoin-Core_VPS_con_StackScript.md).
|
||||||
|
|
||||||
Si usted esta leyendo a través de los apéndices, continúe con [Apéndice II: Compilando Bitcoin desde la Fuente](A2_0_Compilando_Bitcoin_desde_la_Fuente.md).
|
Si usted esta leyendo a través de los apéndices, continúe con
|
||||||
|
[Apéndice II: Compilando Bitcoin desde la Fuente](A2_0_Compilando_Bitcoin_desde_la_Fuente.md).
|
||||||
|
@ -1,18 +1,41 @@
|
|||||||
# Apéndice II: Compilando Bitcoin desde la Fuente
|
# Apéndice II: Compilando Bitcoin desde la Fuente
|
||||||
|
|
||||||
Este curso presume que usted usara un programa para crear un entorno Bitcoin, tanto usando Bitcoin Standup para Linode según [§2.1](02_1_Configurando_un_Bitcoin-Core_VPS_con_StackScript.md), o vía alguna otra forma, de acuerdo con [§2.2](02_2_Configurando_Bitcoin_Core_Otros.md). Sin embargo, usted puede preferir compilar Bitcoin a mano.
|
Este curso presume que usted usara un programa para crear un entorno Bitcoin,
|
||||||
|
tanto usando Bitcoin Standup para Linode según
|
||||||
|
[§2.1](02_1_Configurando_un_Bitcoin-Core_VPS_con_StackScript.md), o vía alguna
|
||||||
|
otra forma, de acuerdo con [§2.2](02_2_Configurando_Bitcoin_Core_Otros.md). Sin
|
||||||
|
embargo, usted puede preferir compilar Bitcoin a mano.
|
||||||
|
|
||||||
Esto tiene los siguientes beneficios:
|
Esto tiene los siguientes beneficios:
|
||||||
|
|
||||||
1. Usted siempre estará actualizado con el ultimo lanzamiento. Consideración: Estar siempre actualizado no es necesario para Bitcoin Core, ya que el software siempre es retro compatible, esto quiere decir que una versión de Bitcoin Core sera capaz de participar en la red Bitcoin, a pesar de no contar con las ultimas características.
|
1. Usted siempre estará actualizado con el ultimo lanzamiento. Consideración:
|
||||||
2. Usted no necesitara depender de binarios pre compilados de Bitcoin Core. Esto requiere menos confianza. Aun que los mantenedores de Bitcoin Core hacen un gran trabajo manteniendo la integridad del código, un binario pre compilado esta unos pasos por detrás del código fuente. Cuando usted compila desde el código fuente, el código puede ser inspeccionado antes de la compilación.
|
Estar siempre actualizado no es necesario para Bitcoin Core, ya que el
|
||||||
3. Usted puede personalizar la compilación, haciendo cosas tales como deshabilitar los monederos o la interfaz gráfica de usuario.
|
software siempre es retro compatible, esto quiere decir que una versión de
|
||||||
|
Bitcoin Core sera capaz de participar en la red Bitcoin, a pesar de no
|
||||||
|
contar con las ultimas características.
|
||||||
|
2. Usted no necesitara depender de binarios pre compilados de Bitcoin Core.
|
||||||
|
Esto requiere menos confianza. Aun que los mantenedores de Bitcoin Core
|
||||||
|
hacen un gran trabajo manteniendo la integridad del código, un binario pre
|
||||||
|
compilado esta unos pasos por detrás del código fuente. Cuando usted compila
|
||||||
|
desde el código fuente, el código puede ser inspeccionado antes de la
|
||||||
|
compilación.
|
||||||
|
3. Usted puede personalizar la compilación, haciendo cosas tales como
|
||||||
|
deshabilitar los monederos o la interfaz gráfica de usuario.
|
||||||
|
|
||||||
## Prepare su Entorno
|
## Prepare su Entorno
|
||||||
|
|
||||||
Este tutorial utiliza Debian 10.4.kv0 OS en una arquitectura amd64 (computadoras de 64-bits), pero usted puede usar este tutorial en cualquier sistema basado en Debian (por ej. Ubuntu, Mint, etc.). Para otros sistemas Linux, puede adaptar los siguientes pasos con el gestor de paquetes para ese sistema.
|
Este tutorial utiliza Debian 10.4.kv0 OS en una arquitectura amd64
|
||||||
|
(computadoras de 64-bits), pero usted puede usar este tutorial en cualquier
|
||||||
|
sistema basado en Debian (por ej. Ubuntu, Mint, etc.). Para otros sistemas
|
||||||
|
Linux, puede adaptar los siguientes pasos con el gestor de paquetes para ese
|
||||||
|
sistema.
|
||||||
|
|
||||||
Usted puede tener conocimientos básicos o ninguna familiaridad con la línea de comandos, siempre y cuando tenga entusiasmo. La terminal es su mas poderoso aliado, no algo para ser temido. Usted puede simplemente copiar y pegar los siguientes comandos para compilar bitcoin (un comando con un "$" es un comando de un usuario común y uno con un "#" es un comando de un superusuario o administrador).
|
Usted puede tener conocimientos básicos o ninguna familiaridad con la línea de
|
||||||
|
comandos, siempre y cuando tenga entusiasmo. La terminal es su mas poderoso
|
||||||
|
aliado, no algo para ser temido. Usted puede simplemente copiar y pegar los
|
||||||
|
siguientes comandos para compilar bitcoin (un comando con un "$" es un comando
|
||||||
|
de un usuario común y uno con un "#" es un comando de un superusuario o
|
||||||
|
administrador).
|
||||||
|
|
||||||
Si usted no esta en la lista de superusuario entonces haga lo siguiente:
|
Si usted no esta en la lista de superusuario entonces haga lo siguiente:
|
||||||
|
|
||||||
@ -35,19 +58,25 @@ $ sudo apt-get update
|
|||||||
|
|
||||||
### Paso 2: Instale Git y sus dependencias
|
### Paso 2: Instale Git y sus dependencias
|
||||||
|
|
||||||
Instale `git`, el cual le permitirá descargar el código fuente, y `build-essential`, el cual compila el código:
|
Instale `git`, el cual le permitirá descargar el código fuente, y
|
||||||
|
`build-essential`, el cual compila el código:
|
||||||
```
|
```
|
||||||
$ sudo apt-get install git build-essential -y
|
$ sudo apt-get install git build-essential -y
|
||||||
```
|
```
|
||||||
|
|
||||||
Después, instale las dependencias restantes:
|
Después, instale las dependencias restantes:
|
||||||
```
|
```
|
||||||
$ sudo apt-get install libtool autotools-dev automake pkg-config bsdmainutils python3 libssl-dev libevent-dev libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libminiupnpc-dev libzmq3-dev libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler ccache -y
|
$ sudo apt-get install libtool autotools-dev automake pkg-config bsdmainutils
|
||||||
|
python3 libssl-dev libevent-dev libboost-system-dev libboost-filesystem-dev
|
||||||
|
libboost-chrono-dev libboost-test-dev libboost-thread-dev libminiupnpc-dev
|
||||||
|
libzmq3-dev libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools
|
||||||
|
libprotobuf-dev protobuf-compiler ccache -y
|
||||||
```
|
```
|
||||||
|
|
||||||
### Paso 3: Descargue el código fuente
|
### Paso 3: Descargue el código fuente
|
||||||
|
|
||||||
Una vez que las dependencias están instaladas, descargue el repositorio (repo) conteniendo el código fuente de Bitcoin desde github:
|
Una vez que las dependencias están instaladas, descargue el repositorio (repo)
|
||||||
|
conteniendo el código fuente de Bitcoin desde github:
|
||||||
```
|
```
|
||||||
$ git clone https://github.com/bitcoin/bitcoin.git
|
$ git clone https://github.com/bitcoin/bitcoin.git
|
||||||
```
|
```
|
||||||
@ -64,13 +93,17 @@ Debería ser aproximadamente similar al siguiente contenido:
|
|||||||
1. Ingrese al directorio `contrib`: `$ cd bitcoin/contrib/`
|
1. Ingrese al directorio `contrib`: `$ cd bitcoin/contrib/`
|
||||||
2. Ejecute el siguiente comando: ```$ ./install_db4.sh `pwd` ```
|
2. Ejecute el siguiente comando: ```$ ./install_db4.sh `pwd` ```
|
||||||
|
|
||||||
Una vez que ha sido descargado usted vera el siguiente output. Tome nota del output, usted lo usara para configurar bitcoin mientras compila:
|
Una vez que ha sido descargado usted vera el siguiente output. Tome nota del
|
||||||
|
output, usted lo usara para configurar bitcoin mientras compila:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### Paso 5: Compile Bitcoin Core
|
### Paso 5: Compile Bitcoin Core
|
||||||
|
|
||||||
Es recomendado que usted compile desde una rama etiquetada, la cual es mas estable, a menos que usted quiera probar la vanguardia del desarrollo bitcoin. Ejecute el siguiente comando para obtener una lista de etiquetas, ordenadas de acuerdo a la mas reciente:
|
Es recomendado que usted compile desde una rama etiquetada, la cual es mas
|
||||||
|
estable, a menos que usted quiera probar la vanguardia del desarrollo bitcoin.
|
||||||
|
Ejecute el siguiente comando para obtener una lista de etiquetas, ordenadas de
|
||||||
|
acuerdo a la mas reciente:
|
||||||
```
|
```
|
||||||
$ git tag -n | sort -V
|
$ git tag -n | sort -V
|
||||||
```
|
```
|
||||||
@ -79,7 +112,9 @@ Luego elija una etiqueta tal como `v0.20.0`:
|
|||||||
$ git checkout <TAG>
|
$ git checkout <TAG>
|
||||||
```
|
```
|
||||||
|
|
||||||
Una vez que ha seleccionado una rama etiquetada, ejecute lo siguiente desde dentro del directorio `bitcoin`. El `<CAMINO-A>` debe ser la salida del programa `install_db4.sh`.
|
Una vez que ha seleccionado una rama etiquetada, ejecute lo siguiente desde
|
||||||
|
dentro del directorio `bitcoin`. El `<CAMINO-A>` debe ser la salida del
|
||||||
|
programa `install_db4.sh`.
|
||||||
|
|
||||||
```
|
```
|
||||||
$ ./autogen.sh
|
$ ./autogen.sh
|
||||||
@ -90,14 +125,18 @@ $ make # build bitcoin core
|
|||||||
|
|
||||||
### Paso 6: Pruebe la compilación
|
### Paso 6: Pruebe la compilación
|
||||||
|
|
||||||
Si usted quiere comprobar su compilación (lo cual es una buena idea), ejecute las siguientes pruebas:
|
Si usted quiere comprobar su compilación (lo cual es una buena idea), ejecute
|
||||||
|
las siguientes pruebas:
|
||||||
|
|
||||||
1. `$ make check` correra las pruebas unitarias, los cuales deberan retornar `PASS`.
|
1. `$ make check` correra las pruebas unitarias, los cuales deberan retornar `PASS`.
|
||||||
2. `$ test/functional/test_runner.py --extended` ejecutara las pruebas funcionales extendidas. Omita el indicador `--extended` si usted quiere evitar algunas pruebas. Esto puede tomarle bastante tiempo.
|
2. `$ test/functional/test_runner.py --extended` ejecutara las pruebas
|
||||||
|
funcionales extendidas. Omita el indicador `--extended` si usted quiere
|
||||||
|
evitar algunas pruebas. Esto puede tomarle bastante tiempo.
|
||||||
|
|
||||||
### Paso 7: Ejecute e instale Bitcoin Core
|
### Paso 7: Ejecute e instale Bitcoin Core
|
||||||
|
|
||||||
Ahora que usted ha compilado Bitcoin Core desde la fuente, usted puede empezar a usarlo e instalarlo para una disponibilidad global.
|
Ahora que usted ha compilado Bitcoin Core desde la fuente, usted puede empezar
|
||||||
|
a usarlo e instalarlo para una disponibilidad global.
|
||||||
|
|
||||||
#### Ejecute Bitcoin Core sin instalarlo
|
#### Ejecute Bitcoin Core sin instalarlo
|
||||||
|
|
||||||
@ -110,19 +149,34 @@ Para solo ejecutar Bitcoin Core:
|
|||||||
|
|
||||||
Para instalar:
|
Para instalar:
|
||||||
|
|
||||||
`$ sudo make install` instalara bitcoin core globalmente. Una vez instalado usted puede entonces ejecutar bitcoin desde cualquier lugar en la línea de comandos, al igual que con cualquier otro software: `$ bitcoin-qt` para la interfaz grafica de usuario o `bitcoind` y luego `bitcoin-cli` para la línea de comandos.
|
`$ sudo make install` instalara bitcoin core globalmente. Una vez instalado
|
||||||
|
usted puede entonces ejecutar bitcoin desde cualquier lugar en la línea de
|
||||||
|
comandos, al igual que con cualquier otro software: `$ bitcoin-qt` para la
|
||||||
|
interfaz grafica de usuario o `bitcoind` y luego `bitcoin-cli` para la línea de
|
||||||
|
comandos.
|
||||||
|
|
||||||
## Finalice su sistema
|
## Finalice su sistema
|
||||||
|
|
||||||
Compilando Bitcoin desde la fuente, usted disminuye la necesidad de confianza en su configuracion. Sin embargo, usted esta lejos de la seguridad adicional provista por la configuracion de Bitcoin Standup. Para resolver esto, usted puede querer recorrer el programa [Linode Stackscript](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts/blob/master/Scripts/LinodeStandUp.sh) completo y ejecutar paso a paso todos los comandos. El unico lugar donde necesita ser cuidadoso es en el Paso 6, el cual instala Bitcoin. Omita solo hasta donde verifica sus binarios, y continue desde ahi.
|
Compilando Bitcoin desde la fuente, usted disminuye la necesidad de confianza
|
||||||
|
en su configuracion. Sin embargo, usted esta lejos de la seguridad adicional
|
||||||
|
provista por la configuracion de Bitcoin Standup. Para resolver esto, usted
|
||||||
|
puede querer recorrer el programa
|
||||||
|
[Linode Stackscript](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts/blob/master/Scripts/LinodeStandUp.sh)
|
||||||
|
completo y ejecutar paso a paso todos los comandos. El unico lugar donde
|
||||||
|
necesita ser cuidadoso es en el Paso 6, el cual instala Bitcoin. Omita solo
|
||||||
|
hasta donde verifica sus binarios, y continue desde ahi.
|
||||||
|
|
||||||
## Resumen: Compilando Bitcoin desde la Fuente
|
## Resumen: Compilando Bitcoin desde la Fuente
|
||||||
|
|
||||||
Si usted quiere la seguridad incrementada de instalar Bitcoin desde la fuente, usted deberia tenerla ahora. Con un poco de suerte, usted tambien habra recorrido el Linode Stackscript para configurar un servidor mas seguro.
|
Si usted quiere la seguridad incrementada de instalar Bitcoin desde la fuente,
|
||||||
|
usted deberia tenerla ahora. Con un poco de suerte, usted tambien habra
|
||||||
|
recorrido el Linode Stackscript para configurar un servidor mas seguro.
|
||||||
|
|
||||||
## ¿Que sigue?
|
## ¿Que sigue?
|
||||||
|
|
||||||
Si usted estaba en el proceso de crear un nodo Bitcoin para usar en este curso, usted deberia continuar con [Capitulo 3: Entendiendo Su Configuración Bitcoin](03_0_Entendiendo_Su_Configuracion_Bitcoin.md).
|
Si usted estaba en el proceso de crear un nodo Bitcoin para usar en este curso, usted deberia continuar con
|
||||||
|
[Capitulo 3: Entendiendo Su Configuración Bitcoin](03_0_Entendiendo_Su_Configuracion_Bitcoin.md).
|
||||||
|
|
||||||
Si usted esta leyendo a través de los apéndices, continúe con [Apéndice III: Usando Bitcoin Regtest](A3_0_Usando_Bitcoin_Regtest.md).
|
Si usted esta leyendo a través de los apéndices, continúe con
|
||||||
|
[Apéndice III: Usando Bitcoin Regtest](A3_0_Usando_Bitcoin_Regtest.md).
|
||||||
|
|
||||||
|
@ -1,46 +1,74 @@
|
|||||||
# Apéndice III: Usando Bitcoin Regtest
|
# Apéndice III: Usando Bitcoin Regtest
|
||||||
|
|
||||||
> :information_source: **NOTA:** Esta sección ha sido recientemente agregada al curso y es un borrador inicial que puede estar esperando aun su revisión. Precaución lector.
|
> :information_source: **NOTA:** Esta sección ha sido recientemente agregada al
|
||||||
|
> curso y es un borrador inicial que puede estar esperando aun su revisión.
|
||||||
|
> Precaución lector.
|
||||||
|
|
||||||
La mayoría de este curso presume que usted usara o bien Mainnet o bien Testnet. Sin embargo, esas no son las únicas opciones. Mientras desarrolla aplicaciones Bitcoin, usted puede querer mantener sus aplicaciones aisladas de la cadenas de bloques publicas. Para hacerlo, puede crear una cadena de bloques desde cero usando Regtest, la cual tiene una gran ventaja sobre Testnet: usted elige cuando crear nuevos bloques, por lo que tiene un control completo sobre el entorno.
|
La mayoría de este curso presume que usted usara o bien Mainnet o bien Testnet.
|
||||||
|
Sin embargo, esas no son las únicas opciones. Mientras desarrolla aplicaciones
|
||||||
|
Bitcoin, usted puede querer mantener sus aplicaciones aisladas de la cadenas de
|
||||||
|
bloques publicas. Para hacerlo, puede crear una cadena de bloques desde cero
|
||||||
|
usando Regtest, la cual tiene una gran ventaja sobre Testnet: usted elige
|
||||||
|
cuando crear nuevos bloques, por lo que tiene un control completo sobre el
|
||||||
|
entorno.
|
||||||
|
|
||||||
## Inicie Bitcoind en Regtest
|
## Inicie Bitcoind en Regtest
|
||||||
|
|
||||||
Luego de [configurar su VPS Bitcoin-Core](02_0_Configurando_un_Bitcoin-Core_VPS.md) o [compilarlo de la fuente](A2_0_Compilando_Bitcoin_desde_la_Fuente.md), usted esta ahora en condiciones de usar regtest. Para iniciar su `bitcoind` en regtest y crear una cadena de bloques privada, use el siguiente comando:
|
Luego de
|
||||||
|
[configurar su VPS Bitcoin-Core](02_0_Configurando_un_Bitcoin-Core_VPS.md) o
|
||||||
|
[compilarlo de la fuente](A2_0_Compilando_Bitcoin_desde_la_Fuente.md),
|
||||||
|
usted esta ahora en condiciones de usar regtest. Para iniciar su `bitcoind` en
|
||||||
|
regtest y crear una cadena de bloques privada, use el siguiente comando:
|
||||||
```
|
```
|
||||||
$ bitcoind -regtest -daemon -fallbackfee=1.0 -maxtxfee=1.1
|
$ bitcoind -regtest -daemon -fallbackfee=1.0 -maxtxfee=1.1
|
||||||
```
|
```
|
||||||
|
|
||||||
Los argumentos `-fallbackfee=1.0 -maxtxfee=1.1` prevendrán el error `Fee estimation failed. Fallbackfee is disabled`.
|
Los argumentos `-fallbackfee=1.0 -maxtxfee=1.1` prevendrán el error
|
||||||
|
`Fee estimation failed. Fallbackfee is disabled`.
|
||||||
|
|
||||||
En regtest, usualmente no hay suficientes transacciones por lo que bitcoind no puede darle un estimado confiable y, sin eso, el monedero no creara transacciones a menos que se configure explícitamente la tarifa.
|
En regtest, usualmente no hay suficientes transacciones por lo que bitcoind no
|
||||||
|
puede darle un estimado confiable y, sin eso, el monedero no creara
|
||||||
|
transacciones a menos que se configure explícitamente la tarifa.
|
||||||
|
|
||||||
### Reconfigure la cadena de bloques Regtest
|
### Reconfigure la cadena de bloques Regtest
|
||||||
|
|
||||||
Si usted lo desea, puede mas tarde reiniciar su Regtest con una nueva cadena de bloques.
|
Si usted lo desea, puede mas tarde reiniciar su Regtest con una nueva cadena de
|
||||||
|
bloques.
|
||||||
|
|
||||||
Los monederos Regtest y el estado de la cadena de bloques (estado de la cadena) son guardados en el subdirectorio regtest del directorio de configuración de Bitcoin:
|
Los monederos Regtest y el estado de la cadena de bloques (estado de la cadena)
|
||||||
|
son guardados en el subdirectorio regtest del directorio de configuración de
|
||||||
|
Bitcoin:
|
||||||
```
|
```
|
||||||
user@mybtc:~/.bitcoin# ls
|
user@mybtc:~/.bitcoin# ls
|
||||||
bitcoin.conf regtest testnet3
|
bitcoin.conf regtest testnet3
|
||||||
```
|
```
|
||||||
|
|
||||||
Para comenzar una nueva cadena de bloques usando regtest, todo lo que tiene que hacer es eliminar el directorio `regtest` y reiniciar el Bitcoind.
|
Para comenzar una nueva cadena de bloques usando regtest, todo lo que tiene que
|
||||||
|
hacer es eliminar el directorio `regtest` y reiniciar el Bitcoind.
|
||||||
```
|
```
|
||||||
$ rm -rf regtest
|
$ rm -rf regtest
|
||||||
```
|
```
|
||||||
## Genere un monedero Regtest
|
## Genere un monedero Regtest
|
||||||
|
|
||||||
Antes de generar bloques, es necesario que cargue un monedero usando `loadwallet` o cree uno nuevo con `createwallet`. Desde la versión 0.21, Bitcoin Core no crea nuevos monederos en el inicio.
|
Antes de generar bloques, es necesario que cargue un monedero usando
|
||||||
|
`loadwallet` o cree uno nuevo con `createwallet`. Desde la versión 0.21,
|
||||||
|
Bitcoin Core no crea nuevos monederos en el inicio.
|
||||||
|
|
||||||
El argumento `descriptors=true` crea un monedero con descriptores de forma nativa, que almacena la información de scriptPubKey usando descriptores de salida. Si este es `falso`, creara un monedero de acuerdo al estándar previo, donde las llaves son usadas para generar implícitamente scriptPubKeys y direcciones.
|
El argumento `descriptors=true` crea un monedero con descriptores de forma
|
||||||
|
nativa, que almacena la información de scriptPubKey usando descriptores de
|
||||||
|
salida. Si este es `falso`, creara un monedero de acuerdo al estándar previo,
|
||||||
|
donde las llaves son usadas para generar implícitamente scriptPubKeys y
|
||||||
|
direcciones.
|
||||||
```
|
```
|
||||||
$ bitcoin-cli -regtest -named createwallet wallet_name="regtest_desc_wallet" descriptors=true
|
$ bitcoin-cli -regtest -named createwallet wallet_name="regtest_desc_wallet" descriptors=true
|
||||||
```
|
```
|
||||||
|
|
||||||
## Genere Bloques
|
## Genere Bloques
|
||||||
|
|
||||||
Usted puede generar (minar) nuevos bloques en la cadena regtest usando el método RPC `generate` con un argumento para indicar la cantidad de bloques a generar. Solo tiene sentido usar este método en regtest; debido a la alta dificultad es poco probable que genere nuevos bloques en mainnet o testnet:
|
Usted puede generar (minar) nuevos bloques en la cadena regtest usando el
|
||||||
|
método RPC `generate` con un argumento para indicar la cantidad de bloques a
|
||||||
|
generar. Solo tiene sentido usar este método en regtest; debido a la alta
|
||||||
|
dificultad es poco probable que genere nuevos bloques en mainnet o testnet:
|
||||||
```
|
```
|
||||||
$ bitcoin-cli -regtest -generate 101
|
$ bitcoin-cli -regtest -generate 101
|
||||||
[
|
[
|
||||||
@ -52,17 +80,33 @@ $ bitcoin-cli -regtest -generate 101
|
|||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
> :warning: ADVERTENCIA. Notar que usted debe agregar el indicador `-regtest` luego de cada comando `bitcoin-cli` para acceder correctamente a su entorno Regtest. Si lo prefiere, puede incluir un comando `regtest=1` en su archivo `~/.bitcoin/bitcoin.conf`.
|
> :warning: ADVERTENCIA. Notar que usted debe agregar el indicador `-regtest`
|
||||||
|
> luego de cada comando `bitcoin-cli` para acceder correctamente a su entorno
|
||||||
|
> Regtest. Si lo prefiere, puede incluir un comando `regtest=1` en su archivo
|
||||||
|
> `~/.bitcoin/bitcoin.conf`.
|
||||||
|
|
||||||
Debido a que un bloque debe tener 100 confirmaciones antes de que su recompensa pueda ser gastada, usted generara 101 bloques, permitiendo el acceso a la transacción 'coinbase' del bloque #1. Dado que esta es una nueva cadena de bloques usando las reglas por defecto de Bitcoin, el primer bloque recibirá una recompensa de 50 bitcoins. Al contrario que mainnet, en modo regtest, solo los primeros 150 bloques pagan una recompensa de 50 bitcoins. La recompensa se divide luego de 150 bloques, por lo que paga 25, 12.5, etc.
|
Debido a que un bloque debe tener 100 confirmaciones antes de que su recompensa
|
||||||
|
pueda ser gastada, usted generara 101 bloques, permitiendo el acceso a la
|
||||||
|
transacción 'coinbase' del bloque #1. Dado que esta es una nueva cadena de
|
||||||
|
bloques usando las reglas por defecto de Bitcoin, el primer bloque recibirá una
|
||||||
|
recompensa de 50 bitcoins. Al contrario que mainnet, en modo regtest, solo los
|
||||||
|
primeros 150 bloques pagan una recompensa de 50 bitcoins. La recompensa se
|
||||||
|
divide luego de 150 bloques, por lo que paga 25, 12.5, etc.
|
||||||
|
|
||||||
La salida es el hash de bloque de cada bloque generado.
|
La salida es el hash de bloque de cada bloque generado.
|
||||||
|
|
||||||
> :book: ***¿Que es una transacción 'coinbase'?*** Una transacción 'coinbase' es la transacción sin entradas creada cuando un nuevo bloque es minado y otorgado al minero. Es la manera en que nuevos bitcoins entran al ecosistema. El valor de una transacción 'coinbase' decae con el tiempo. En la mainnet, esta se divide cada 210,000 transacciones y termina completamente con el bloque 6.929.999, el cual esta estipulado que ocurra en el siglo 22. A Mayo del 2020, la recompensa 'coinbase' es de 6.25 BTC.
|
> :book: ***¿Que es una transacción 'coinbase'?*** Una transacción 'coinbase'
|
||||||
|
> es la transacción sin entradas creada cuando un nuevo bloque es minado y
|
||||||
|
> otorgado al minero. Es la manera en que nuevos bitcoins entran al ecosistema.
|
||||||
|
> El valor de una transacción 'coinbase' decae con el tiempo. En la mainnet,
|
||||||
|
> esta se divide cada 210,000 transacciones y termina completamente con el
|
||||||
|
> bloque 6.929.999, el cual esta estipulado que ocurra en el siglo 22. A Mayo
|
||||||
|
> del 2020, la recompensa 'coinbase' es de 6.25 BTC.
|
||||||
|
|
||||||
### Verifique su balance
|
### Verifique su balance
|
||||||
|
|
||||||
Luego de minar bloques y obtener recompensas, usted puede verificar el balance de su monedero:
|
Luego de minar bloques y obtener recompensas, usted puede verificar el balance
|
||||||
|
de su monedero:
|
||||||
```
|
```
|
||||||
$ bitcoin-cli -regtest getbalance
|
$ bitcoin-cli -regtest getbalance
|
||||||
50.00000000
|
50.00000000
|
||||||
@ -70,17 +114,24 @@ $ bitcoin-cli -regtest getbalance
|
|||||||
|
|
||||||
### Use la Regtest
|
### Use la Regtest
|
||||||
|
|
||||||
Ahora usted debería ser capaz de usar este balance para cualquier tipo de interacción en su cadena de bloques privada, tales como enviar Bitcoins en transacciones de acuerdo a el [Capitulo 4](04_0_Enviando_Transacciones_Bitcoin.md).
|
Ahora usted debería ser capaz de usar este balance para cualquier tipo de
|
||||||
|
interacción en su cadena de bloques privada, tales como enviar Bitcoins en
|
||||||
|
transacciones de acuerdo a el
|
||||||
|
[Capitulo 4](04_0_Enviando_Transacciones_Bitcoin.md).
|
||||||
|
|
||||||
Es importante notar que para que se complete cualquier transacción, usted deberá generar (mine) nuevos bloques, así las transacciones pueden ser incluidas.
|
Es importante notar que para que se complete cualquier transacción, usted
|
||||||
|
deberá generar (mine) nuevos bloques, así las transacciones pueden ser
|
||||||
|
incluidas.
|
||||||
|
|
||||||
Por ejemplo, para crear una transacción e incluirla en un bloque, usted debe primero usar el comando `sendtoaddress`:
|
Por ejemplo, para crear una transacción e incluirla en un bloque, usted debe
|
||||||
|
primero usar el comando `sendtoaddress`:
|
||||||
```
|
```
|
||||||
$ bitcoin-cli -regtest sendtoaddress [address] 15.1
|
$ bitcoin-cli -regtest sendtoaddress [address] 15.1
|
||||||
e834a4ac6ef754164c8e3f0be4f34531b74b768199ffb244ab9f6cb1bbc7465a
|
e834a4ac6ef754164c8e3f0be4f34531b74b768199ffb244ab9f6cb1bbc7465a
|
||||||
```
|
```
|
||||||
|
|
||||||
La salida es el hash de la transacción incluida en la cadena de bloques. Usted puede verificar los detalles usando el comando `gettransaction`:
|
La salida es el hash de la transacción incluida en la cadena de bloques. Usted
|
||||||
|
puede verificar los detalles usando el comando `gettransaction`:
|
||||||
```
|
```
|
||||||
$ bitcoin-cli -regtest gettransaction e834a4ac6ef754164c8e3f0be4f34531b74b768199ffb244ab9f6cb1bbc7465a
|
$ bitcoin-cli -regtest gettransaction e834a4ac6ef754164c8e3f0be4f34531b74b768199ffb244ab9f6cb1bbc7465a
|
||||||
{
|
{
|
||||||
@ -120,7 +171,9 @@ $ bitcoin-cli -regtest gettransaction e834a4ac6ef754164c8e3f0be4f34531b74b768199
|
|||||||
|
|
||||||
Sin embargo, usted debe ahora finalizarla creando bloques en la cadena de bloques.
|
Sin embargo, usted debe ahora finalizarla creando bloques en la cadena de bloques.
|
||||||
|
|
||||||
La mayoría de las aplicaciones requieren seis confirmaciones de bloques para considerar irreversible una transacción. Si ese es su caso, usted puede minar seis bloques adicionales dentro de su cadena regtest:
|
La mayoría de las aplicaciones requieren seis confirmaciones de bloques para
|
||||||
|
considerar irreversible una transacción. Si ese es su caso, usted puede minar
|
||||||
|
seis bloques adicionales dentro de su cadena regtest:
|
||||||
```
|
```
|
||||||
$ bitcoin-cli -regtest -generate 6
|
$ bitcoin-cli -regtest -generate 6
|
||||||
[
|
[
|
||||||
@ -135,16 +188,24 @@ $ bitcoin-cli -regtest -generate 6
|
|||||||
|
|
||||||
## Pruebe con NodeJS
|
## Pruebe con NodeJS
|
||||||
|
|
||||||
Cuando usted esta en regtest, es capaz de simular casos de borde y ataques que podrían ocurrir en el mundo real, tales como gastos dobles.
|
Cuando usted esta en regtest, es capaz de simular casos de borde y ataques que
|
||||||
|
podrían ocurrir en el mundo real, tales como gastos dobles.
|
||||||
|
|
||||||
Como se debatió en algún otro lado de este curso, usar librerías de software podría darle acceso a algunos comandos RPC mas sofisticados. En este caso, [bitcointest by dgarage](https://github.com/dgarage/bitcointest) para NodeJS, puede ser usada para simular una transacción de un monedero a otro; usted puede comprobar su [guia](https://www.npmjs.com/package/bitcointest) para simulaciones de ataques mas específicos, tales como gastos dobles.
|
Como se debatió en algún otro lado de este curso, usar librerías de software
|
||||||
|
podría darle acceso a algunos comandos RPC mas sofisticados. En este caso,
|
||||||
|
[bitcointest by dgarage](https://github.com/dgarage/bitcointest) para NodeJS,
|
||||||
|
puede ser usada para simular una transacción de un monedero a otro; usted puede
|
||||||
|
comprobar su [guia](https://www.npmjs.com/package/bitcointest) para
|
||||||
|
simulaciones de ataques mas específicos, tales como gastos dobles.
|
||||||
|
|
||||||
Vea [§18.3](18_3_Accediendo_a_Bitcoind_con_NodeJS.md) para la información mas actualizado sobre instalar NodeJS, luego agregue `bitcointest`:
|
Vea [§18.3](18_3_Accediendo_a_Bitcoind_con_NodeJS.md) para la información mas
|
||||||
|
actualizado sobre instalar NodeJS, luego agregue `bitcointest`:
|
||||||
```
|
```
|
||||||
$ npm install -g bitcointest
|
$ npm install -g bitcointest
|
||||||
```
|
```
|
||||||
|
|
||||||
Después de instalar `bitcointest`, usted puede crear un archivo `test.js` con el siguiente contenido:
|
Después de instalar `bitcointest`, usted puede crear un archivo `test.js` con
|
||||||
|
el siguiente contenido:
|
||||||
```javascript
|
```javascript
|
||||||
file: test.js
|
file: test.js
|
||||||
|
|
||||||
@ -196,12 +257,26 @@ n2.after (before) = 100
|
|||||||
|
|
||||||
## Resumen: Usando Bitcoin Regtest
|
## Resumen: Usando Bitcoin Regtest
|
||||||
|
|
||||||
Un entorno regtest para Bitcoin funciona tal como cualquier entorno testnet, excepto por el hecho de que usted tiene la capacidad de generar bloques fácil y rápidamente.
|
Un entorno regtest para Bitcoin funciona tal como cualquier entorno testnet,
|
||||||
|
excepto por el hecho de que usted tiene la capacidad de generar bloques fácil y
|
||||||
|
rápidamente.
|
||||||
|
|
||||||
> :fire: ***¿Cual es el poder de regtest?*** El mayor poder de regtest es que usted puede rápidamente minar bloques, permitiéndole acelerar la cadena de bloques, para testear transacciones, timelocks y otras características para las que de otra manera debería sentarse y esperar. Sin embargo, el otro poder es que usted puede correrlo de forma privada, sin conectarse a una cadena de bloques publica, permitiéndole a usted probar sus propias ideas antes de liberarlas dentro del mundo.
|
> :fire: ***¿Cual es el poder de regtest?*** El mayor poder de regtest es que
|
||||||
|
> usted puede rápidamente minar bloques, permitiéndole acelerar la cadena de
|
||||||
|
> bloques, para testear transacciones, timelocks y otras características para
|
||||||
|
> las que de otra manera debería sentarse y esperar. Sin embargo, el otro poder
|
||||||
|
> es que usted puede correrlo de forma privada, sin conectarse a una cadena de
|
||||||
|
> bloques publica, permitiéndole a usted probar sus propias ideas antes de
|
||||||
|
> liberarlas dentro del mundo.
|
||||||
|
|
||||||
## ¿Que sigue?
|
## ¿Que sigue?
|
||||||
|
|
||||||
Si usted visito este Apéndice mientras trabajaba en otra parte del curso, usted debería regresar allí.
|
Si usted visito este Apéndice mientras trabajaba en otra parte del curso, usted
|
||||||
|
debería regresar allí.
|
||||||
|
|
||||||
Pero, de otra manera, usted ha alcanzado el final! Otras personas que han trabajado su camino a través de este curso se han vuelto desarrolladores e ingenieros Bitcoin profesionales, incluyendo algunos de quienes han contribuido a [Blockchain Commons](https://www.blockchaincommons.com/). Nosotros los incentivamos a hacer lo mismo! Solo salga allí afuera y comience a trabajar en algo de su propio código Bitcoin con lo que ha aprendido.
|
Pero, de otra manera, usted ha alcanzado el final! Otras personas que han
|
||||||
|
trabajado su camino a través de este curso se han vuelto desarrolladores e
|
||||||
|
ingenieros Bitcoin profesionales, incluyendo algunos de quienes han contribuido
|
||||||
|
a [Blockchain Commons](https://www.blockchaincommons.com/). Nosotros los
|
||||||
|
incentivamos a hacer lo mismo! Solo salga allí afuera y comience a trabajar en
|
||||||
|
algo de su propio código Bitcoin con lo que ha aprendido.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user