mirror of
				https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line.git
				synced 2025-10-31 10:27:29 +00:00 
			
		
		
		
	Update 09_4_Codificando_una_P2PKH.md
This commit is contained in:
		
							parent
							
								
									0db9545945
								
							
						
					
					
						commit
						1f184def89
					
				| @ -2,9 +2,9 @@ | |||||||
| 
 | 
 | ||||||
| Las direcciones P2PKH están perdiendo popularidad rápidamente debido a la llegada de SegWit, pero, no obstante, siguen siendo un gran bloque de construcción para comprender Bitcoin, y especialmente para comprender los scripts de Bitcoin. (Echaremos un vistazo rápido a cómo los scripts P2WPKH nativos de Segwit funcionan de manera diferente en la siguiente sección). | Las direcciones P2PKH están perdiendo popularidad rápidamente debido a la llegada de SegWit, pero, no obstante, siguen siendo un gran bloque de construcción para comprender Bitcoin, y especialmente para comprender los scripts de Bitcoin. (Echaremos un vistazo rápido a cómo los scripts P2WPKH nativos de Segwit funcionan de manera diferente en la siguiente sección). | ||||||
| 
 | 
 | ||||||
| ## Comprender el script de desbloqueo | ## Comprenda el script de desbloqueo | ||||||
| 
 | 
 | ||||||
| Durante mucho tiempo hemos dicho que cuando los fondos se envían a una dirección de Bitcoin, están bloqueados en la clave privada asociada con esa dirección. Esto se gestiona a través del `scriptPubKey` de una transacción P2PKH, que está diseñada de tal manera que requiere que el destinatario tenga la clave privada asociada a la dirección P2PKH Bitcoin. Para ser precisos, el destinatario debe proporcionar tanto la clave pública vinculada a la clave privada como una firma generada por la clave privada.  | Durante mucho tiempo hemos dicho que cuando los fondos se envían a una dirección de Bitcoin, están bloqueados con la clave privada asociada con esa dirección. Esto se gestiona a través del `scriptPubKey` de una transacción P2PKH, que está diseñada de tal manera que requiere que el destinatario tenga la clave privada asociada a la dirección P2PKH Bitcoin. Para ser precisos, el destinatario debe proporcionar tanto la clave pública vinculada a la clave privada como una firma generada por la clave privada.  | ||||||
| 
 | 
 | ||||||
| Revise nuevamente la transacción que creó en [§9.1](09_1_Entendiendo_la_base_de_las_Transacciones.md): | Revise nuevamente la transacción que creó en [§9.1](09_1_Entendiendo_la_base_de_las_Transacciones.md): | ||||||
| ``` | ``` | ||||||
| @ -51,7 +51,7 @@ Puede ver que su `scriptSig` o secuencia de comandos de desbloqueo tiene dos val | |||||||
| ``` | ``` | ||||||
| Eso es todo lo que es un script de desbloqueo! (Para un P2PKH.) | Eso es todo lo que es un script de desbloqueo! (Para un P2PKH.) | ||||||
| 
 | 
 | ||||||
| ## Comprender el script de bloqueo | ## Comprenda el script de bloqueo | ||||||
| 
 | 
 | ||||||
| Recuerde que cada script de desbloqueo desbloquea un UTXO anterior. En el ejemplo anterior, `vin` revela que en realidad está desbloqueando el vout `0` de la transacción con txid `bb4362dec15e67d366088f5493c789f22fb4a604e767dae1f6a631687e2784aa`. | Recuerde que cada script de desbloqueo desbloquea un UTXO anterior. En el ejemplo anterior, `vin` revela que en realidad está desbloqueando el vout `0` de la transacción con txid `bb4362dec15e67d366088f5493c789f22fb4a604e767dae1f6a631687e2784aa`. | ||||||
| 
 | 
 | ||||||
