Cadena de bloques de Bitcoin: rendimiento y escalabilidad
Bitcoin es un sistema de efectivo electrónico descentralizado que hace posible el pago entre pares sin pasar por un intermediario. El software original de Bitcoin fue desarrollado por Satoshi Nakamoto y lanzado bajo la licencia MIT en 2009, después del informe técnico de Bitcoin, Bitcoin: Un sistema electrónico de efectivo entre pares.
Bitcoin es la primera implementación exitosa de una criptomoneda distribuida. Dieciséis años después del nacimiento de Bitcoin, hay alrededor de 20 millones de Bitcoins en circulación y ahora ha alcanzado una capitalización de mercado de más de 2 billones de USD.
Dentro de la cadena de bloques de Bitcoin, una transacción significa que un conjunto de entradas y salidas transfieren la propiedad de bitcoins entre el pagador y el beneficiario. Las entradas indican a la red de qué moneda o monedas se retirará el pago. Esas monedas en la entrada deben ser no gastadas, lo que significa que no se han utilizado para pagar a otra persona. Mientras tanto,
Los resultados proporcionan los montos gastables de bitcoins que el pagador acepta pagar a los beneficiarios. Una vez realizada la transacción, los resultados se convierten en los montos no gastados para el beneficiario y permanecen no gastados hasta que el beneficiario actual le paga a otra persona con la moneda.
Cuando, por ejemplo, Alice necesita pagarle a Bob 10 BTC, Alice abre su billetera de Bitcoin y escanea o copia la dirección de la transacción de Bob y crea una transacción con un pago de 10 BTC a Bob. Una vez que la transacción se firma y envía digitalmente, se envía a la red de cadena de bloques de Bitcoin.
Después de que la transacción se transmite a la red de Bitcoin, el nodo del tenedor de libros, generalmente un nodo completo en una red P2P que recibe las transacciones, la valida de acuerdo con las reglas del protocolo de Bitcoin. Si la transacción es válida, el contador la agrega al grupo de transacciones y transmite la transacción a los peers de la red.
Dentro de la red de Bitcoin, cada 10 minutos, un subconjunto de nodos de red, llamados “nodos de minería” o mineros, recopila todas las transacciones válidas del grupo de transacciones y crea los bloques candidatos. También crean una transacción con base en monedas para ellos mismos a fin de recibir recompensas y cobrar cargos por transacción. En caso de que “ganen la carrera minera” y agreguen el bloque a la cadena, todos los nodos verificarán el nuevo bloque y lo agregarán a su propia copia de la cadena de bloques. Mágicamente, Bob podrá ver el pago de Alice y 10 BTC en su billetera.
Una de las principales preocupaciones en la red de Bitcoin, o en general para cualquier cadena de bloques basada en pruebas de trabajo (PoW), es la de escalabilidad. Por diseño, todas las transacciones deben ser verificadas por todos los nodos. Toma un promedio de 10 minutos crear un nuevo bloque, con el tamaño del bloque limitado a 1 MB. Las limitaciones de tamaño y frecuencia del bloque limitan aún más el rendimiento de la red. Como resultado, un bloque de Bitcoin puede acomodar un promedio de 2700 transacciones. Con los sistemas de pago actuales, VISA puede manejar en promedio alrededor de 2,000 transacciones por segundo (TPS), y la tasa máxima diaria es de alrededor de 4,000 TPS. A partir de 2025, Paypal puede manejar un promedio de alrededor de 193 TPS, o casi 17 millones de transacciones por día.
Claramente, lograr una capacidad similar a Visa en la red de Bitcoin no es factible. Un mayor rendimiento y una mejor escalabilidad requerirían aumentar el límite de procesamiento de transacciones de la red y realizar mejoras de software para la red de Bitcoin.
El trilema de la cadena de bloques aborda la “trifecta” de lograr escalabilidad, descentralización y seguridad en una red de cadena de bloques sin comprometer ninguno de ellos. Una parte central de la premisa del trilema es la afirmación de que es casi imposible lograr las tres propiedades dentro del sistema de una cadena de bloques.
El siguiente diagrama es una ilustración del trilema de escalabilidad de la cadena de bloques.
La clave del concepto de escalabilidad es encontrar una manera de lograr los tres requisitos en la capa base. Las opciones de diseño de Bitcoin favorecen la descentralización y la seguridad, al tiempo que hacen un sacrificio en la escalabilidad.
Soluciones de escalado de Bitcoin
Existen muchas propuestas de soluciones de escalabilidad de Bitcoin, que pueden dividirse aún más en escalamiento dentro y fuera de la cadena.
Escalado en cadena
Las soluciones en cadena, a veces llamadas soluciones de capa 1, abordan problemas de escalabilidad y rendimiento en la capa base de la red de cadena de bloques de Bitcoin. En términos de latencia de red, el escalamiento en cadena proporciona la capacidad de manejar más transacciones en la cadena de bloques. Algunos ejemplos incluyen SegWit, que se adapta a una mayor cantidad de transacciones en un bloque de 1 MB, y Bitcoin Cash (BCH, símbolo .
SegWit
SegWit (número de propuesta de mejora de bitcoins BIP14) es la abreviatura de “testigo segregado”, lo que significa separar la firma digital para una transacción. Fue presentado por primera vez por el desarrollador Pieter Wiulle en la conferencia de escalamiento de Bitcoin en diciembre de 2015. El propósito de SegWit era prevenir la maleabilidad no intencional de las transacciones con Bitcoin y permitir la transmisión opcional de datos, y eludir ciertas restricciones del protocolo.
Una transacción de Bitcoin consta de tres cosas:
una entrada de transacción, que es la dirección del remitente de Bitcoin
un resultado de transacción, que es la dirección de Bitcoin receptora
la cantidad de Bitcoin que se envía, junto con una firma digital que verifica que el remitente es elegible para enviar las monedas
El identificador de la transacción cambia si cambia la firma digital. Resulta que el código de Bitcoin permite que las firmas digitales se alteren cuando aún no se ha confirmado una transacción. Una vez que se agrega una transacción a la red, la transacción, incluida la firma, se vuelve inmutable. La alteración de la firma se realiza de manera tal que si se realiza una verificación matemática, aún está validada por la red. Sin embargo, cuando ejecuta un algoritmo hash en él, da un resultado diferente.
Veamos un ejemplo:
Entrada:
Tratamiento previo: p9k5ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6
Índice: 0
scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10
90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501
Salida:
Valor: 2000000000
scriptPubKey: OP_DUP OP_HASH160 201371705fa9bd789a2fcd52d2c580b65d35549d
OP_EQUALVERIFICAR OP_CHECKSIG
La entrada en esta transacción importa 20 BTC de la salida #0 en la transacción p9k5e... Luego, la salida envía 20 BTC a una dirección de Bitcoin (expresada aquí en hexadecimal 2013... en lugar de la base normal58). Cuando el destinatario desee gastar este dinero, hará referencia al resultado n.o 0 de esta transacción en una entrada de su propia transacción.
Algunas definiciones:
• Tx anterior: un identificador de la transacción anterior a la dirección A
• Índice: número de entrada (aquí solo tenemos un número de entrada: 0)
• scriptSig: primera parte del script de validación (contiene una firma de transacción)
• Valor: la cantidad de bitcoins que se enviarán en unidades de satoshi (un bitcoin = 100 millones de satoshis) (20 bitcoins en el ejemplo anterior)
• scriptPubKey: segunda parte del script de validación, que también contiene la dirección del destinatario B.
Para verificar que se pueda gastar el monto de la transacción anterior, debe combinar el scriptSig de una nueva transacción con el scriptPubKey de la transacción anterior, para garantizar que el resultado sea verdadero y válido; el scriptPubKey simplemente verifica la igualdad de la clave pública y la validez de la firma (OP_CHECKSIG).
En una transacción de Bitcoin, el txid (abreviatura de ID de transacción o hash de transacción) es un hash sha256d de todos los campos de los datos de transacción. El valor del txid depende de scriptSig. Durante una transacción de proceso de nodo minero, el nodo puede mutar scriptSig para que la firma permanezca válida y la transacción tenga el mismo efecto, pero el txid cambiará. Por ejemplo, se puede agregar una operación OP_NOP (que no hace nada). O para cierta sofisticación, se pueden agregar dos operaciones: OP_DUP y OP_DROP (la primera es duplicar la firma en la pila y la segunda la elimina nuevamente). La firma sigue siendo válida, pero el txid cambia.
Otro ejemplo: Si el valor de la firma es “3”, podemos cambiarlo a “03” o “3+7-7”. Matemáticamente, sigue siendo el valor de la transacción con una firma válida, pero hay diferentes resultados hash, ya que el hash depende de cómo escriba el valor, y no del valor en sí.
Una identificación de transacción silenciable para una transacción existente puede ser problemática por varias razones. Por ejemplo, si desea crear una solución de capa 2 sobre la red de Bitcoin, debe asegurarse de que nadie pueda alterar la capa 1, ya que la capa 2 depende de ella.
Modificar el txid puede causar problemas si está gastando o aceptando fondos no confirmados. Así es como SegWit resuelve este problema:
Con SegWit, toda la información maleable se separa de la transacción en “datos de testigos” separados. Al computar el txid, no incluirá esta información maleable. En este caso, el identificador nunca podrá cambiar, ya que los problemas se solucionarán.
Este es un ejemplo de salida de transacción SegWit:
Índice 0
Detalles
Salida
Dirección
35SegWitPieWKVHieXd97mnurNi8o6CM73
Valor
1.00200000 BTC
PkScript
OP_HASH160
2928f43af18d2d60e8a843540d8086b305341339
OP_ECUAL
SigScript
0014a4b4ca48de0b3fffc15404a1acdc8dbaae226955
Testigo
30450221008604ef8f6d8afa892dee0f31259b6ce02dd70c545cfcfed8148179971876c54a022076d771d6e91bed212783c9b06e0de600fab2d518fad6f15a2b191d7fbd262a3e01
039d25ab79f41f75ceaf882411fd41fa670a4c672c23ffaf0e361a969cde0692e8
Podemos ver que hay información de testigos y que los datos incluyen toda la información maleable. El SigScript tiene mucha menos información hash en comparación con el ejemplo anterior sin la transacción SegWit. Esto también significa que reduce el tamaño de una transacción de Bitcoin y mejora las velocidades de transacción al eliminar los datos testigo de la porción original y anexarlos como una estructura separada al final.
Estos son algunos de los beneficios de SegWit:
Rendimiento del nodo: el tamaño de la transacción se reduce, de modo que la red de Bitcoin está menos congestionada, ya que los nodos pueden verificar bloques (o transacciones) más rápidamente.
Malabilidad de la transacción: como se analizó anteriormente, con SegWit, la firma pasa de los datos de la transacción a un bloque de datos testigo. El txid es inmutable y protege los datos de las transacciones de ser pirateados.
Escalamiento lineal de las operaciones de hash de firma: la reducción del tamaño de la transacción agrega más datos de transacción para una determinada transacción como parte de un lote. SegWit separa las firmas de transacción de los datos de la transacción para que cada byte de una transacción no tenga que ser hash más de dos veces.
Mayor seguridad para transacciones con múltiples firmas: SegWit proporciona dos scripts diferentes: uno a una clave pública y otro que dirige los pagos a un hash de script. Al combinar estos scripts, SegWit aumenta la seguridad al habilitar una transacción de múltiples firmas (multisig).
Sobre la capa 1: SegWit es excelente para el desarrollo de Bitcoin de protocolos de capa 2, como Lightning Network. Además, la activación de SegWit impulsa el trabajo de desarrollo en otras características, como MAST (que permite contratos inteligentes de Bitcoin más complejos), firmas de Schnorr (que permiten un aumento de la capacidad de transacción) y TumbleBit (una red anónima de primera capa).
Protege la Red Lightning: los canales de micropago de la Red Lightning dependen de transacciones de doble firma para bloquear los depósitos iniciales. Para iniciar un pago de Lightning Network, los fondos de ambas partes se envían a una dirección de doble firma. Para evitar engañar, la transacción debe firmarse dos veces antes de que los fondos se envíen a la dirección de firma doble. Ambas partes deben sincronizarse para recopilar los resultados de las transacciones de la cadena de bloques principal. Esta identificación de transacción requerida es inmutable.
En teoría, SegWit puede duplicar el rendimiento de Bitcoin o TPS). Sin embargo, si bien mejorar el rendimiento de la red de Bitcoin es fundamental, incluso una duplicación teórica sigue siendo demasiado baja para el uso convencional de Bitcoin como sistema de pago.
Tamaño del bloque
Otra propuesta para mejorar la escalabilidad en cadena de Bitcoin sugiere aumentar el tamaño del bloque. La idea es superficialmente simple: aumentar el tamaño del bloque de 1 MB actual a, por ejemplo, 8 MB aumentaría el rendimiento de la transacción ocho veces. Por ejemplo, los bloques de Bitcoin Cash (BCH) inicialmente eran de 8MB, y actualmente un bloque BCH se establece en 32 MB. Este enfoque de escala vertical agrega muchas más transacciones dentro de un bloque. Sin embargo, aumentar el tamaño del bloque significa que la cadena de bloques puede ser muchas veces más grande, y eso requiere una mejor capacidad informática para procesar bloques de gran tamaño. Al mismo tiempo, esto disminuiría la seguridad de la red en cierta medida, debido a la disminución en el poder hash honesto efectivo.
Esto también puede conducir a un escenario en el que una red se concentra en algunas manos ricas y, por lo tanto, puede comprometer finalmente la descentralización y la seguridad, los principios principales de la cadena de bloques. En términos de inquietudes de seguridad, es una creencia común que una red de cadena de bloques es más segura si más nodos de red participan en el procesamiento de transacciones. Con la distribución más amplia de las cadenas de altcoinas, operarán menos nodos en cualquier cadena de bloques dada.
Esto puede hacer que la cadena de bloques sea menos segura, ya que una red de altcoin más pequeña puede ser más vulnerable a los ataques de red. Por ejemplo, supongamos que tenemos alrededor de 10 000 nodos en una red más grande. Requerirá al menos 5001 nodos (51 %) comprometidos para iniciar un ataque en la red. Si rebanamos 10 000 nodos en 50 cadenas más pequeñas, cada cadena comprende 200 nodos, por lo que solo requiere 101 nodos para derribar cualquier cadena más pequeña, que es lo que llamamos un problema de ataque del 1 %.
Otro problema es la integración entre cadenas: aunque hay algunas soluciones para manejar la integración entre cadenas de bloques, la complejidad general de integrar cadenas y altcoinas más pequeñas aumentará drásticamente. SegWit2x, un compromiso propuesto para el debate sobre el tamaño del bloque en 2017, sugirió que SegWit se activara como primer paso, y después de eso, el tamaño del bloque se aumentará a 2 MB. Sin embargo, esta propuesta no fue aceptada por la mayoría de los nodos en la red de Bitcoin.
Soluciones fuera de la cadena
De manera similar a los fundamentos para una solución en cadena, la comunidad de Bitcoin también está buscando activamente soluciones fuera de cadena, a veces llamadas soluciones de capa 2. En el escalamiento fuera de cadena, la solución es crear una capa adicional sobre la cadena de bloques de Bitcoin que pueda procesar todo tipo de transacciones con dos participantes. Estas transacciones pueden entonces ser por lotes y enviadas como una transacción en la cadena de bloques. Una de estas soluciones fuera de la cadena se denomina red de iluminación.
Red de iluminación
En enero de 2016, un informe técnico titulado The Bitcoin Lightning Network: Joseph Poon y Thaddeus Dryja presentaron pagos instantáneos escalables fuera de la cadena. En él, se describieron los contornos de la Red de rayos.
Lightning es una red descentralizada que utiliza la funcionalidad de contrato inteligente dentro de una cadena de bloques para permitir pagos instantáneos en una red de participantes.
La solución de pago de capa 2 de Lightning Network escala las cadenas de bloques y permite pagos instantáneos sin confianza al mantener la mayoría de las transacciones fuera de la cadena. Construye una red de los llamados canales de pago, en la que dos partes cometen una transacción y se pagan solo entre sí. El proceso es instantáneo y la transacción no necesita ser validada, retransmitida y almacenada por cada nodo de la red de Bitcoin, ya que solo es entre los dos participantes.
Al mover los pagos fuera de la cadena, el costo de mantener los canales se reduce por encima del volumen de pagos en ese canal, lo que permite micropagos y transacciones de pequeño valor para las cuales los cargos por transacción en cadena serían demasiado costosos para justificarlos. Además, Lightning Network escala el rendimiento de las transacciones fuera de la cadena con el procesamiento de datos modernos y límites de latencia, para que los pagos puedan procesarse con gran velocidad.
Veamos cómo funciona Lightning Network.
Ejemplo: Al principio, Alice realiza la transacción de compromiso A1 y Bob realiza la transacción de compromiso B1. La clave de revocación para A1, K A1, es propiedad únicamente de Alice, y la clave de revocación para B1, K B1, es propiedad únicamente de Bob.
Supongamos que Alice y Bob tienen cada uno 10 BTC en su cuenta. Alice quiere enviar 2 BTC a Bob.
Alicia y Bob depositan cantidades iguales de dinero (en este caso, 10 BTC) y cada uno se bloquea. Esta acción de depositar cantidades iguales de dinero en una caja común se registra en la cadena de bloques en forma de un “canal de pago”, que luego se abre entre los dos participantes.
Alice crea una nueva transacción, B2, que asigna 8 BTC a Alice y 12 BTC a Bob.
Alice firma B2 y se lo envía a Bob.
Bob recibe B2, lo firma y lo mantiene.
Bob crea una nueva transacción, A2, que asigna 8 BTC a Alice y 12 BTC a Bob.
Bob firma A2 y se lo envía a Alicia.
Alice recibe A2, lo firma y lo mantiene.
Alice proporciona Ka1, invalidando A1. Luego puede eliminar A1.
Bob proporciona K B1, invalidando B1. Luego puede eliminar B1.
Para resumir, el canal de pago está creando una combinación de fondos combinados para ambas partes y luego transfiriendo la promesa de propiedad del dinero combinado de la manera acordada. Cuando Alice o Bob quieren cerrar el canal, pueden hacerlo. “Cerrar un canal” simplemente significa que ambas partes devuelven su propio dinero. Esta apertura de la caja tiene lugar en la cadena de bloques y el registro de quién es el propietario de cuánto de la caja se registra para siempre.
Lighting Network utiliza un contrato de bloqueo de tiempo con hash (Hashed TimeLock Contract, HTLC), una clase de pagos que utiliza hashlocks y bloqueos de tiempo para exigir que el destinatario de un pago reconozca haber recibido el pago antes de una fecha límite mediante la generación de un comprobante de pago criptográfico, o pierda la capacidad de reclamar el pago, devolviéndolo al pagador. Permite que las transacciones se envíen entre partes que no tienen un canal directo al enrutarlo a través de múltiples saltos (canales adicionales), de modo que cualquier persona conectada a Lightning Network sea parte de un único sistema financiero global interconectado.
Veamos un ejemplo:
Alice quiere enviar un pago a Tim, pero no tiene un canal de pago con Tim. Alice tiene un canal de pago con Bob, que tiene un canal de pago con Tim. La pregunta es: ¿Cómo puede Alice pagarle a Tim?
Para hacerlo, Tim debe crear una cadena secreta criptográfica (clave) y luego hacer hash con una función hash (como SHA-256) y enviarla a Alice. Tim también comparte ese hash con Bob. Para simplificar esta ilustración escrita, representaremos el valor como V.
HTLC
El hash (V) es el bloqueo y la llave es el código para desbloquear el HTLC.
Alice crea una HTLC con Bob y le dice que le pagará si puede producir la imagen previa de V en un plazo de 3 días. Alice firma una transacción con un tiempo de bloqueo de tres días después de su difusión. Bob puede canjearlo, con conocimiento de la V, y después solo Alice puede canjearlo. La HTLC le permite a Alicia hacer una promesa condicional a Bob, mientras se asegura de que sus fondos no se quemen accidentalmente si Bob no sabe qué es V.
Bob hace lo mismo, creando una HTLC que le pagará a Tim si Tim puede producir V dentro de dos días. Sin embargo, Tim sabe, de hecho, V. Debido a que Tim puede extraer el monto deseado de Bob usando su llave, Tim puede considerar que el pago de Alice se completó. Ahora, no tiene problemas para compartir V con Bob para que también pueda cobrar sus fondos.
Tim le revela la llave a Bob en un plazo de dos días, y Bob le paga a Tim.
Bob revela la clave a Alice en un plazo de tres días, y Alice le paga a Bob.
Después de que todos cooperen, todas estas transacciones ocurren dentro de Lightning Network. A todos se les paga de manera mecánica, ya que Lightning Network es casi de naturaleza atómica y bidireccional, lo que significa que a todos se les paga, o a nadie se les paga.
Con Lighting Network, cuando se transmite una transacción de pago, todas las transacciones individuales se verifican primero y deben coincidir con el historial de transacciones para evitar transmitir transacciones falsas o incorrectas. También hay una sanción que se impone a las transacciones fraudulentas: si Lighting Network detecta un actor malicioso en el sistema, se les acusa inmediatamente de una sanción. De esta manera, toda la red garantiza credibilidad y consistencia mientras desalienta el mal comportamiento.
El uso de Lightning Network tiene varios beneficios, en comparación con las transacciones en cadena:
Transacciones rápidas e instantáneas: El tiempo de liquidación para las transacciones de Lightning Network es inferior a un minuto y puede ocurrir en milisegundos.
Micropagos: Lightning Network permite microtransacciones en grandes cantidades.
Rendimiento de la transacción: Fundamentalmente, no hay límites en la cantidad de pagos por segundo que pueden ocurrir en virtud del protocolo. La cantidad de transacciones solo está limitada por la capacidad y la velocidad de cada nodo.
Privacidad: Sin registros de cadena de bloques. Los detalles de las transacciones de pago individuales de Lightning Network no se registran directa y públicamente en la cadena de bloques. Los pagos pueden enrutarse a través de muchos canales secuenciales, ya que cada operador de nodo podrá ver los pagos a través de sus canales. Sin embargo, no podrán ver la fuente o el destino de esos fondos si no están adyacentes.
Menos congestión en cadena
Cargos por transacción extremadamente bajos: Las tarifas de transacción pagadas a los nodos intermediarios en la red de iluminación son frecuentemente pequeñas, generalmente en millisatoshis.
Limitaciones
La Red Lightning está compuesta por canales de pago bidireccionales entre dos nodos que, cuando se combinan, crean contratos inteligentes. Si en algún momento cualquiera de las partes deja caer el canal, el canal se cerrará y se establecerá en la cadena de bloques.
Debido a la naturaleza del mecanismo de disputa de Lightning Network, es necesario que cada participante siempre monitoree su canal y realice un seguimiento del estado del libro mayor fuera de línea que se transmite a la red. El concepto de una “torre de vigilancia” se ha desarrollado para resolver este problema.
Conclusión
La cadena de bloques de Bitcoin sigue siendo un sistema de pago descentralizado innovador, pero su diseño inherente prioriza la seguridad y la descentralización sobre la escalabilidad, lo que resulta en un rendimiento de transacción limitado en comparación con las redes de pago tradicionales. Las innovaciones como SegWit y Lightning Network representan avances críticos que mejoran el rendimiento de Bitcoin al aumentar la capacidad de transacciones y permitir pagos instantáneos fuera de la cadena.
Sin embargo, el trilema de escalabilidad de la cadena de bloques continúa desafiando a los desarrolladores a equilibrar la escalabilidad, la seguridad y la descentralización sin comprometerse. A medida que Bitcoin evoluciona, la investigación continua y las soluciones de escalamiento en capas serán esenciales para respaldar una adopción más amplia y mantener la integridad de la red en una economía cada vez más digital.
#LearnWithBybit

