Merge pull request #384 from csralvall/spanish-appendices

Create spanish translation of appendices
This commit is contained in:
Shannon Appelcline 2021-09-08 08:02:13 -10:00 committed by GitHub
commit 44c84f129d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 574 additions and 0 deletions

24
es/A0_Apendices.md Normal file
View File

@ -0,0 +1,24 @@
# 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.
## Objetivos para esta sección
Después de trabajar en este capítulo, un desarrollador podrá:
* Decidir entre múltiples métodos para crear una cadena de bloques Bitcoin.
Los objetivos de apoyo incluyen la capacidad de:
* Entender la configuración de inicio de Bitcoin
* Realizar una compilación de Bitcoin a mano
* Entender el poder de Regtest
* Utilizar el entorno Regtest
## Tabla de Contenido
* [Apéndice Uno: Entendiendo la Configuración Inicial de Bitcoin](A1_0_Entendiendo_la_Configuracion_Inicial_de_Bitcoin.md)
* [Apéndice Dos: Compilando Bitcoin desde la Fuente](A2_0_Compilando_Bitcoin_desde_la_Fuente.md)
* [Apéndice Tres: Usando Bitcoin Regtest](A3_0_Usando_Bitcoin_Regtest.md)

View File

@ -0,0 +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.
## 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`.
## 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`.
## 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 cortafuegos simple
`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`.
## 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.
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`.
## 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.
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`.
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)
## 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.
## ¿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 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

@ -0,0 +1,182 @@
# 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.
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.
## 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.
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:
```
$ su root
<enter root passwd>
# apt-get install sudo
# usermod -aG sudo <username>
# reboot
```
## Instale Bitcoin
### Paso 1: Actualice su sistema
Primero, actualice el sistema usando:
```
$ 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:
```
$ 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
```
### 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:
```
$ git clone https://github.com/bitcoin/bitcoin.git
```
Verifique el contenido del repo:
```
$ ls bitcoin
````
Debería ser aproximadamente similar al siguiente contenido:
![clonando el repo](../public/LBftCLI-compiling_bitcoin-git.png)
### Paso 4: Instale la base de datos Berkley v4.8
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 la siguiente salida. Tome nota de la
salida, 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:
```
$ git tag -n | sort -V
```
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`.
```
$ ./autogen.sh
$ export BDB_PREFIX='<PATH-TO>/db4'
$ ./configure BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" BDB_CFLAGS="-I${BDB_PREFIX}/include"
$ 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:
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.
### 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.
#### Ejecute Bitcoin Core sin instalarlo
Para solo ejecutar Bitcoin Core:
`$ src/qt/bitcoin-qt` para ejecutar la interfaz grafica de usuario.
`$ src/bitcoind` para ejecutar bitcoin en la línea de comandos.
### Instale 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.
## 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.
## 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.
## ¿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 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

