Skip to content

Commit 6045bc5

Browse files
authored
Merge pull request #509 from icculp/update_links_2
Fixing chapter links and minor corrections from 15 through end
2 parents 7e0abd0 + 91841e6 commit 6045bc5

21 files changed

+59
-59
lines changed

es/15_0_Usando_i2p.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Diferencias básicas entre Tor y i2p:
1313

1414
Lea más: https://geti2p.net/en/comparison/tor
1515

16-
Este no es instalado por [Bitcoin Standup](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts) actualmente ya que el soporte i2p fue agregado a Bitcoin Core recientemente. Sin embargo, puede probarlo manualmente siguiendo los pasos mencionados en la [Sección Uno](15_1_i2p_service.md).
16+
Este no es instalado por [Bitcoin Standup](https://github.com/BlockchainCommons/Bitcoin-Standup-Scripts) actualmente ya que el soporte i2p fue agregado a Bitcoin Core recientemente. Sin embargo, puede probarlo manualmente siguiendo los pasos mencionados en la [Sección Uno](15_1_Servicio_i2p.md).
1717

1818
## Objetivos para Este Capítulo
1919

es/16_1_Accediendo_a_Bitcoind_en_C_con_las_Bibliotecas_RPC.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ ldconfig -v -n .lib
6767
libbitcoinrpc.so.0 -> libbitcoinrpc.so.0.2 (changed)
6868
ln -fs libbitcoinrpc.so.0 .lib/libbitcoinrpc.so
6969
```
70-
Si eso funciona, puede instalar el paquete::
70+
Si eso funciona, puede instalar el paquete:
7171
```
7272
$ sudo make install
7373
Installing to
@@ -148,7 +148,7 @@ bitcoinrpc_global_cleanup();
148148

149149
### Pruebe el código de prueba
150150

151-
El código de prueba se puede encontrar en el directorio src [15_1_testbitcoin.c](https://github.com/BlockchainCommons/Learning-Bitcoin-from-the-Command-Line/blob/spanish-translation/src/15_1_testbitcoin.c). Descárguelo en su máquina de testnet, luego inserte la contraseña de RPC correcta (y cambie el usuario de RPC si no creó su servidor con StandUp).
151+
El código de prueba se puede encontrar en el directorio src [16_1_testbitcoin.c](../src/16_1_testbitcoin.c). Descárguelo en su máquina de testnet, luego inserte la contraseña de RPC correcta (y cambie el usuario de RPC si no creó su servidor con StandUp).
152152

153153
Puede compilar y ejecutar esto de la siguiente manera:
154154
```
@@ -214,7 +214,7 @@ printf("Block Count: %d\n",blocks);
214214
215215
### Prueba el código de información
216216

217-
Recupere el código de prueba del [directorio src](https://github.com/BlockchainCommons/Learning-Bitcoin-from-the-Command-Line/blob/spanish-translation/src/15_1_getmininginfo.c).
217+
Recupere el código de prueba del [directorio src](../src/16_1_getmininginfo.c).
218218
```
219219
$ cc getmininginfo.c -lbitcoinrpc -ljansson -o getmininginfo
220220
$ ./getmininginfo

es/16_2_Programando_Bitcoind_en_C_con_las_Bibliotecas_RPC.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
> :information_source: **NOTA:** Esta sección se agregó recientemente al curso y es un borrador inicial que aún puede estar pendiente de revisión. Lector de advertencias.
44
5-
[§16.1](16_1_Accediendo_a_Bitcoind_en_C_con_las_Bibliotecas_RPC) presentó la metodología para crear programas en C utilizando bibliotecas RPC y JSON. Ahora vamos a mostrar el potencial de esas bibliotecas C presentando un primer corte simplista de un programa Bitcoin real.
5+
[§16.1](16_1_Accediendo_a_Bitcoind_en_C_con_las_Bibliotecas_RPC.md) presentó la metodología para crear programas en C utilizando bibliotecas RPC y JSON. Ahora vamos a mostrar el potencial de esas bibliotecas C presentando un primer corte simplista de un programa Bitcoin real.
66

77
## Planifique su código
88

@@ -67,7 +67,7 @@ float tx_total = tx_amount + tx_fee;
6767
6868
### Paso 3: Prepare su RPC
6969

70-
Obviamente, necesitará tener todas sus variables listas nuevamente, como se discutió en [§16.1: Acceso a Bitcoind con C](16_1_Accediendo_a_Bitcoind_en_C_con_las_Bibliotecas_RPC). También necesita inicializar su biblioteca, conectar su cliente RPC y preparar su objeto de respuesta:
70+
Obviamente, necesitará tener todas sus variables listas nuevamente, como se discutió en [§16.1: Acceso a Bitcoind con C](16_1_Accediendo_a_Bitcoind_en_C_con_las_Bibliotecas_RPC.md). También necesita inicializar su biblioteca, conectar su cliente RPC y preparar su objeto de respuesta:
7171

7272
```
7373
bitcoinrpc_global_init();
@@ -197,7 +197,7 @@ char *changeaddress = strdup(json_string_value(lu_result));
197197

198198
La única diferencia es qué información particular se extrae del objeto JSON.
199199

200-
> :warning:**ADVERTENCIA:** Aquí hay un lugar en el que una subrutina sería realmente agradable: abstraer toda la inicialización y llamada del método RPC.
200+
> :warning: **ADVERTENCIA:** Aquí hay un lugar en el que una subrutina sería realmente agradable: abstraer toda la inicialización y llamada del método RPC.
201201
202202

203203
### Paso 6: Crea una transacción sin procesar
@@ -253,7 +253,7 @@ json_object_set(outputparams, tx_recipient, json_string(tx_amount_string));
253253
json_object_set(outputparams, changeaddress, json_string(tx_change_string));
254254
```
255255

256-
> :warning:**ADVERTENCIA: **Puede esperar ingresar sus valores de Bitcoin como números, usando `json_real`. Desafortunadamente, esto expone uno de los principales problemas con la integración de la biblioteca `jansson` y Bitcoin. Bitcoin solo es válido hasta ocho dígitos significativos después del punto decimal. Puede recordar que .00000001 BTC es un satoshi, y esa es la división más pequeña posible de un Bitcoin. Los dobles en C ofrecen dígitos más significativos que eso, aunque a menudo son imprecisos más allá de los ocho decimales. Si intenta convertir directamente de su valor doble en C (o un valor flotante, para el caso) a un valor de Bitcoin, la imprecisión a menudo creará un valor de Bitcoin con más de ocho dígitos significativos. Antes de Bitcoin Core 0.12, esto parece funcionar, y podría usar `json_real`. Pero a partir de Bitcoin Core 0.12, si intenta darle a `createrawtransaction` un valor de Bitcoin con demasiados dígitos significativos, obtendrá un error y la transacción no se creará. Como resultado, si el valor de Bitcoin _ever_ se ha convertido en un doble o flotante, debe reformatearlo a ocho dígitos significativos después del dígito antes de introducirlo como una cadena. Obviamente, esto es una tontería, por lo que debe asegurarse de que continúe funcionando en futuras versiones de Bitcoin Core.
256+
> :warning:**ADVERTENCIA:** Puede esperar ingresar sus valores de Bitcoin como números, usando `json_real`. Desafortunadamente, esto expone uno de los principales problemas con la integración de la biblioteca `jansson` y Bitcoin. Bitcoin solo es válido hasta ocho dígitos significativos después del punto decimal. Puede recordar que .00000001 BTC es un satoshi, y esa es la división más pequeña posible de un Bitcoin. Los dobles en C ofrecen dígitos más significativos que eso, aunque a menudo son imprecisos más allá de los ocho decimales. Si intenta convertir directamente de su valor doble en C (o un valor flotante, para el caso) a un valor de Bitcoin, la imprecisión a menudo creará un valor de Bitcoin con más de ocho dígitos significativos. Antes de Bitcoin Core 0.12, esto parece funcionar, y podría usar `json_real`. Pero a partir de Bitcoin Core 0.12, si intenta darle a `createrawtransaction` un valor de Bitcoin con demasiados dígitos significativos, obtendrá un error y la transacción no se creará. Como resultado, si el valor de Bitcoin _ever_ se ha convertido en un doble o flotante, debe reformatearlo a ocho dígitos significativos después del dígito antes de introducirlo como una cadena. Obviamente, esto es una tontería, por lo que debe asegurarse de que continúe funcionando en futuras versiones de Bitcoin Core.
257257

258258
#### Paso 6.3: Crear la matriz de parámetros
259259

@@ -329,7 +329,7 @@ char *tx_signrawhex = strdup(json_string_value(lu_signature));
329329
json_decref(lu_signature);
330330
```
331331

332-
> :warning: *** ADVERTENCIA: *** Un programa del mundo real obviamente probaría cuidadosamente la respuesta de cada comando RPC para asegurarse de que no haya errores. Eso es especialmente cierto para `signrawtransaction`, porque podría terminar con una transacción parcialmente firmada. Peor aún, si no verifica los errores en el objeto JSON, solo verá el `hex` y no se dará cuenta de que está sin firmar o parcialmente firmado.
332+
> :warning: ***ADVERTENCIA:*** Un programa del mundo real obviamente probaría cuidadosamente la respuesta de cada comando RPC para asegurarse de que no haya errores. Eso es especialmente cierto para `signrawtransaction`, porque podría terminar con una transacción parcialmente firmada. Peor aún, si no verifica los errores en el objeto JSON, solo verá el `hex` y no se dará cuenta de que está sin firmar o parcialmente firmado.
333333
334334
### Paso 8. Envíar la transacción
335335

@@ -364,7 +364,7 @@ El código completo, con un poco más de comprobación de errores, aparece en el
364364
## Pruebe su código
365365

366366

367-
El código completo se puede encontrar en el [directorio src](../src/15_2_sendtoaddress.c).
367+
El código completo se puede encontrar en el [directorio src](../src/16_2_sendtoaddress.c).
368368

369369
Compile esto como de costumbre:
370370

es/16_3_Recibiendo_Notificaciones_de_Bitcoind_en_C_con_las_Bibliotecas_ZMQ.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
55
[§16.1](16_1_Accediendo_a_Bitcoind_en_C_con_las_Bibliotecas_RPC.md) y [§16.2](16_2_Programando_Bitcoind_en_C_con_las_Bibliotecas_RPC.md) introdujeron las bibliotecas RPC y JSON para C, y al hacerlo mostró una de las ventajas de acceder a los comandos RPC de Bitcoin a través de un lenguaje de programación: la capacidad de crear programas mucho más complejos. Este capítulo presenta una tercera biblioteca, para [ZMQ](http://zeromq.org/), y al hacerlo revela otra ventaja: la capacidad de monitorear las notificaciones. Lo usará para codificar un oyente de blockchain.
66

7-
> :libro: ***¿Qué es ZMQ?*** ZeroMQ (ZMQ) es una biblioteca de mensajería asincrónica de alto rendimiento que proporciona una cola de mensajes. ZeroMQ admite patrones de mensajería comunes (publicación / sub, solicitud / respuesta, cliente / servidor y otros) a través de una variedad de transportes (TCP, en proceso, entre procesos, multidifusión, WebSocket y más), lo que hace que la mensajería entre procesos tan simple como la mensajería entre subprocesos. Puede encontrar más detalles sobre las notificaciones de ZMQ y otros tipos de mensajes en [este repositorio](https://github.com/Actinium-project/ChainTools/blob/master/docs/chainlistener.md).
7+
> :book: ***¿Qué es ZMQ?*** ZeroMQ (ZMQ) es una biblioteca de mensajería asincrónica de alto rendimiento que proporciona una cola de mensajes. ZeroMQ admite patrones de mensajería comunes (publicación / sub, solicitud / respuesta, cliente / servidor y otros) a través de una variedad de transportes (TCP, en proceso, entre procesos, multidifusión, WebSocket y más), lo que hace que la mensajería entre procesos tan simple como la mensajería entre subprocesos. Puede encontrar más detalles sobre las notificaciones de ZMQ y otros tipos de mensajes en [este repositorio](https://github.com/Actinium-project/ChainTools/blob/master/docs/chainlistener.md).
88
99
## Configurar ZMQ
1010

@@ -133,7 +133,7 @@ Por supuesto, cuando termine, debe limpiar:
133133

134134
### Pruebe el código de notificación
135135

136-
El código fuente está en el [directorio src](../src/15_3_chainlistener.c) como de costumbre. Debería compilarlo:
136+
El código fuente está en el [directorio src](../src/16_3_chainlistener.c) como de costumbre. Debería compilarlo:
137137

138138
```
139139
$ cc -o chainlistener chainlistener.c -I/usr/local/include -L/usr/local/lib -lzmq -lczmq

es/17_1_Configurando_Libwally.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ En ambos casos, el argumento es para flags, pero actualmente tiene el valor `0`.
128128

129129
## Prueba un programa de prueba de Libwally
130130

131-
El directorio src contiene [testwally.c](../src/16_1_testwally.c), que sólo muestra cómo funcionan las funciones de inicialización y limpieza.
131+
El directorio src contiene [testwally.c](../src/17_1_testwally.c), que sólo muestra cómo funcionan las funciones de inicialización y limpieza.
132132

133133
Puede compilarlo de la siguiente manera:
134134
```
@@ -188,4 +188,4 @@ Entonces, ¿qué puede hacer ahora? De eso es lo que se trata en el siguiente
188188

189189
## ¿Qué es lo siguiente?
190190

191-
Más información sobre "Programar Bitcoin con Libwally" en [17.2: Usar BIP39 en Libwally](17_2_Using_BIP39_in_Libwally.md).
191+
Más información sobre "Programar Bitcoin con Libwally" en [17.2: Usar BIP39 en Libwally](17_2_Usando_BIP39_en_Libwally.md).

es/17_2_Usando_BIP39_en_Libwally.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
Uno de los mayores poderes de Libwally es que puede poner al descubierto el trabajo subyacente de generar semillas, claves privadas y, en última instancia, direcciones. Para empezar, es compatible con [BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki), que es el BIP que define los códigos mnemónicos para Bitcoin - algo que es totalmente no compatible, hasta la fecha, por Bitcoin Core.
66
> :book: ***Qué es un código mnemónico?*** Las direcciones de Bitcoin (y sus correspondientes claves privadas y semillas subyacentes) son listas largas e ininteligibles de caracteres y números, que no solo son imposibles de recordar, sino también fáciles de escribir mal. Los códigos mnemotécnicos son una solución para esto que permite a los usuarios grabar 12 (o 24) palabras en su idioma, algo que es mucho menos propenso a errores. Estos códigos se pueden utilizar para restaurar completamente una semilla BIP32 que es la base de una cartera HD.
77
8-
> :book: ***Que es una semilla? *** Mencionamos brevemente las semillas en [§3.5: Entendiendo el Descriptor](03_5_Entendiendo_El_Descriptor.md). Es el número aleatorio que se utiliza para generar una secuencia completa de claves privadas (y por lo tanto direcciones) en una cartera de jerárquica determinista (HD). Volveremos a las semillas en la siguiente sección, que es todo sobre carteras HD y Libwally. Por ahora, basta saber que un código mnemónico BIP39 corresponde a la semilla de una cartera determinística jerárquica BIP32.
8+
> :book: ***Que es una semilla?*** Mencionamos brevemente las semillas en [§3.5: Entendiendo el Descriptor](03_5_Entendiendo_El_Descriptor.md). Es el número aleatorio que se utiliza para generar una secuencia completa de claves privadas (y por lo tanto direcciones) en una cartera de jerárquica determinista (HD). Volveremos a las semillas en la siguiente sección, que es todo sobre carteras HD y Libwally. Por ahora, basta saber que un código mnemónico BIP39 corresponde a la semilla de una cartera determinística jerárquica BIP32.
99
1010
## Crear códigos mnemotécnicos
1111

es/17_3_Usando_BIP32_en_Libwally.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ También hay una función `wally_bip32_key_to_address` que se puede utilizar par
103103

104104
## Prueba de código HD
105105

106-
El código para este ejemplo de HD se puede encontrar, como de costumbre, en el [src directory](../src/16_3_genhd.c).
106+
El código para este ejemplo de HD se puede encontrar, como de costumbre, en el [src directory](../src/17_3_genhd.c).
107107

108108
Puede compilarlo y probarlo:
109109
```

es/17_4_Usando_PSBTs_en_Libwally.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ Obviamente, hay mucho más que podría ver en los PSBT. De hecho, observar es el
116116
117117
### Pruebe su lector PSBT
118118

119-
De nuevo, el código para este lector PSBT (extremadamente rudimentario y específico) está en el [src directory](../src/16_4_examinepsbt.c).
119+
De nuevo, el código para este lector PSBT (extremadamente rudimentario y específico) está en el [src directory](../src/17_4_examinepsbt.c).
120120

121121
Puede compilarlo como siempre:
122122
```
@@ -271,7 +271,7 @@ Puede ver la entrada en satoshis y el `scriptPubKey` claramente listados en las
271271
## Crear un PSBT
272272

273273
Como se señaló al principio de esta sección, todas las funciones necesarias para crear y procesar las PSBT están disponibles en Libwally. En realidad, correr a través del proceso de hacerlo es lo suficientemente complejo como para que esté más allá del alcance de esta sección, pero aquí hay una rápida ejecución de las funciones requeridas. Tenga en cuenta que los [documentos](https://wally.readthedocs.io/en/latest/psbt/) están desactualizados para PSBTs, por lo que deberá consultar `/usr/include/wally_psbt.h` para información completa.
274-
Como se discute en [§7.1](07_1_Creating_a_Partially_Signed_Bitcoin_Transaction.md) hay varios roles involucrados en la creación de PSBTs
274+
Como se discute en [§7.1](07_1_Creando_una_Transaccion_Bitcoin_Parcialmente_Firmada.md) hay varios roles involucrados en la creación de PSBTs
275275

276276
### Tomar el rol de creador
277277

@@ -290,7 +290,7 @@ Pero lo que usted tiene todavía no es un PSBT legal, debido a la falta de insum
290290
```
291291
## Pruebe su creación de PSBT
292292

293-
En este punto, debería tener un PSBT vacío, pero funcional, que puede ver compilando y ejecutando [the program](../src/16_4_createemptypsbt.c).
293+
En este punto, debería tener un PSBT vacío, pero funcional, que puede ver compilando y ejecutando [el programa](../src/17_4_createemptypsbt.c).
294294
```
295295
$ cc createemptypsbt.c -lwallycore -o createemptypsbt
296296
$ ./createemptypsbt

es/17_5_Usando_Scripts_en_Libwally.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ Un comando más lo añade a su transacción:
8080

8181
Crear la entrada es mucho más difícil porque usted tiene que acumular información en las rutinas de creación, no todas las cuales son intuitivamente accesibles cuando usa Libwally. Así que, en lugar de ir tan profundo en la maleza, aquí es donde tomamos nuestro atajo. Escribimos nuestro código para que pase el código hexadecimal de una transacción que ya ha sido creada, y luego simplemente reutilizamos la entrada.
8282

83-
La conversión del código hexadecimal se realiza con `wally_tx_from_hex:
83+
La conversión del código hexadecimal se realiza con `wally_tx_from_hex`:
8484
```
8585
struct wally_tx *utxo;
8686
lw_response = wally_tx_from_hex(utxo_hex,0,&utxo);
@@ -110,7 +110,7 @@ Vamos a mostrar cómo hacer uso de eso en §17.7.
110110

111111
## Pruebe su script de reemplazo
112112

113-
Puede tomar el código de prueba del [directorio src](../src/16_5_replacewithscript.c) y compilarlo:
113+
Puede tomar el código de prueba del [directorio src](../src/17_5_replacewithscript.c) y compilarlo:
114114
```
115115
$ cc replacewithscript.c -lwallycore -o replacewithscript
116116
```

es/17_7_Integrando_Libwally_y_Bitcoin-CLI.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Para demostrar completamente esta metodología, creará una transacción con `bi
2727
```
2828
Por ahora, usted sabe cómo configurar una transacción con `bitcoin-cli`:
2929

30-
Aunque puso un destinatario y una cantidad en la salida, es irrelevante porque tendrá que reescribirlas. Un código un poco más elegante podría leer la información `vout` existente antes de reescribir, pero estamos manteniendo las cosas muy cerca de nuestro [código original](../src/16_5_replacewithscript.c).
30+
Aunque puso un destinatario y una cantidad en la salida, es irrelevante porque tendrá que reescribirlas. Un código un poco más elegante podría leer la información `vout` existente antes de reescribir, pero estamos manteniendo las cosas muy cerca de nuestro [código original](../src/17_5_replacewithscript.c).
3131

3232
Aquí está el cambio necesario, para que pueda especificar el monto de satoshis para la salida `vout`, sin tener que ponerlo a fuego como en el original:
3333
```
@@ -164,7 +164,7 @@ $ bitcoin-cli decoderawtransaction $signedtx
164164
```
165165
¡Voila! Ese es el poder de Libwally con `bitcoin-cli`.
166166

167-
Obviamente, también puede pasar un PSBT usando las funciones descritas en [§17.4](117_4_Usando_PSBTs_en_Libwally.md) y esa es una metodología más actualizada para el uso actual de Bitcoin, pero en cualquier caso, el concepto de pasar transacciones desde `bitcoin-cli` a código Libwally y viceversa debe ser similar.
167+
Obviamente, también puede pasar un PSBT usando las funciones descritas en [§17.4](17_4_Usando_PSBTs_en_Libwally.md) y esa es una metodología más actualizada para el uso actual de Bitcoin, pero en cualquier caso, el concepto de pasar transacciones desde `bitcoin-cli` a código Libwally y viceversa debe ser similar.
168168

169169
## Importar y exportar semillas BIP39
170170

@@ -176,7 +176,7 @@ Desafortunadamente, no todas las interacciones entre Libwally y `bitcoin-cli` va
176176
177177
## Importar claves privadas
178178

179-
Afortunadamente puede hacer lo mismo importando una clave privada generada en Libwally. De un vistazo a [genhd-for-import.c](../src/16_7_genhd_for_import.c), que es una versión simplificada del programa `genhd` de [§17.3](17_3_Usando_BIP32_en_Libwally.md) que también utiliza la biblioteca `jansson` de [§16.1](16_1_Accediendo_a_Bitcoind_en_C_con_las_Bibliotecas_RPC.md) para la salida regularizada.
179+
Afortunadamente puede hacer lo mismo importando una clave privada generada en Libwally. De un vistazo a [genhd-for-import.c](../src/17_7_genhd_for_import.c), que es una versión simplificada del programa `genhd` de [§17.3](17_3_Usando_BIP32_en_Libwally.md) que también utiliza la biblioteca `jansson` de [§16.1](16_1_Accediendo_a_Bitcoind_en_C_con_las_Bibliotecas_RPC.md) para la salida regularizada.
180180

181181
El código actualizado también contiene un cambio de nota: solicita una huella dactilar de Libwally para que pueda crear correctamente una ruta de derivación:
182182

0 commit comments

Comments
 (0)