Firma de transacciones multisig vs multientrada

Digamos que tenemos una dirección multisig 2 de 2 desde la que queremos gastar, por lo que la transacción debe estar firmada por ambas claves privadas.

Ahora digamos que tenemos una transacción con dos entradas, entonces, una vez más, la transacción debe estar firmada por ambas claves privadas de las entradas.

Entonces, ¿cómo difieren estos dos en la implementación? ¿Incluso a nivel conceptual? ¿Estos procedimientos son los mismos?

¿Las dos entradas se gastan desde la dirección multisig?

Respuestas (2)

Son cosas bastante diferentes y representan casos de uso muy diferentes.

Imagina que eres el jefe del comité de planificación de la fiesta y tienes dos trabajadores (A y B) para ayudarte a comprar artículos para la fiesta. Te dan 1 bitcoin para financiar la fiesta.

Tienes dos opciones.

  • Puede dividir los fondos entre A y B. Por ejemplo, podría dar a A y B 0,5 bitcoins cada uno en dos salidas separadas. Si necesitan comprar algo que valga más de 0,5 bitcoins, deberán combinar sus salidas como entradas en la misma transacción. Sin embargo, para artículos de menos de 0,5 bitcoins, A y B podrán actuar de forma independiente para comprar artículos (¡o robar los fondos!).
  • Puede dar conjuntamente a A y B el 1 bitcoin en una dirección multisig de 2 de 2. Ahora, para cualquier compra, deberán estar de acuerdo para gastar de los fondos del comité del partido.

Para resumir:

Gastar una salida multisig 2/2:

Pasa un solo UTXO previamente y requiere dos llaves para firmar.

Gastar múltiples entradas:

Gasta varios UTXO anteriores y requiere que cada entrada se firme por separado.


Con respecto a la firma de este tipo de transacciones, deben hacerse de manera ligeramente diferente.

Al firmar una entrada que gasta una salida multisig de 2/2, la transacción se firma con las dos claves y se codifican en la misma scriptSigentrada. La transacción solo se vuelve válida cuando ambas claves se han firmado con firmas válidas.

Por ejemplo, supongamos que el scriptPubKey de la salida multisig 2/2 anterior es:

OP_2 {pubkey1} {pubkey2} OP_2 OP_CHECKMULTISIG

El scriptSig para gastar esa salida sería:

{pubkey1's signature} {pubkey2's signature}

Observe cómo están en el scriptSig de la misma entrada.

Al firmar dos entradas diferentes, suponiendo que sus scriptPubKeys anteriores se vean así:

{pubkey1} OP_CHECKSIG

y

{pubkey2} OP_CHECKSIG

Entonces las dos entradas tendrían scripSigs en este formato (respectivamente):

{pubkey1 signature}

y

{pubkey2 signature}

NOTA: He usado scriptPubKey's simples para tratar de ser claro acerca de cómo funciona en general, pero probablemente debería usar Pay-to-script-hash multisig address y pay-to-pubkey-hash en lugar de raw multisig y pay -to-pubkey scriptPubKeys que usé en este ejemplo.

Esto en realidad no era la respuesta que estoy buscando. En el nivel de implementación, ¿en qué se diferencian estos dos: 1) requiere dos claves para firmar 2) requiere que cada entrada se firme por separado. Lo que quiero decir es que al final hay una transacción en bruto sin firmar que debe firmarse, ¿cómo diferiría el procedimiento de firma entre estos dos escenarios?
@Shayanbahal, ¿eso lo aclara?
Eso fue muy bueno, gracias. Solo con respecto a la última parte (NOTA), no tengo muy claro lo que quiso decir con "probablemente debería usar Pay-to-script-hash multisig address y pay-to-pubkey-hash en lugar de raw multisig y pay- to-pubkey scriptPubKeys que usé en este ejemplo".
@Shayanbahal, la respuesta a todas esas cosas probablemente esté fuera del alcance de esta pregunta. Esta respuesta debería ayudar a explicar la diferencia entre raw multisig y P2SH multisig. La documentación para desarrolladores de bitcoin también es útil. Y asegúrese de marcar las respuestas a sus preguntas con la marca de verificación verde. :)

La transacción de a Multisig Bitcoin address(que comienza con 3) requiere la firma de N de M

  • M representa el número de partes autorizadas para desbloquear UTXO (entrada de transacción). En el caso de 2-2, ambas firmas de ambas partes deben estar involucradas para crear una transacción válida
  • N es el número de propietarios (conocidos como threshold) cuya firma digital se requiere para firmar una transacción válida

Sin embargo, Multi input transactiones un tipo de transacción donde la entrada involucra UTXO de 1 o más direcciones de bitcoin estándar o multisig.

Pueden ocurrir los siguientes estados

  1. La dirección estándar de Bitcoin firma la transacción con 1 entrada

    • requiere una firma digital con clave privada válida
  2. La dirección estándar de Bitcoin firma la transacción con más de 1 entrada (transacción de entrada múltiple)

    • requiere firma digital para cada UTXO con clave privada válida
  3. La dirección Multisig Bitcoin firma la transacción con 1 entrada

    • requiere una firma digital del umbral
  4. La dirección Multisig Bitcoin firma la transacción con más de 1 entrada (transacción de entrada múltiple)

    • requiere firma digital para cada UTXO por umbral

Hasta este punto, ALL UTXOpertenecen al firmante de la transacción. Ahora las transacciones contendrán UTXO para más de 1 dirección de Bitcoin.

  1. Dos direcciones de Bitcoin estándar firman una transacción con 1 UTXO para cada una de ellas (transacción de entrada múltiple)

    • requiere firma digital para cada UTXO por clave privada válida correspondiente

Ex. La transacción involucra 2 UTXO para 2 direcciones Bitcoin estándar separadas, para crear una transacción válida, la dirección A debe firmar UTXO (A) y la dirección B debe firmar UTXO (B). La transacción ahora puede tener 1 salida, lo que hace que el costo de las tarifas sea mucho más bajo que en el escenario, donde para cada dirección de Bitcoin se crea una transacción separada.

  1. Dos direcciones Multisig Bitcoin firman una transacción con 1 UTXO para cada una de ellas (transacción multientrada)

    • requiere firma digital para cada UTXO por clave privada válida correspondiente de umbral

Ex. La transacción involucra 2 UTXO para 2 direcciones de Bitcoin Multisig separadas, para crear una transacción válida, el umbral de la dirección A tiene que firmar UTXO (A) y el umbral de la dirección B firmar UTXO (B).

  1. Opción 5 y 6 combinadas.

Ex. La transacción se compone de UTXO para 1 o más direcciones de Bitcoin estándar y 1 o más direcciones de Bitcoin Multisig.