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:
- n = cuántas claves existen en total.
- m = cuántas firmas son necesarias para gastar.
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.
Por qué usar multisig
- Sin punto único de fallo. En un 2 de 3, un atacante que robe una clave aún no puede tocar tus bitcoins: faltan firmas. Y si pierdes una clave, las otras dos todavía pueden gastar.
- Distribuir el riesgo. Puedes guardar cada clave en un lugar diferente (casa, oficina, casa de un familiar), en dispositivos air-gapped distintos. Robarlo todo de una vez se vuelve mucho más difícil.
- Herencia. Un 2 de 3 puede dejar una clave con un familiar o un abogado: tú solo gastas en el día a día (tus 2 claves), pero si te pasa algo, el heredero + una clave de respaldo recuperan los fondos.
- Fondos compartidos. Una empresa puede exigir 2 de 3 socios para mover la caja; una pareja, 2 de 2 para gastos conjuntos.
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.
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.
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.
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.
- P2SH (direcciones que empiezan con 3). La forma clásica: la dirección es el hash del script multisig. Cuando gastas, presentas el script completo (probando que coincide con el hash) + las firmas.
- P2WSH (direcciones bc1q…). La versión SegWit de la anterior: misma idea, pero el script y las firmas van en la witness, lo que reduce la comisión.
- P2TR (direcciones bc1p…, Taproot). Lo más moderno. Con MuSig2, las varias claves pueden sumarse en una única clave: el multisig queda indistinguible de una dirección normal on-chain — más privado y más barato. (También puedes usar la "ruta de script" para esquemas m de n más flexibles.)
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.
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):
- La billetera monta la transacción como una PSBT (todavía sin ninguna firma).
- El primer dispositivo recibe la PSBT, comprueba los detalles y añade su firma.
- La PSBT — ahora con 1 firma — pasa al segundo dispositivo, que añade la suya.
- Cuando se juntan las m firmas necesarias, la transacción está completa y puede transmitirse a la red.
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
- 2 de 3 — el favorito de la autocustodia. Ej.: 2 claves contigo (en lugares distintos) y 1 de respaldo con un servicio de recuperación o un familiar.
- 3 de 5 — para cantidades mayores o grupos; tolera perder hasta 2 claves.
- 2 de 2 — gastos compartidos (una pareja, dos socios). Ojo: si pierdes una, se bloquea todo — así que ten un plan de respaldo.
Cuidados
- Más complejidad. Más claves, más copias de seguridad, más pasos para firmar. Vale la pena para valores altos; quizá sea demasiado para el cambio del día a día.
- Copia de seguridad del descriptor + todos los xpubs (no solo las semillas), como ya avisamos.
- Coordinación. Firmar exige reunir los dispositivos/personas. Es una fricción sana — pero sigue siendo fricción.
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.