Skip to content

Commit d777b64

Browse files
authored
Merge pull request #269 from icculp/spanish-10_3
chapter 10.3 translated, pending review
2 parents 57d46c8 + b59fcca commit d777b64

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# 10.3: Ejecución de un Bitcoin Script con P2SH
2+
3+
Ahora que concoce la teoría y la práctica detrás de las direcciones P2SH, está listo para convertir un script de Bitcoin no estándar en una transacción real. Reutilizaremos la secuencia de comandos de bloqueo simple de [§9.2: Ejecución de un Bitcoin Script](09_2_Running_a_Bitcoin_Script.md), `OP_ADD 99 OP_EQUAL`.
4+
5+
## Crear una Transacción P2SH
6+
7+
Para bloquear una transacción con este script, haga lo siguiente:
8+
9+
1. Serializar `OP_ADD 99 OP_EQUAL`:
10+
1. OP_ADD = 0x93 — una traducción simple de un opcode
11+
2. 99 = 0x01, 0x63 — este opcode empuja un byte a la pila, 99 (hex: 0x63)
12+
* No se preocupe por la conversión endian porque es solo un byte
13+
3. OP_EQUAL = 0x87 — una tradducion simple de un opcode
14+
4. `<serialized99Equal>` = "93016387"
15+
16+
```
17+
$ btcc OP_ADD 99 OP_EQUAL
18+
93016387
19+
```
20+
21+
2. Guarde `<serialized99Equal>` para referencia futura como `redeemScript`.
22+
1. `<redeemScript>` = "93016387"
23+
3. SHA-256 y RIPEMD-160 hash el script serializado.
24+
1. `<hashed99Equal>` = "3f58b4f7b14847a9083694b9b3b52a4cea2569ed"
25+
4. Produzca un script de bloqueo P2SH que incluya el `<hashed99Equal>`.
26+
1. `scriptPubKey` = "a9143f58b4f7b14847a9083694b9b3b52a4cea2569ed87"
27+
28+
Luego puede crear una transacción usando esta `scriptPubKey`, probablemente a través de una API.
29+
30+
## Desbloquear la Transacción P2SH
31+
32+
Para desbloquear esta transacción se requiere que el destinatario produzca un `scriptSig` que anteponga dos constantes que sumen noventa y nueve al script serializado: `1 98 <serialized99Equal>`.
33+
34+
### Ejecute la Primera Ronda de Validación
35+
36+
El proceso de desbloqueo de la transacción P2SH comienza con una primera ronda de validación, que verifica que el script de canje coincida con el valor hash en el script de bloqueo.
37+
38+
Concatenar `scriptSig` y `scriptPubKey` y ejecutarlos, como de costumbre:
39+
```
40+
Script: 1 98 <serialized99Equal> OP_HASH160 <hashed99Equal> OP_EQUAL
41+
Stack: []
42+
43+
Script: 98 <serialized99Equal> OP_HASH160 <hashed99Equal> OP_EQUAL
44+
Stack: [ 1 ]
45+
46+
Script: <serialized99Equal> OP_HASH160 <hashed99Equal> OP_EQUAL
47+
Stack: [ 1 98 ]
48+
49+
Script: OP_HASH160 <hashed99Equal> OP_EQUAL
50+
Stack: [ 1 98 <serialized99Equal> ]
51+
52+
Script: <hashed99Equal> OP_EQUAL
53+
Running: <serialized99Equal> OP_HASH160
54+
Stack: [ 1 98 <hashed99Equal> ]
55+
56+
Script: OP_EQUAL
57+
Stack: [ 1 98 <hashed99Equal> <hashed99Equal> ]
58+
59+
Script:
60+
Running: <hashed99Equal> <hashed99Equal> OP_EQUAL
61+
Stack: [ 1 98 True ]
62+
```
63+
La secuencia de comandos termina con un `True` en la parte superior de la pila, por lo que tiene éxito ... a pesar de que hay otros cruft debajo de él.
64+
65+
Sin embargo, debido a que se trataba de un script P2SH, la ejecución no se realiza.
66+
67+
### Ejecute la Segunda Ronda de Validación
68+
69+
Para la segunda ronda de validación, verifique que los valores en el script de desbloqueo satisfagan el `redeemScript`: deserialice el `redeemScript` ("93016387" = "OP_ADD 99 OP_EQUAL"), luego ejecútelo usando los elementos del `scriptSig` antes del script serializado:
70+
71+
```
72+
Script: 1 98 OP_ADD 99 OP_EQUAL
73+
Stack: [ ]
74+
75+
Script: 98 OP_ADD 99 OP_EQUAL
76+
Stack: [ 1 ]
77+
78+
Script: OP_ADD 99 OP_EQUAL
79+
Stack: [ 1 98 ]
80+
81+
Script: 99 OP_EQUAL
82+
Running: 1 98 OP_ADD
83+
Stack: [ 99 ]
84+
85+
Script: OP_EQUAL
86+
Stack: [ 99 99 ]
87+
88+
Script:
89+
Running: 99 99 OP_EQUAL
90+
Stack: [ True ]
91+
```
92+
Con esa segunda validación _también_ verdadera, el UTXO ahora se puede gastar!
93+
94+
## Resumen: Creación de un Bitcoin Script con P2SH
95+
96+
Una vez que conozca la técnica de construcción de P2SH, cualquier script se puede incrustar en una transacción de Bitcoin; y una vez que comprenda la técnica de validación de P2SH, es fácil ejecutar los scripts en dos rondas.
97+
98+
## Que Sigue?
99+
100+
Continúe "Incrustando Bitcoin Scripts" con [§10.4: Scripting a Multisig](10_4_Scripting_a_Multisig.md).

0 commit comments

Comments
 (0)