Segregated Witness (en español Testigo Segregado), popularmente conocido como SegWit, es una característica y formato de transacción propuesto por Blockstream y Bitcoin Core para Bitcoin (BTC) activado mediante un Soft Fork Activado por el Usuario el 24 de agosto de 2017[1][2] y adoptado también por las criptomonedas alternativas Litecoin, DigiByte, Bitcore y Vertcoin.[3]
Fue presentado bajo el nombre formal de "Segregated Witness (Capa de Consenso)" a través de la "Propuesta de mejora de Bitcoin BIP141".[4]
Su propósito principal es solucionar el problema de maleabilidad de transacciones[5] y mitigar el impacto negativo del límite máximo del tamaño de los bloques en la velocidad del procesamiento de las transacciones de la red de Bitcoin (BTC). Esto lo aborda dividiendo la transacción en dos segmentos, quitando la firma de desbloqueo (la cual denomina datos del "testigo") de su lugar original y añadiéndola como una estructura separada al final.[6] Adicionalmente, contabiliza el restante original del segmento de datos normalmente, mientras que el segmento del "testigo" lo contabiliza como una cuarta parte de su tamaño real.
Bitcoin asienta sus transacciones en un registro público, descentralizado y transparente que se actualiza añadiendo bloques de datos vinculados de forma retroactiva mediante el uso de hashes criptográficos.[7] Cada bloque de datos almacena información sobre quienes envían y reciben bitcoins, así como la firma criptográfica que aprueba cada transacción. Si bien originalmente, no existía un tamaño máximo de los bloques, debido a sospechas de que un atacante podría intentar ejecutar un ataque DDoS[8] Satoshi Nakamoto decidió agregar un límite máximo de 1 MB en el tamaño de los bloques como medida temporal de prevención.[9] El objetivo de esto era que si un atacante intentaba saturar la red, su acción sería detectado instantáneamente y su ataque sería rechazado.
Como consecuencia de esta característica, a medida que fue aumentando la demanda de espacio en cadena, el mismo comenzó a hacerse escaso debido a dicha limitación.
Según la perspectiva de Bitcoin Core, el diseño actual de la blockchain de Bitcoin tiene dos principales deficiencias:
SegWit es presentado por Bitcoin Core como un aumento "de facto" del tamaño de los bloques debido a que cambia la definición del tamaño para medirlo como en términos de millón de unidades en lugar de en bytes. Los datos de firma del testigo serían separados del registro del árbol de Merkle, el cual contiene información sobre quién está enviando o recibiendo los bitcoines, y se moverían hasta el final. Además, cada byte de ellos se contarían como si fuesen un cuarto de una unidad. El efecto general de esto sería cambiar el tamaño promedio del bloque de 1 MB a aproximadamente 1.8 MB.[12][13] También aborda el problema de maleabilidad de las firmas, al moverlas fuera de los datos de la transacción y haciéndolas imposibles de cambiar, la identificación de la transacción ya no es maleable.[14] Esto hace que Bitcoin sea más seguro de usar, lo cual mejoraría su compatibilidad con Lightning Network (un sistema que permite procesar micro-pagos de forma casi gratuita e instantánea que sólo requeriría usar la blockchain al principio y al final de su ejecución)[15][16] lo que sería ligeramente arriesgado mientras el problema de maleabilidad exista.[17] Y adicionalmente, propone mantener una importante compatibilidad con aquellos nodos que ejecuten versiones no actualizadas del software.
Según la especificación BIP141 publicada en el repositorio de Github de Bitcoin Core por Eric Lombrozo, Johnson Lau y Pieter Wuille, SegWit fue diseñado para activarse el 15 de noviembre de 2017 mediante el estándar BIP 9, el cual permite señalizar apoyo a una propuesta de actualización de la red a través de los escabezados de los bloques minados en la cadena de bloques.[18]
Debido a una controversia sobre el escalado de Bitcoin, inicialmente no había certeza sobre si el uso de BIP141 sería suficiente para concretar la activación de SegWit en la red Bitcoin.
El 25 de febrero de 2017 un desarrollador identificado bajo el seudónimo de Shaolinfry propuso a través de la lista de correo bitcoin-dev [19] un esquema alternativo denominado BIP148 o UASF.
Este esquema consistiría en que a partir del 1 de agosto de ese mismo año los nodos que lo ejecutasen rechazarían cualquier bloque que no incluyese una señalización en apoyo a la activación de SegWit vía BIP9.[20]
This BIP will be active between midnight August 1st 2017 (epoch time 1501545600) and midnight November 15th 2017 (epoch time 1510704000) if the existing segwit deployment is not locked-in or activated before epoch time 1501545600. This BIP will cease to be active when segwit is locked-in. While this BIP is active, all blocks must set the nVersion header top 3 bits to 001 together with bit field (1<<1) (according to the existing segwit deployment). Blocks that do not signal as required will be rejected.Shaolin Fry
Algunos desarrolladores como Gregory Maxwell, fueron críticos con la característica indicando que podría ocasionar el desperdició de recursos y la división de la cadena afectando la seguridad de la blockchain.[20]
El 23 de mayo de 2017 un grupo considerable de empresas identificadas como el Digital Currency Group (no confundir con la Digital Currency Initiative del Laboratorio de medios de comunicación del MIT) publicaron un acuerdo llamado Bitcoin Scaling Agreement at Consensus 2017 (posteriormente conocido simplemente como Acuerdo de Nueva York o NYA)[21] en apoyo a SegWit2Mb (más tarde conocida simplemente como SegWit2x), una propuesta que ofrecía la activación de SegWit y el aumento posterior del tamaño de los bloques a 2 MB por medio de una bifurcación dura en los próximos seis meses (alrededor del 23 de mayo de 2017).[22][23]
El 19 de junio de 2017 la propuesta de SegWit2x ya contaba con un apoyo de al menos 79,9% del poder minero,[24] sin embargo la misma fue controvertida debido a que el desarrollo del proyecto estaba limitado a un grupo cerrado de desarrolladores.
En junio de 2017, el debate en torno a SegWit se complicó aún más con afirmaciones de que podría violar patentes presentadas ante la USIPO.[25]
A mediados de julio de 2017 se hizo evidente que los mineros apoyaban la implementación de Segwit como parte de un acuerdo antes del UASF BIP148 del 1 de agosto de 2017 que intentaba evitar una eventual bifurcación de la red.[26][27][28]
El 21 de julio de 2017, los mineros de Bitcoin realizaron una actualización de software denominada BIP91,[29] que establecía que SegWit se activaría cuando fuese minado el bloque número 477 120.[30] El 8 de agosto de 2017 se alcanzó otro hito cuando el 100 % de los grupos mineros indicaron compatibilidad con SegWit, aunque esta no se activaría hasta el 21 de agosto como mínimo (después de lo cual los mineros comenzarían a rechazar bloques que no incluyesen transacciones SegWit).[31]
El 23 de agosto de 2017, es activado oficialmente Segwit durante el minado del bloque 481822, con un 99.95% de apoyo en la red.
Segregated Witness fue activado oficialmente en agosto de 2017.[1][32]
Durante la primera semana de octubre, la proporción de transacciones de red que utilizaban SegWit aumentó de 7 % a 10 %, indicando un aumento más grande en índice de uso.[33]
El 8 de noviembre de 2017 los desarrolladores de SegWit2x anunciaron la cancelación de la bifurcación dura prevista para el 16 de noviembre de 2017 debido a la falta de consenso.[34][35]
A partir de febrero de 2018, las transacciones de SegWit superan el 30 %.[36]
<ref>
definida en las <references>
con nombre «Scaling Solution» no se utiliza en el texto anterior.