| @ -170,7 +170,7 @@ Script: OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG | |||||||
| Running: <pubKey> OP_DUP | Running: <pubKey> OP_DUP | ||||||
| Stack: [ <signature> <pubKey> <pubKey> ] | Stack: [ <signature> <pubKey> <pubKey> ] | ||||||
| ``` | ``` | ||||||
| Por qué el duplicado? Porque es necesario comprobar los dos elementos de desbloqueo: la clave pública y la firma. | ¿Por qué el duplicado? Porque es necesario comprobar los dos elementos de desbloqueo: la clave pública y la firma. | ||||||
| 
 | 
 | ||||||
| A continuación, `OP_HASH160` saca el resultado de la pila `<pubKey>`, lo codifica y vuelve a colocar el resultado en la pila. | A continuación, `OP_HASH160` saca el resultado de la pila `<pubKey>`, lo codifica y vuelve a colocar el resultado en la pila. | ||||||
| ``` | ``` | ||||||
| @ -183,7 +183,7 @@ Luego, coloca el `<pubKeyHash>` que estaba en el script de bloqueo en la pila: | |||||||
| Script: OP_EQUALVERIFY OP_CHECKSIG | Script: OP_EQUALVERIFY OP_CHECKSIG | ||||||
| Stack: [ <signature> <pubKey> <pubKeyHash> <pubKeyHash> ] | Stack: [ <signature> <pubKey> <pubKeyHash> <pubKeyHash> ] | ||||||
| ``` | ``` | ||||||
| `OP_EQUALVERIFY` es efectivamente dos códigos de operación: `OP_EQUAL`, que saca dos elementos de la pila y empuja `True` o `False` en función de la comparación y `OP_VERIFY` que muestra ese resultado e inmediatamente marca la transacción como inválida si es `False`. (El capítulo 12 habla más sobre el uso de `OP_VERIFY` como condicional.) | `OP_EQUALVERIFY` es efectivamente dos códigos de operación: `OP_EQUAL`, que saca dos elementos de la pila y empuja `True` o `False` en función de la comparación y `OP_VERIFY` que muestra ese resultado e inmediatamente marca la transacción como inválida si es `False`. (El capítulo 12 habla más sobre el uso de `OP_VERIFY` como condicional). | ||||||
| 
 | 
 | ||||||
| Suponiendo que los dos `<pubKeyHash>es` son iguales, obtendrá el siguiente resultado: | Suponiendo que los dos `<pubKeyHash>es` son iguales, obtendrá el siguiente resultado: | ||||||
| ``` | ``` | ||||||
| @ -197,9 +197,9 @@ Script: | |||||||
| Running: <signature> <pubKey> OP_CHECKSIG | Running: <signature> <pubKey> OP_CHECKSIG | ||||||
| Stack: [ True ] | Stack: [ True ] | ||||||
| ``` | ``` | ||||||
| El script ahora finaliza y, si tuvo éxito, la transacción puede volver a pasar el UTXO en cuestión. | El script ahora finaliza y, si tuvo éxito, la transacción puede volver a gastar el UTXO en cuestión. | ||||||
| 
 | 
 | ||||||
| ### Usando btcdeb para un ejemplo P2PKH | ### Use btcdeb para un ejemplo P2PKH | ||||||
| 
 | 
 | ||||||
| Probar transacciones reales de Bitcoin con `btcdeb` es un poco más complicado, porque necesita conocer la clave pública y la firma para que todo funcione, y generar esta última es algo difícil. Sin embargo, una forma de probar las cosas es dejar que Bitcoin haga el trabajo por usted generando una transacción que _desbloquearía_ un UTXO. Eso es lo que ha hecho anteriormente: generar la transacción para gastar el UTXO hizo que `bitcoin-cli` calcule la `<firma> `y la `<pubKey>`. Luego, mira la información de transacción sin procesar del UTXO para aprender el script de bloqueo, incluido el `<pubKeyHash>` | Probar transacciones reales de Bitcoin con `btcdeb` es un poco más complicado, porque necesita conocer la clave pública y la firma para que todo funcione, y generar esta última es algo difícil. Sin embargo, una forma de probar las cosas es dejar que Bitcoin haga el trabajo por usted generando una transacción que _desbloquearía_ un UTXO. Eso es lo que ha hecho anteriormente: generar la transacción para gastar el UTXO hizo que `bitcoin-cli` calcule la `<firma> `y la `<pubKey>`. Luego, mira la información de transacción sin procesar del UTXO para aprender el script de bloqueo, incluido el `<pubKeyHash>` | ||||||
| 
 | 
 | ||||||
