Skip to content

Commit 3a61752

Browse files
authored
Update 13_2_Escribiendo_Scripts_Multifirma_Complejos.md
1 parent 816dedf commit 3a61752

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

es/13_2_Escribiendo_Scripts_Multifirma_Complejos.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
# 13.2: Escritura de scripts complejos multifirma
22

3-
Hasta la fecha, las pruebas múltiples descritas en estos documentos han sido completamente simples, de la forma m-de-n o n-de-n. Sin embargo, es posible que desee múltiples funciones más complejas, en las que los cofirmantes varían o en las que pueden estar disponibles diferentes opciones con el tiempo.
3+
Hasta la fecha, las multifirma descritas en estos documentos han sido completamente simples, de la forma m-de-n o n-de-n. Sin embargo, es posible que desee transacciones multifirmas más complejas, en las que los cofirmantes varían o en las que pueden estar disponibles diferentes opciones con el tiempo.
44

55
## Escriba una variable multifirma
66

77
Una firma múltiple variable requiere que firmen diferentes números de personas dependiendo de quién esté firmando.
88

9-
### Escribir una firma múltiple con un solo firmante o cofirmantes
9+
### Escribir una multifirma con un solo firmante o cofirmantes
1010

1111
Imagine una corporación donde el presidente o dos de cada tres vicepresidentes pudieran estar de acuerdo con el uso de los fondos.
1212

1313
Puede escribir esto creando una declaración `IF` /` ELSE` / `ENDIF` que tenga dos bloques, uno para el presidente y su firma uno de uno y otro para los vicepresidentes y sus dos de tres firmas. Luego puede determinar qué bloque usar en función de cuántas firmas hay en el script de desbloqueo. El uso de `OP_DEPTH 1 OP_EQUAL` le dirá si hay un elemento en la pila, y luego continuará desde allí.
1414

1515
El script de bloqueo completo sería `OP_DEPTH 1 OP_EQUAL IF <pubKeyPres> OP_CHECKSIGNATURE ELSE 2 <pubKeyVPA> <pubKeyVPB> <pubKeyVPC> 3 OP_CHECKMULTISIG ENDIF`
1616

17-
Si lo dirige el presidente, se vería así:
17+
Si lo ejecuta el presidente, se vería así:
1818

1919
```
2020
Script: <sigPres> OP_DEPTH 1 OP_EQUAL IF <pubKeyPres> OP_CHECKSIGNATURE ELSE 2 <pubKeyVPA> <pubKeyVPB> <pubKeyVPC> 3 OP_CHECKMULTISIG ENDIF
@@ -35,7 +35,7 @@ Running: 1 1 OP_EQUAL
3535
Stack: [ <sigPres> True ]
3636
```
3737

38-
Debido a que el resultado es "Verdadero", la secuencia de comandos ahora se contrae en la declaración "SI":
38+
Debido a que el resultado es "Verdadero", la secuencia de comandos ahora se contrae en la declaración `IF`:
3939

4040
```
4141
Script: <pubKeyPres> OP_CHECKSIGNATURE
@@ -50,7 +50,7 @@ Running: <sigPres> <pubKeyPres> OP_CHECKSIGNATURE
5050
Stack: [ True ]
5151
```
5252

53-
Si lo dirigen dos vicepresidentes, se vería así:
53+
Si lo ejecutan dos vicepresidentes, se vería así:
5454

5555
```
5656
Script: 0 <sigVPA> <sigVPB> OP_DEPTH 1 OP_EQUAL IF <pubKeyPres> OP_CHECKSIGNATURE ELSE 2 <pubKeyVPA> <pubKeyVPB> <pubKeyVPC> 3 OP_CHECKMULTISIG ENDIF
@@ -71,7 +71,7 @@ Running: 3 1 OP_EQUAL
7171
Stack: [ 0 <sigVPA> <sigVPB> False ]
7272
```
7373

74-
Debido a que el resultado es "False", la secuencia de comandos ahora se contrae en la declaración "ELSE":
74+
Debido a que el resultado es `False`, la secuencia de comandos ahora se contrae en la declaración "ELSE":
7575

7676
```
7777
Script: 2 <pubKeyVPA> <pubKeyVPB> <pubKeyVPC> 3 OP_CHECKMULTISIG
@@ -87,14 +87,14 @@ Stack: [ ]
8787
```
8888

8989
Puede notar que la firma del presidente solo usa un simple `OP_CHECKSIGNATURE` en lugar del código más complejo que generalmente se requiere para un P2PKH.
90-
Podrían salirse con la suya al incluir la clave pública en el script de bloqueo, obviando el galimatías habitual, porque está codificado y no se revelará (a través del `redeemScript`) hasta que se desbloquee la transacción.
90+
Podrían salirse con la suya al incluir la clave pública en el script de bloqueo, obviando las galimatías habituales, porque está codificado y no se revelará (a través del `redeemScript`) hasta que se desbloquee la transacción.
9191
Esto también permite que todos los posibles firmantes firmen utilizando la misma metodología.
9292

