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?
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.
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 scriptSig
entrada. 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.
La transacción de a Multisig Bitcoin address
(que comienza con 3) requiere la firma de N de M
threshold
) cuya firma digital se requiere para firmar una transacción válidaSin embargo, Multi input transaction
es 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
La dirección estándar de Bitcoin firma la transacción con 1 entrada
La dirección estándar de Bitcoin firma la transacción con más de 1 entrada (transacción de entrada múltiple)
La dirección Multisig Bitcoin firma la transacción con 1 entrada
La dirección Multisig Bitcoin firma la transacción con más de 1 entrada (transacción de entrada múltiple)
Hasta este punto, ALL UTXO
pertenecen al firmante de la transacción. Ahora las transacciones contendrán UTXO para más de 1 dirección de Bitcoin.
Dos direcciones de Bitcoin estándar firman una transacción con 1 UTXO para cada una de ellas (transacción de entrada múltiple)
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.
Dos direcciones Multisig Bitcoin firman una transacción con 1 UTXO para cada una de ellas (transacción multientrada)
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).
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.
Nick ODell
codificador morse