@ -0,0 +1,281 @@
# 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.
> Lectura con advertencias.
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:
```
$ 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`.
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.
Los monederos Regtest y el estado de la cadena de bloques 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.
```
$ 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.
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:
```
$ bitcoin-cli -regtest -generate 101
[
"57f17afccf28b9296048b6370312678b6d8e48dc3a7b4ef7681d18ed3d91c122",
"631ff7b8135ce633c774828be3b8505726459eb65c339aab981b10363befe5a7",
...
"1162dbfe025c7da94ee1128dc26d518a94508f532c19edc0de6bc673a909d02c",
"20cb2e815c3d42d6a117a204a0b5e726ab641c826e441b5b3417aca33f2aba48"
]
```
> :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.
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.
### Verifique su balance
Luego de minar bloques y obtener recompensas, usted puede verificar el balance
de su monedero:
```
$ bitcoin-cli -regtest getbalance
50.00000000
```
### 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).
Es importante notar que para que se complete cualquier transacción, usted
deberá generar (minar) 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`:
```
$ 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`:
```
$ bitcoin-cli -regtest gettransaction e834a4ac6ef754164c8e3f0be4f34531b74b768199ffb244ab9f6cb1bbc7465a
{
"amount": 0.00000000,
"fee": -0.00178800,
"confirmations": 0,
"trusted": false,
"txid": "e834a4ac6ef754164c8e3f0be4f34531b74b768199ffb244ab9f6cb1bbc7465a",
"walletconflicts": [
],
"time": 1513204730,
"timereceived": 1513204730,
"bip125-replaceable": "unknown",
"details": [
{
"account": "",
"address": "mjtN3C97kuWMgeBbxdB7hG1bjz24Grx2vA",
"category": "send",
"amount": -15.10000000,
"label": "",
"vout": 1,
"fee": -0.00178800,
"abandoned": false
},
{
"account": "",
"address": "mjtN3C97kuWMgeBbxdB7hG1bjz24Grx2vA",
"category": "receive",
"amount": 15.10000000,
"label": "",
"vout": 1
}
],
"hex": "020000000f00fe2c7b70b925d0d40011ce96f8991fee5aba9537bd1b6913b37c37b041a57c00000000494830450221009ad02bfeee2a49196a99811ace20e2e7fefd16d33d525884edbc64bf6e2b1db502200b94f4000556391b0998932edde3033ba2517733c7ddffb87d91f6b756629fe201feffffff06a9301a2b39875b68f8058b8e2ad0b658f505e44a67e1e1d039140ae186ed1f0000000049483045022100c65cd13a85af6fcfba74d2852276a37076c89a7642429aa111b7986eea7fd6c7022012bbcb633d392ed469d5befda8df0a6b96e1acfa342f559877edebc2af7cb93401feffffff434b6f67e5e068401553e89f739a3edc667504597f29feb8edafc2b081cc32d90000000049483045022100b86ecc43e602180c787c36465da7fc8d1e8bfba23d6f49c37190c20889f2dfa0022032c3aec3ceefbb7a33c040ef19090cacbfd6bc9c5cd8e94252eb864891c6f34501feffffff4c65b43f8568ce58fc4c55d24ba0742e9878a031fdfae0fadac7247f42cc1f8e0000000049483045022100d055acfce852259dde051dc61792f94277d094c5da96752f925582b8e739868f02205e69add76e6b001073ad6b7df5f32a681fc8513ee0f6e126ee1c2d45149bd91d01feffffff5a72d60b58300974c5d4731e29b437ea61b87b6733bb3ca6ce5548ef8887d05b0000000049483045022100a7f5b2ee656a5a904fb27f982210de6858dfb165777ec969a77ea1c2c82975a4022001a1a563dbc3714047ec855f7aee901e756b851e255f35435e85c2ba7b0abd8401feffffff60d68e9d5650d55bc9e0b2a65ed27a3b9bceac4955760aa1560408854c3b148d000000004948304502210081a6f0c8232c52f3eaca825965077e88b816e503834989be4afb3f44f87eb98202207ae8becb99efe379fb269f477e7bb70d117dcb83e106c53b7addaa9715029da101feffffff63e2239425aad544f6e1157d5ee245d2500d4e9e9daf8049e0a38add6246da890000000049483045022100e0ab1752e8fbb244b63f7dd5649f2222e0dc42fae293b758e0c28082f77560b60220013f72fbe50acf4af197890b4d18fa89094055ed66f9226a6b461cc4ff560f8e01feffffff6aad4151087f4209ace714193dd64f770305dfb89470b79cca538b88253fbbef0000000049483045022100fee4a5f7ec6e8b55bd6aa0e93b5399af724039171d998b926e8095b70953d5f202203db0d4ef9d1bd57aeff0fe3d47d4358ec0559135dac8107507741eef0638279201feffffff7ddbca5854e25e6a2dfeacfe5828267cd1ef5d86e1da573fe2c2b21b45ecd6ce0000000049483045022100bf45241525592df4625642972dbc940ef74771139dd844bc6a9517197d01488c02203c99ca98892cc2693e8fbb9a600962eec84494fb8596acf0d670822624e497c901feffffff8672949de559e76601684c4ac3731599fd965d0c412e7df9f8ec16038d4420a60000000049483045022100b5a9bd3c6718c6bd2a8300bbd1d9de0ff1c5d02aeb6a659c52bb88958e7e3b0302207f710db1ef975c22edf54e063169aae31bbe470166cc0e5c34fd27b730b8e7d001feffffff8e006b0bb8cef2c5c2a11c8c2aa7d3ba01cb4386c7f780c45bc1014142b425f00000000048473044022046dc9db8daeb09b7c0b9f48013c8af2d0a71f688adaa8d91b40891768c852d4a02204fa15da6d58851191344a56c63bf51a540ec03f73117a3446230bb58a8a4bcce01feffffffbad05b8f86182b9b7c9c5aaa9ce3dc8d08a76848e49a2d9b8dcfb0f764bb26ca000000004847304402200682379dc36cb486309eac4913f41ac19638525677edad45ca8d9a2b0728b12f02203fb44f8a46cbc4c02f5699d7d4d9cd810bdf7e7c981b421218ccbcb7b73845f501feffffffd35228fe9ef0a742eacffc4a13f15ed7ba23854e6cb49d5010810ac11b5bdf690000000048473044022030045b882500808bd707f4654becc63de070818c82716310d39576decdd724e3022034d3b41cb5e939f0011bb5251be7941b6077fde5f4eff59afd8e49a2844288f701fefffffff5ae4cbd4ae8d68b5a34be3231cdc88b660447175f39cf7a86397f37641d4aa70000000049483045022100afe16f0de96a8629d6148f93520d690f30126c37e7f7f05300745a1273d7eb7202200933f6b371c4ea522570f3ec2aee9be2b59730b634e828f543bcdb019cf4749901fefffffff633f61ac61683221cc3d2665cf4bcf193af1c8ffe9d3d756ba83cc5eb7643250000000049483045022100ef0b8853c94d60634eff2fc1d4d75872aacb0a2d3242308b7ee256b24739c614022069fe9be8288bdd635871c263c46be710c001729d43f6fbc1350ed1a693c4646301feffffff0250780000000000001976a91464ed7fb2fe0b06f4cad0d731b122222e3e91088a88ac80c5005a000000001976a9142fed0f02d008f89f6a874168e506e2d4f9bcbfb888acd32b0000"
}
```
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:
```
$ bitcoin-cli -regtest -generate 6
[
"33549b2aa249f0a814db4a2ba102194881c14a2ac041c23dcc463b9e4e128e9f",
"2cc5c2012e2cacf118f9db4cdd79582735257f0ec564418867d6821edb55715e",
"128aaa99e7149a520080d90fa989c62caeda11b7d06ed1965e3fa7c76fa1d407",
"6037cc562d97eb3984cca50d8c37c7c19bae8d79b8232b92bec6dcc9708104d3",
"2cb276f5ed251bf629dd52fd108163703473f57c24eac94e169514ce04899581",
"57193ba8fd2761abf4a5ebcb4ed1a9ec2e873d67485a7cb41e75e13c65928bf3"
]
```
## Pruebe con NodeJS
Cuando usted esta en regtest, es capaz de simular casos extremos 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.
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:
```javascript
file: test.js
const { BitcoinNet, BitcoinGraph } = require('bitcointest');
const net = new BitcoinNet('/usr/local/bin', '/tmp/bitcointest/', 22001, 22002);
const graph = new BitcoinGraph(net);
try {
console.log('Launching nodes...');
const nodes = net.launchBatchS(4);
const [ n1, n2 ] = nodes;
net.waitForNodesS(nodes, 20000);
console.log('Connected!');
const blocks = n1.generateBlocksS(110);
console.info('Generated 110 blocks');
console.log(`n2.balance (before) = ${n2.getBalanceS()}`);
const sometxid = n1.sendToNodeS(n2, 100);
console.log(`Generated transaction = ${sometxid}`);
n1.generateBlocksS(110);
n2.waitForBalanceChangeS(0);
const sometx = n2.getTransactionS(sometxid);
console.log(`n2.balance (after) = ${n2.getBalanceS()}`);
} catch (e) {
console.error(e);
net.shutdownS();
throw e;
}
```
Como se puede observar, esto generara bloques y una transacción:
```
$ node test.js
Launching nodes...
Connected!
Generated 110 blocks
n2.balance (before) = 0
Generated transaction = 91e0040c26fc18312efb80bad6ec3b00202a83465872ecf495c392a0b6afce35
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.
> :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 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í.
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.