Supongamos que tiene una empresa que tiene tres líderes principales llamados A, B y C, además la empresa tiene 5 accionistas llamados S1 a S5. La regla de decisión para gastar cualquier moneda de la dirección de la empresa es presentar 1 de la firma de los principales líderes y otras tres firmas de los accionistas. Por ejemplo, el siguiente script de desbloqueo funciona (ya que contiene uno de los líderes):
<sig_S1> <sig_A> <sig_S2> <sig_S5>
pero no este:
<sig_S1> <sig_S4> <sig_S3> <sig_S5>
¿Cómo puedo comprobar si entre las multifirmas existe una firma que corresponde a una clave pública específica, en este caso, aprenderé que la firma de un líder seguramente existe? por ejemplo, si nos enteramos de 5 firmas siempre que exista la firma de A, y el código de bloqueo se verá de la siguiente manera:
(3 times duplicate of all signatures provided)
(check for the existence of A in signatures)
OP_IF
4 <pub_A> <pub_S1> <pub_S2> ... <pub_S5> 5 OP_CHECKMULTISIG
OP_ENDIF
(the same as above for B)
(the same as above for C)
Creo que podría funcionar con un RedeemScript como este (no he probado los scripts):
OP_IF
3 <pub_A><pub_B><pub_C> 3 OP_CheckMultiSig
OP_ELSE
1 <pub_A><pub_B><pub_C> 3 OP_CheckMultiSigVerify
4 <pub_S1><pub_S2><pub_S3><pub_S4><pub_S5> 5 OP_CheckMultiSig
Explicación: El script de redención tiene dos partes:
- OP_IF
: esta parte podría eliminarse, está ahí para permitir que los "líderes" gasten los fondos sin necesidad de las firmas de los "accionistas". Dependiendo del propósito, podría eliminarse (elimine las primeras 3 líneas de RedeemScript y la firma no requiere OP_TRUE/OP_FALSE
).
- OP_ELSE
: esto proporciona lo que necesita con 2 operaciones de firma múltiple. El primero requiere al menos una firma de 3 firmas de "líderes" y realiza una verificación OP_CheckMultiSig ( no queda verdadero/falso en la pila después de la ejecución) y el segundo requiere 4 de 5 firmas de "accionistas".
Para gastar, se debe proporcionar uno de estos scripts de firma ( OP_0
es obligatorio debido al error en los CheckMultiSig
OP):
OP_0 <sig_A><sig_B><sig_C> OP_TRUE <RedeemScript>
o
OP_0 <sig_S1><sig_S2><sig_S4><sig_S5> OP_0 <sig_A or B or C> OP_FALSE <RedeemScript>
parsa rahimi
Entusiasta de la codificación
parsa rahimi