Glosario / Direcciones y claves
SegWit anidado
También se conoce como Legacy SegWit, P2SH-P2WPKH o Dirección que empieza por 3.
- ¿Qué es el SegWit anidado?
- El SegWit anidado envuelve un hash de clave de SegWit nativo en una dirección P2SH y gana compatibilidad con el software que no podía leer cadenas de caracteres bc1, a cambio de unos 23 vbytes más por entrada.
Se especifica en el BIP-49.
En 2017 casi ningún exchange podía interpretar una dirección bech32, así que BIP-141 permitió alojar un programa de testigo dentro de una salida pay to script hash corriente. El resultado parece, para un remitente, cualquier otra dirección que empiece por 3, y gastarlo ocupa unos 91 vbytes, frente a 148 de una entrada heredada (legacy) y 68 de una entrada bc1q simple. Era un puente, y el paso lleva años abierto.
Cómo funciona
Una salida SegWit anidada es una salida P2SH sin nada especial: OP_HASH160, un hash de 20 bytes, OP_EQUAL. Lo inusual es lo que hay detrás del hash. El script de canje no es realmente un script, sino el propio programa de testigo de 22 bytes: el byte de versión 0x00 seguido de una inserción de datos con el HASH160 de 20 bytes de su clave pública comprimida.
Por eso el gasto combina los dos mundos. El scriptSig contiene exactamente un elemento, ese programa de 22 bytes, que satisface la comprobación P2SH. La firma y la clave pública van al testigo, donde obtienen el descuento. Si se suma el opcode (código de operación) de la inserción de datos, el scriptSig aporta 23 bytes que no son de testigo y que pesan 92 unidades, y 92 dividido entre cuatro es toda la penalización de 23 vbytes frente a SegWit nativo.
Las billeteras guardan estas direcciones en su propia rama. BIP-49 asigna la ruta de derivación m/49'/0'/0', y SLIP-132 dio a esa rama el prefijo de clave extendida ypub, que es lo que hace que al restaurar un respaldo aparezcan direcciones que empiezan por 3 en lugar de direcciones bc1q. Equivocarse de prefijo durante una restauración muestra una billetera vacía aunque la semilla sea correcta.
Dónde aparece
Cualquier pantalla de depósito o de retiro que ofrezca "SegWit" y "Native SegWit" como opciones separadas está ofreciendo anidado y nativo, en ese orden. Las pantallas de configuración de cuentas de Ledger y Trezor hacen lo mismo. Los exchanges que adoptaron pronto SegWit tomaron la forma anidada como estándar y muchos nunca cambiaron, así que una gran cantidad de almacenamiento en frío con custodia sigue detrás de direcciones que empiezan por 3.
Pasar a SegWit nativo es una transacción on-chain, no un cambio de ajustes, porque los dos formatos proceden de ramas distintas de la misma semilla. Hágalo cuando las comisiones estén bajas, envíe primero un pequeño monto de prueba y compruebe después que su billetera muestra la cuenta m/84'/0'/0'. No hay ninguna diferencia de seguridad entre los dos, así que nada es urgente. La disyuntiva es solo de comisiones frente a compatibilidad, y la compatibilidad dejó de escasear.
SegWit anidado frente a dirección P2SH
El SegWit anidado es un tipo de dirección P2SH, y on-chain es imposible distinguir uno de otro hasta que se produce un gasto. Una cadena de caracteres que empieza por 3 puede fijar un programa de testigo de 22 bytes, un script de canje multisig 2 de 3 o una cláusula de recuperación con bloqueo temporal (timelock), y el UTXO no revela nada. Antes, esa opacidad contaba como una ventaja de privacidad. En la práctica, hoy significa que un explorador de bloques no puede decirle qué tiene, y que un remitente no puede advertirle de que vaciar la dirección costará más de lo que costaría vaciar una dirección bc1q.