93-
El único problema posible es si el presidente está distraído y accidentalmente firma una transacción con uno de sus vicepresidentes, porque recuerda que se trata de una firma múltiple de 2 de 3. Una opción es decidir que es una condición de falla aceptable, porque el presidente está usando la multifirma incorrectamente. Otra opción es convertir la multifirma 2 de 3 en una 2 de 4, en caso de que el presidente no tolere la falla: `OP_DEPTH 1 OP_EQUAL IF <pubKeyPres> OP_CHECKSIGNATURE ELSE 2 <pubKeyVPA> <pubKeyVPB> < pubKeyVPC> <pubKeyPres> 4 OP_CHECKMULTISIG ENDIF`. Esto le permitiría al presidente firmar por error con cualquier vicepresidente, pero no afectaría las cosas si dos vicepresidentes quisieran firmar (correctamente).
93+
El único problema posible es si el presidente está distraído y accidentalmente firma una transacción con uno de sus vicepresidentes, porque este recuerda que se trata de una multifirma 2 de 3. Una opción es decidir que es una condición de falla aceptable, porque el presidente está usando la multifirma incorrectamente. Otra opción es convertir la multifirma 2 de 3 en una 2 de 4, en caso de que el presidente no tolere la falla: `OP_DEPTH 1 OP_EQUAL IF <pubKeyPres> OP_CHECKSIGNATURE ELSE 2 <pubKeyVPA> <pubKeyVPB> < pubKeyVPC> <pubKeyPres> 4 OP_CHECKMULTISIG ENDIF`. Esto le permitiría al presidente firmar por error con cualquier vicepresidente, pero no afectaría las cosas si dos vicepresidentes quisieran firmar (correctamente).
9494

9595
### Escribe una firma múltiple con un firmante obligatorio
9696

97-
Otra posibilidad multisig implica tener una multifirma m-of-n donde se requiere uno de los firmantes. Por lo general, esto se puede gestionar dividiendo la multifirma en varios m de n-1. Por ejemplo, una firma múltiple de 2 de 3 en la que se requiere uno de los firmantes sería en realidad dos firmas múltiples de 2 de 2, cada una con el firmante requerido.
97+
Otra posibilidad de las multifirmas implica tener una multifirma m-of-n donde se requiere uno de los firmantes. Por lo general, esto se puede gestionar dividiendo la multifirma en varios m de n-1. Por ejemplo, una firma múltiple de 2 de 3 en la que se requiere uno de los firmantes sería en realidad dos firmas múltiples de 2 de 2, cada una con el firmante requerido.
9898

9999
Aquí hay una forma sencilla de escribir eso:
100100

@@ -113,7 +113,7 @@ Primero, el script verificaría las firmas con `<pubKeyRequired> <pubKeyA>`. Si
113113

114114
El resultado del `OP_CHECKMULTISIG` final que se ejecutó se dejará en la parte superior de la pila (aunque habrá cruft debajo si el primero tuvo éxito).
115115

116-
## Escribir una firma múltiple de fideicomiso
116+
## Escriba un fideicomiso multifirma
117117

118118
Hemos hablado mucho sobre fideicomisos. Multifirmas complejas combinadas con bloqueos de tiempo ofrecen una forma automatizada de crearlas de manera robusta.
119119

@@ -141,7 +141,7 @@ ENDIF
141141

142142
Primero, prueba una firma para el comprador y el agente de custodia, luego una firma para el vendedor y el agente de custodia. Si ambos fallan y han pasado 30 días, también permite una firma para el comprador y el vendedor.
143143

144-
### Escriba una firma múltiple de fideicomiso centrada en el comprador
144+
### Escriba una fideicomiso multifirma centrado en el comprador
145145

146146
[BIP 112](https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki#Escrow_with_Timeout) ofrece un ejemplo diferente de este tipo de depósito en garantía que no tiene las protecciones adicionales para evitar que se pierda el agente de depósito en garantía, pero que le da a Alice el control total si falla el depósito en garantía.
147147

@@ -163,12 +163,12 @@ Tenga en cuenta que esta secuencia de comandos requiere que se pase un "Verdader
163163

164164
Al principio, se permitiría el siguiente `sigScript`:` 0 <signer1> <signer2> True`. Después de 30 días, Alice podría producir un `sigScript` como este:` <sigA> False`.
165165

166-
## Resumen: escritura de scripts complejos multifirma
166+
## Resumen: Escribiendo scripts multifirma complejos
167167

168-
Por lo general, se pueden crear firmas múltiples más complejas combinando firmas o firmas múltiples con condicionales y pruebas. Las multifirmas resultantes pueden ser variables, requiriendo diferentes números de firmantes en función de quiénes son y cuándo están firmando.
168+
Por lo general, se pueden crear multifirmas más complejas combinando firmas o multifirmas con condicionales y pruebas. Las multifirmas resultantes pueden ser variables, requiriendo diferentes números de firmantes en función de quiénes son y cuándo están firmando.
169169

170170
> :fire: ***¿Cuál es el poder de los scripts multisig complejos?*** Más allá de todo lo que hemos visto hasta la fecha, los scripts multifirma complejos son contratos verdaderamente inteligentes. Pueden ser muy precisos sobre quién puede firmar y cuándo. Se pueden admitir corporaciones multinivel, asociaciones y depósitos en garantía. El uso de otras funciones poderosas como los bloqueos de tiempo puede proteger aún más estos fondos, lo que permite que se liberen o incluso se devuelvan en determinados momentos.
171171
172172
## ¿Que sigue?
173173

174-
Continúe "Diseñando scripts de Bitcoin reales" con [§13.3: Empoderamiento de Bitcoin con scripts](13_3_Potenciando_Bitcoin_con_Scripts.md).
174+
Continúe "Diseñando scripts de Bitcoin reales" con [§13.3: Potenciando Bitcoin con scripts](13_3_Potenciando_Bitcoin_con_Scripts.md).

0 commit comments

Comments
 (0)