Multisig

Direcciones que exigen más de una firma para gastar

Esta página es un añadido de Eric de Castro a la traducción — no forma parte del contenido original de Greg Walker.

Una dirección normal de Bitcoin queda bloqueada por una clave privada: quien tiene esa clave gasta los fondos con una firma. Sencillo — y peligroso: si esa única clave se roba o se pierde, se acabó.

Una dirección multisig (multifirma) cambia eso: exige más de una firma para poder gastar. Es como una caja fuerte con varias cerraduras, que solo se abre cuando un número combinado de llaves gira al mismo tiempo.

La idea: "m de n"

Todo multisig se describe con dos números, m de n:

El ejemplo más común es 2 de 3: existen 3 claves, y cualesquiera 2 de ellas, juntas, pueden gastar. Ninguna clave por sí sola resuelve nada.

Concepto de multisig 2 de 3: existen tres claves y cualesquiera dos de ellas, juntas, abren el candado; una sola no abre.

Por qué usar multisig

Cómo funciona: el script

A nivel de Bitcoin, un multisig "puro" es un script P2MS (Pay to MultiSig). El candado (el script de bloqueo) lista las claves públicas y dice cuántas firmas son necesarias:

OP_2 <clave_pública_1> <clave_pública_2> <clave_pública_3> OP_3 OP_CHECKMULTISIG

Se lee así: "necesito 2 (OP_2) firmas válidas, entre estas 3 (OP_3) claves". El opcode OP_CHECKMULTISIG es el que hace la verificación.

Script de bloqueo P2MS: OP_2, las tres claves públicas, OP_3 y OP_CHECKMULTISIG — el candado que exige 2 de 3 firmas.

Desbloqueando: las firmas

Para gastar, el script de desbloqueo proporciona m firmas (en nuestro caso, 2). Un detalle importante: las firmas deben venir en el mismo orden en que las claves correspondientes aparecen en el candado — OP_CHECKMULTISIG las comprueba una por una, de izquierda a derecha.

OP_0 <firma_1> <firma_2>

Aquel OP_0 extra al principio no es un error: OP_CHECKMULTISIG tiene un bug histórico (un "off-by-one") que hace que consuma un elemento más de la pila. Ese OP_0 solo es un valor de relleno para alimentar el bug — y se quedó para siempre en el protocolo.

Desbloqueo del multisig 2 de 3: el script de desbloqueo aporta OP_0 y dos firmas, en el orden de las claves, que OP_CHECKMULTISIG valida.

Ve el multisig verificado paso a paso: haz clic en "Ejemplo P2MS" y luego en Paso para seguir la pila mientras OP_CHECKMULTISIG comprueba las firmas.

Intérprete de Script

Ejecute un script paso a paso y vea la pila cambiar con cada opcode. El ScriptSig corre primero, luego el ScriptPubKey.

    Dónde se guarda el script: P2SH, P2WSH y P2TR

    En la práctica, casi nadie usa el P2MS "desnudo". En lugar de eso, el script multisig se envuelve, y lo que se convierte en dirección es solo un resumen (hash) de él. El script completo solo se revela al gastar.

    Envoltorio del multisig: el script de bloqueo se resume con un hash que se convierte en la dirección (P2SH/P2WSH); el script completo solo se revela al gastar. Multisig con Taproot: las claves se suman mediante MuSig2 en una única clave, haciendo que el multisig sea indistinguible de una dirección normal en la blockchain.

    Monta tu propio multisig: elige el m de n, genera claves de ejemplo (o pega las tuyas) y ve el script y las direcciones P2SH y P2WSH generadas de verdad.

    Construtor de Multisig

    Defina cuántas firmas son necesarias (m) y las claves públicas (n). La herramienta monta el script y las direcciones reales.

    Cómo se juntan las firmas (en la práctica)

    En un multisig real, las claves suelen estar en dispositivos diferentes (idealmente air-gapped). Así que las firmas no nacen todas de una vez: se recogen en rondas, usando una PSBT (transacción parcialmente firmada):

    1. La billetera monta la transacción como una PSBT (todavía sin ninguna firma).
    2. El primer dispositivo recibe la PSBT, comprueba los detalles y añade su firma.
    3. La PSBT — ahora con 1 firma — pasa al segundo dispositivo, que añade la suya.
    4. Cuando se juntan las m firmas necesarias, la transacción está completa y puede transmitirse a la red.
    Recogida de firmas en un multisig 2 de 3: la PSBT pasa de un dispositivo air-gapped a otro, cada uno añadiendo su firma, hasta juntar las 2 necesarias y ser transmitida.

    Descriptors: el plano de la billetera

    Para una billetera multisig, guardar solo las semillas no basta: también hace falta saber cómo se combinan las claves (m, n, el tipo de envoltorio y las claves públicas extendidas de cada una). Ese "plano" es el descriptor, algo como:

    wsh(multi(2, xpub_A/…, xpub_B/…, xpub_C/…))

    El error clásico. En un multisig, puedes tener todas las semillas y aun así tener problemas para recuperar los fondos si pierdes el descriptor (o los xpubs de las otras claves). Haz copia de seguridad del descriptor junto con las semillas — e idealmente, prueba la recuperación antes de guardar cantidades serias.

    Montajes comunes

    Cuidados

    Multisig + air-gapped se considera el estándar de oro de la autocustodia: varias firmas, cada clave en un dispositivo que nunca toca internet. Junta lo mejor de las dos ideas — sin punto único de fallo y sin clave expuesta a la red.