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:
Cesar Alvarez Vallero 2021-08-04 12:05:00 -03:00
parent 80c6bd55f5
commit 3d71a09ebf
No known key found for this signature in database
GPG Key ID: 8DEF166DA59D7898
4 changed files with 232 additions and 65 deletions

View File

@ -1,6 +1,8 @@
# 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

View File

@ -1,51 +1,87 @@
# 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
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
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
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
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
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
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
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
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?
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).

View File

@ -1,18 +1,41 @@
# 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:
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.
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.
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.
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
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:
@ -35,19 +58,25 @@ $ sudo apt-get update
### 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
```
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
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
```
@ -64,13 +93,17 @@ Debería ser aproximadamente similar al siguiente contenido:
1. Ingrese al directorio `contrib`: `$ cd bitcoin/contrib/`
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:
![db4](./public/LBftCLI-compiling_bitcoin-db4.png)
### 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
```
@ -79,7 +112,9 @@ Luego elija una etiqueta tal como `v0.20.0`:
$ 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
@ -90,14 +125,18 @@ $ make # build bitcoin core
### 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`.
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
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
@ -110,19 +149,34 @@ Para solo ejecutar Bitcoin Core:
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
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
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?
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).

View File

@ -1,46 +1,74 @@
# 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
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
```
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
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
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
```
## 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
```
## 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
[
@ -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.
> :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
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
50.00000000
@ -70,17 +114,24 @@ $ bitcoin-cli -regtest getbalance
### 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
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
{
@ -120,7 +171,9 @@ $ bitcoin-cli -regtest gettransaction e834a4ac6ef754164c8e3f0be4f34531b74b768199
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
[
@ -135,16 +188,24 @@ $ bitcoin-cli -regtest -generate 6
## 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
```
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
file: test.js
@ -196,12 +257,26 @@ n2.after (before) = 100
## 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?
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.