| @ -350,7 +350,12 @@ En este punto, todo lo que se requiere es el `OP_CHECKSIG`: | |||||||
| btcdeb> step | btcdeb> step | ||||||
| error: Signature is found in scriptCode | error: Signature is found in scriptCode | ||||||
| ``` | ``` | ||||||
| ### Cómo buscar una clave de pub y una firma a mano | 
 | ||||||
|  | (Desafortunadamente, esta verificación puede o no funcionar en algún momento debido a los caprichos del código Bitcoin Core y btcdeb). | ||||||
|  | 
 | ||||||
|  | Como se muestra, un P2PKH es bastante simple: su protección proviene de la fuerza de su criptografía. | ||||||
|  | 
 | ||||||
|  | ### Cómo buscar una clave pública y una firma a mano | ||||||
| 
 | 
 | ||||||
| ¿Qué pasaría si quisiera generar la información necesaria de la `<signature>` y `<PubKey>` para desbloquear un UTXO usted mismo, sin tener que apoyarse en `bitcoin-cli` para crear una transacción? | ¿Qué pasaría si quisiera generar la información necesaria de la `<signature>` y `<PubKey>` para desbloquear un UTXO usted mismo, sin tener que apoyarse en `bitcoin-cli` para crear una transacción? | ||||||
| 
 | 
 | ||||||
| @ -381,10 +386,10 @@ $ bitcoin-cli getaddressinfo mmX7GUoXq2wVcbnrnFJrGKsGR14fXiGbD9 | |||||||
| ``` | ``` | ||||||
| Sin embargo, descubrir esa firma requiere comprender realmente los detalles de cómo se crean las transacciones de Bitcoin. Así que dejamos eso como un estudio avanzado para el lector: crear una transacción `bitcoin-cli` para "resolver" un UTXO es la mejor solución para eso por el momento. | Sin embargo, descubrir esa firma requiere comprender realmente los detalles de cómo se crean las transacciones de Bitcoin. Así que dejamos eso como un estudio avanzado para el lector: crear una transacción `bitcoin-cli` para "resolver" un UTXO es la mejor solución para eso por el momento. | ||||||
| 
 | 
 | ||||||
| ## Resumen: creación de un script de pago a clave pública hash | ## Resumen: Codificando un pago al hash de una clave pública | ||||||
| 
 | 
 | ||||||
| Enviar a una dirección P2PKH era relativamente fácil cuando solo usaba `bitcoin-cli`. Al examinar el script de Bitcoin subyacente, se ponen al descubierto las funciones criptográficas que estaban implícitas en la financiación de esa transacción: cómo se desbloqueó el UTXO con una firma y una clave pública. | Enviar a una dirección P2PKH era relativamente fácil cuando solo usaba `bitcoin-cli`. Al examinar el script de Bitcoin subyacente, se ponen al descubierto las funciones criptográficas que estaban implícitas en la financiación de esa transacción: cómo se desbloqueó el UTXO con una firma y una clave pública. | ||||||
| 
 | 
 | ||||||
| ## ¿Que sigue? | ## ¿Que sigue? | ||||||
| 
 | 
 | ||||||
| Continúe con "Introducción a los scripts de Bitcoin" con [§9.5: Codificando una P2WPKH](09_5_Codificando_una_P2WPKH.md). | Continúe "Introduciendo los scripts de Bitcoin" con [§9.5: Codificando una P2WPKH](09_5_Codificando_una_P2WPKH.md). | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user