RSK: La minería combinada de Bitcoin ha llegado para quedarse
Por Sergio Demián Lerner, Director Científico de RSK
Introducción a la minería de Bitcoin
La minería de Bitcoin es el proceso utilizado por Bitcoin para lograr la resistencia al ataque Sybil y conforma la base para el Consenso de Nakamoto. El proceso implica resolver difíciles rompecabezas computacionalmente mientras se selecciona un conjunto válido de transacciones a ser aplicadas al libro mayor. Hoy en día, la mayor parte de la minería es llevada a cabo por grupos de minería. Los grupos de minería existen para reducir la varianza de cobros para mineros, pero también para reducir sus costos de mantenimiento y requisitos de ancho de banda. Los grupos de minería siguen la arquitectura cliente-servidor en la que los mineros u “obreros” (los clientes) se conectan con el servidor del grupo (el servidor). El servidor del grupo ejecuta uno de los programas del servidor del grupo de minería. Algunos programas comunes son Ckpool, Btcpool y Eloipool.
El servidor del grupo generalmente se comunica con una instancia bitcoind a través de un canal de RPC sobre TCP/IP no encriptado. El canal es usado para obtener información sobre la mejor rama actual, y el hash del bloque primario para que el bloque sea minado. Además el servidor del grupo obtiene un conjunto válido de transacciones preseleccionadas. Esto es llevado a cabo usando el comando RPC de bitoind getblocktemplate. El servidor del grupo elegirá un subconjunto de dichas transacciones para incluirlas en el nuevo bloque. Adicionalmente, el servidor del grupo generalmente sondea los bitcoind cada pocos segundos para detectar cambios en el bloque primario. Para reducir el retraso en la detección de nuevos bloques, algunas implementaciones de los servidores de grupo se conectan a bitcoind mediante el protocolo p2p o usan la opción de línea de comando de bitcoind blocknotify para ser notificados tan pronto como sea posible cuando llegue un bloque. El servidor del grupo puede hacer uso de uno o más conexiones p2p estándar a la red Bitcoin a fin de enviar los bloques recién creados, y puede comunicarse con columnas vertebrales de transferencia de bloques rápidos como FALCON o FIBRE.
Minería combinada
La minería combinada es una técnica para usar la misma tasa de hash de minería que asegura una blockchain primaria para asegurar una blockchain secundaria. Namecoin fue la primera criptodivisa en realizar minería combinada con Bitcoin. La minería combinada es llevada a cabo mediante la incrustación de la identidad del bloque de la segunda blockchain (un hash criptográfico del nuevo bloque recientemente construido) en algún lugar del bloque de la blockchain primaria que está siendo minada. Este hash secundario, prefijado por algún texto descriptivo breve o número mágico en la minería combinada se denomina “etiqueta” (tag). El prefijo permite que la blockchain secundaria localice la etiqueta. No obstante, no debe haber ambigüedad respecto de dónde está ubicada la etiqueta: un bloque de la blockchain primaria no debe quedar asociado a ningún bloque de una blockchain secundaria, o como máximo puede quedar asociado a un bloque de la blockchain secundaria. Si bien el uso del hashing criptográfico para el enlazado evita las trampas, los requisitos de seguridad del enlazado son mucho más bajos que los requisitos de la criptografía tradicional. De manera informal, el único requisito de seguridad para la minería combinada es que debe ser más difícil crear un bloque de la blockchain primaria que puede estar asociado con dos bloques de la misma blockchain secundaria que minar dos bloques diferentes de la blockchain primaria, uno para cada asociación, al nivel de dificultad de la blockchain secundaria. Para RSK, la blockchain primaria es, por supuesto, Bitcoin, y la secundaria es RSK. La dificultad del bloque de RSK actualmente es comparable a una seguridad de 70 bits, mientras que la dificultad de Bitcoin es comparable con una seguridad de 74 bits.
Representación de la prueba de trabajo (PoW)
En la minería combinada, un encabezado de Bitcoin funciona solo como una representación de la PoW. La RSK Blockchain debe interpretar la PoW del encabezado de un bloque de Bitcoin y buscar en el bloque de Bitcoin la etiqueta que establezca la singular relación con el encabezado de un bloque de RSK. Por lo tanto traduce de modo transitivo la PoW del bloque de Bitcoin a una PoW del bloque de RSK. Tal como mencionamos anteriormente, la dificultad de la RSK Blockchain es más baja que la dificultad de la blockchain de Bitcoin, de modo que muchos encabezados del bloque de Bitcoin que no resuelvan el rompecabezas de la PoW de Bitcoin serán soluciones válidas para el rompecabezas de la PoW de RSK. Profundicemos un poco más en esta distinción. Cada blockchain calcula una dificultad prevista para cada bloque. Esta dificultad está definida por todos los bloques previos, a fin de mantener el tiempo promedio entre bloques aproximadamente constante. Internamente, la dificultad se traduce en un “objetivo” (target), que es inversamente proporcional a la dificultad. El target es un entero no firmado de 256 bits.
Blockchain | Target |
---|---|
Bitcoin | 000000000000000000165exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
RSK | 00000000000000000db5a4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
Namecoin | 00000000000000000019xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
Targets aproximados para la blockchain de minería combinada, en un mismo día. RSK tiene un target más alto porque los bloques son 20 veces más frecuentes.
Debido a la imprevisibilidad del resumen de hash criptográfico, se asume que la identificación del encabezado de un bloque, que es un resumen de hash criptográfico del contenido del encabezado del bloque, representa una variable uniformemente aleatoria. Si bien es posible que esto no sea cierto en términos teóricos, funciona en la práctica ya que no existen métodos prácticos conocidos para revertir las funciones hash usadas en Bitcoin (doble SHA256) o en RSK (KeccaK). Este resumen de hash, cuando se interpreta como un número sin firma, debe ser inferior que el target, para que el bloque represente una solución al rompecabezas de la PoW. Por lo tanto cuanto más bajo sea el target, más difícil es solucionar el rompecabezas de la PoW.
Pruebas SPV
La blockchain secundaria no requiere que el bloque de Bitcoin completo valide la PoW del encabezado de Bitcoin y la asocie con el encabezado de RSK. Esta asociación puede ser comprobada por una prueba SPV (que principalmente consta de una prueba de membresía estilo árbol de Merkle). El siguiente diagrama representa la relación entre las diferentes partes de la prueba. Las cajas azules representan la información contenida en la prueba SPV, y que necesita ser transmitida junto al bloque RSK.
Una prueba SPV de Bitcoin hace posible comprimir pruebas de PoW de minería combinada
Jerarquía de targets
El target de RSK será generalmente más elevado que el target de Bitcoin, porque los bloques de RSK son más frecuentes que los bloques de Bitcoin, de modo que el rompecabezas de RSK es más fácil de resolver. Por lo tanto el encabezado de un bloque Bitcoin que resuelve el rompecabezas de la PoW de RSK puede no ser aceptado por la red Bitcoin. Observen que ambos rompecabezas implican trabajar con encabezados de Bitcoin, y resolverlos en realidad implica el mismo proceso de prueba y error. Entonces, ¿cómo puede el grupo detectar e informar sobre los rompecabezas de RSK resueltos más frecuentemente mientras los mineros están buscando resolver el rompecabezas de Bitcoin de mayor dificultad? La respuesta es que los mineros ya están buscando resolver bloques a una dificultad mucho más baja que la que requiere Bitcoin. Estos bloques intermedios son denominados “acciones” (shares), y son requeridos por el servidor del grupo para fines contables. De hecho, es el programa del servidor del grupo el que les ordenará a los mineros que intenten resolver el rompecabezas más simple (especificando un target mucho más alto). Se podría pensar que las shares son una suerte de solución intermedia que ayuda a resolver el verdadero rompecabezas de Bitcoin pero no lo es. Las shares no pueden ser extendidas para lograr una solución de un bloque real. No obstante, cuanto más potente el minero, más shares creará para el grupo entre soluciones reales. Las shares, por consiguiente, ofrecen una mayor granularidad para contabilizar los aportes de los mineros. Las shares son transmitidas al servidor del grupo regularmente para que el servidor pueda dividir las ganancias futuras de manera justa entre todos los clientes involucrados, pesando sus aportes de hashing. Pero las shares también son transmitidas porque una de ellas puede ser (aleatoriamente) una solución del actual rompecabezas de Bitcoin. Por lo tanto los mineros no necesitan recibir la verdadera dificultad (o target) del rompecabezas de la PoW de Bitcoin del servidor del grupo, y normalmente no saben si han resuelto un bloque de Bitcoin hasta que esto es comunicado por el grupo. El servidor del grupo verifica cada share recibida, reconstruye el encabezado del bloque, y si el resumen de hash doble SHA256 del encabezado es numéricamente inferior que el target asociado con la dificultad actual de Bitcoin, este reenvía el bloque al guardián (daemon) de bitcoind, que lo distribuye por la red. Como cada blockchain secundaria puede tener una dificultad diferente, un servidor de grupo capaz de realizar minería combinada debe hacer esta verificación por cada blockchain secundaria que maneje. Si el encabezado de Bitcoin representa una solución válida para el rompecabezas de la PoW de RSK Blockchain, este envía el encabezado del bloque de bitcoin a rskj, que agregará el bloque RSK asociado y lo reenviará como válido a la red RSK.
Observen que para RSK el servidor del grupo tiene la opción de transmitir a rskj solo un prueba SPV de la etiqueta incrustada en el bloque de Bitcoin (volveré a esto más adelante), para reducir los requisitos de ancho de banda.
La siguiente tabla muestra las dificultades aproximadas (en términos de número promedio de semillas para hallar la solución de un rompecabezas, a partir de junio de 2019) de Bitcoin, RSK, y las shares:
Destino de la solución | Intervalo de bloques | Número promedio de iteraciones de semillas para hallar una solución | Presunciones |
---|---|---|---|
Bitcoin | 10 minutos | 274 | Tasa de hashing de Bitcoin del 100 % |
RSK | 30 segundos | 269 | Minería combinada al 50 % |
Share de grupo de minería | 3,3 segundos por cliente | 252 | Poder de hashing del 20 % 4000 clientes Ckpool software |
Incrustado de etiqueta RSK
La etiqueta RSK consta del identificador ASCII “RSKBLOCK:” concatenado con un fragmento de datos binarios que incluye el resumen de hash del encabezado del bloque RSK que está siendo minado. Tal como se afirmó anteriormente, la etiqueta debe ser identificada sin ambigüedad (no debe haber una forma de crear un bloque de Bitcoin que puede ser asociado con dos bloques diferentes de RSK). Si bien Namecoin definió un esquema para empaquetar etiquetas para diferentes blockchains minados de forma combinada, el esquema propuestos nunca se estandarizó. Por lo tanto, a fin de mejorar la compatibilidad futura y permitir una mayor versatilidad para los programas de grupos de mineros, la etiqueta RSK puede ser localizada en cualquier lugar de la transacción de generación, a veces también denominado coinbase). La etiqueta RSK puede ser localizada en el campo coinbase de la transacción de generación, o en cualquiera de los resultados de la transacción de la generación (generalmente como una carga OP_RETURN). Los siguientes diagramas muestran las dos posibilidades.
La etiqueta RSK almacenada en el campo coinbase
La etiqueta RSK almacenada en un resultado de la transacción de generación
El formato actual de la etiqueta RSK
El formato actual de la etiqueta RSK es: RSKBLOCK:RskBlockHeaderHash
“RSKBLOCK:” es la cadena ASCII que consiste de los bytes: 52 53 4b 42 4c 4f 43 4b 3a.
RskBlockHeaderHash es el resumen de hash Keccak del encabezado del bloque RSK en formato binario, sin los campos de minería combinada, que son completados después de que se resuelva la PoW.
Cuando la etiqueta RSK es incluida en un script resultante, debería ser incluida después de que los códigos operativos OP_RETURN OP_PUSHDATA1, para evitar enviar correo basura la UTXO de Bitcoin, pero esto no es obligatorio por consenso.
Las siguientes restricciones adicionales rigen:
- El número de bytes inmediatamente después de RskBlockHeaderHash, hasta el final de la transacción de coinbase, debe ser inferior o igual a 128 bytes.
- Los bytes sin procesar que arrastra no deben contener la cadena binaria “RSKBLOCK:” (52 53 4b 42 4c 4f 43 4b 3a)
- Si la etiqueta RSK está ubicada en una cadena resultante que no está en último lugar, existe una probabilidad insignificante de que la etiqueta RSK aparezca de casualidad en los bytes del siguiente resultado. El programa del servidor del grupo no debe descartar la posibilidad que una dirección de Bitcoin rebelde incluida en la transacción de generación tenga la etiqueta incrustada, y que sea usada como un ataque para quebrar la validez del encabezado minado de forma fusionada. Esto podría ser un problema para los grupos descentralizados (como p2pool) que distribuyen las ganancias en la misma transacción de generación. Por lo tanto recomendamos usar la última cadena resultante para la etiqueta RSK.
- Si la etiqueta RSK está ubicada en el campo coinbase, existe una probabilidad insignificante de que la “RSKBLOCK:” aparezca de casualidad en el campo de datos ExtraNonce2 cuyo contenido es provisto por el minero que resuelve el bloque, como parte del protocolo Stratum. Además, el minero podría incluir la etiqueta en el ExtraNonce2 maliciosamente. Este no es un problema en la medida en que el servidor del grupo añada la etiqueta RSKBLOCK: después del fragmento ExtraNonce2.
Un resultado P2SH estándar consume 34 bytes de modo que la limitación del largo del rastro (el número máximo de bytes después de la etiqueta) generalmente significa que la etiqueta debe estar ubicada en el campo coinbase o dentro de los últimos 4 resultados de la transacción coinbase.
La restricción de bytes arrastrados permite que los nodos completos RSK creen una prueba SPV comprimida que consiste de:
- El encabezado de Bitcoin (80 bytes)
- Una rama merkle para la transacción de coinbase (aproximadamente 320 bytes)
- Un estado medio de SHA-256 que consume el encabezado de la transacción de coinbase (32 bytes)
- Un fragmento alineado de 64 bytes que contiene el rastro de la transacción de coinbase, incluyendo la etiqueta RSK (máx. 169 bytes) El uso de un rastro permite que el protocolo use una prueba de que el rastro pertenece a la transacción de coinbase como un hash de comienzo libre que empieza con el estado medio suministrado.
- Actualmente el tamaño máximo de una prueba SPV de minería combinada es 780 bytes.
El programa del servidor de grupo puede enviarle al daemon rskj el bloque completo o la prueba SPV. Si rskj recibe un bloque, lo diseccionará y extraerá los campos necesarios para construir la prueba SPV.
El RskBlockHeaderHash es creado por el nodo RSK estándar (deamon rskj). Rskj muestra una interfaz de minería RCP-JSON que contiene el comando “getwork”. Un plug-in del servidor de grupo sondea el deamon rskj y mantiene el último valor de RskBlockHeaderHash para proveérselo a servidor de grupo. Si el hash de una share es lo suficientemente bajo como para que se resuelva el rompecabezas de la PoW de RSK, el servidor de grupo informa al plug-in, que a su vez le informa al daemon rskj.
Mejoras en la minería combinada en la Próxima Actualización de Red (alias Armadillo)
El inminente lanzamiento de la versión 1.0.0 incluye una actualización de red que mejora el formato de etiquetas de la minería combinada. El nuevo formato es especificado por RSKIP110. El cambio añade información adicional a las etiquetas RSK de minería combinada para que los usuarios o sistema automatizados puedan tomar decisiones informadas sobre la salud de la red. Usando herramientas de monitoreo de etiquetas, los nodos de la red RSK además pueden responder de forma autónoma a situaciones anormales de una manera que proteja los nodos de gastos dobles, y también en el futuro los nodos podrían transmitir pruebas criptográficas sucintas de estados anómalos a otros nodos en la red.
El hash del encabezado del bloque de 32 bytes es reemplazado por una matriz de bytes de 32 bytes con el siguiente formato:
- prefijo de 20 bytes del hash-para-minería-combinada (PREFJIO)
- Vector de compromiso con los padres de 7 bytes (CPV)
- número de tíos de 1 byte en los últimos 32 bloques (NU) limitado en 255.
- Número de bloque de 4 bytes (BN)
Los cuatro campos deben ser verificados por consenso. En pocas palabras, los campos CPV, NU y BN permiten que cualquier nodo monitoree la blockchain de Bitcoin para crear un gráfico de las cadenas paralelas en competencia de bloques RSK que están siendo construidos, incluso aunque sean transmitidas a la red RSK. El hash del encabezado de RSK está recortado a 20 bytes para que la etiqueta aún ocupe 32 bytes, manteniendo por lo tanto la compatibilidad con los programas del servidor de grupos.
Seguridad en la minería fusionada de RSK
La teoría de Nakamoto del consenso usando prueba de trabajo se basa en la seguridad termodinámica y de la teoría del juego, no en la seguridad criptográfica. La minería fusionada de RSK está a salvo de cualquier atacante irracional que pueda computar 2^80 operaciones de hashing en menos de 30 segundos. Un atacante racional preferiría comportarse honestamente y minar de manera combinada un bloque de RSK que requiere solo 2^69 operaciones (la dificultad actual de un bloque RSK) y que está completamente subsidiado por Bitcoin, en lugar de perpetrar otros ataques. Dejando de lado lo remoto de la posibilidad de la componibilidad de este ataque con otros sistemas de minería fusionada, un atacante irracional que intenta realizar 2^80 operaciones de hashing necesitaría invertir 2000 veces más de hardware que el minero racional, y su consumo de electricidad no estaría subsidiado. La inversión ascendería a cinco billones de dólares (5e12), asumiendo que use hardware similar al ASICs de última generación de Bitcoin. Pero las cosas son aún peores para el atacante irracional, ya que él solo puede producir uno o más bloques que comparten la prueba de trabajo para la misma altura de bloque RSK, y veremos más adelante que esto generalmente no ofrece ningún beneficio monetario al atacante (1). Así que esos son cinco billones de dólares a la basura. Por lo tanto la seguridad de 80 bits está bien balanceada a través de todos los componentes, y no hay componente con seguridad sustancialmente más débil que pueda ser objeto de un ataque. Para justificar esto, revisaremos breve e informalmente posibles objetivos de ataques.
Primero, RSK comprime la transacción de generación con un truco criptográfico no estándar. En vez de brindar la transacción de generación completa, transmite solo la parte final. Para seguir siendo capaz de producir el hash criptográfico correcto de este mensaje, comienza el hashing desde un estado medio de la construcción Merkle–Damgård, en vez de hacerlo desde el estado inicial. Este estado medio de 64 bytes es transmitido a lo largo de la parte final. Usar este truco de forma segura requiere asumir una propiedad más fuerte del SHA256, conocida como resistencia a la “colisión de comienzo libre”, y necesitamos que esto sea al menos tan seguro como un ataque de fuerza bruta de 80 bits, que es nuestro umbral meta de seguridad. SHA-1 (una función del hash ya descifrado) cuenta con un ataque de comienzo libre mejor conocido que requiere un ataque de fuerza bruta de 80 bits. No se ha hallado colisión de comienzo libre en SHA256, y los mejores resultados (2) corresponden al encuentro de colisiones se comienzo semi libre en una versión de ronda reducida de SHA256 (38 de las 64 rondas, al costo de 2^65 operaciones), de modo que podemos concluir que la minería fusionada de RSK es segura. Debe observarse que un supuesto ataque de comienzo libre sobre SHA256 que requiera 2^80 operaciones sería devastador para SHA256 y lo volvería inutilizable como función estándar de hashing segura, y Bitcoin estaría de todos modos en problemas. Pero si dicho ataque es alguna vez descubierto, la plataforma RSK estaría fácilmente protegida por una actualización de red para no usar este truco criptográfico para compresión de SPV, a costa de un pequeño incremento del tamaño del bloque. Sin embargo, tal como afirmamos anteriormente, aunque el ataque cueste menos que la minería combinada en términos de seguridad de bits, no resultaría rentable.
En segundo lugar, con respecto al truncado del resumen de hash en el próximo lanzamiento de la versión 1.0.0, el nuevo esquema ofrece el equivalente a una seguridad de 80 bits para colisiones de etiquetas. Sin embargo, el ataque es teórica, económica y computacionalmente irracional. Desde el punto de vista de la complejidad computacional, un ataque de colisión de 80 bits requeriría el uso de una cantidad de memoria irreal (3). Además, el costo en materia de CPE del ataque de colisión es más de 2000 veces más alto que el costo de resolver el rompecabezas de la PoW de RSK (69 vs. 80 bits).
Desde el punto de vista teórica y debido al consenso DECOR+ usado en RSK, como la colisión solo puede producirse a la misma altura de bloque, los bloques que colisionen compartirían la recompensa de bloque, de modo que no hay beneficio por encontrar nuevos bloques pasados del mismo nivel si la recompensa por el bloque pasada es aproximadamente equivalente a la recompensa de un nuevo bloque. El atacante estaría más que nada compitiendo contra sí mismo. Por el mismo motivo, no hay beneficio en encontrar colisiones para nuevos bloques, con la dificultad adicional de que debe ser realizado en 30 segundos en promedio, en cambio de los cinco minutos disponibles para los tíos.
Desde el punto de vista económico, un minero de minería combinada honesto percibe honorarios por transacciones de Bitcoin, de modo que la minería combinada está subsidiada por Bitcoin, mientras que el atacante tiene que pagar por todo el costo del ataque de colisión. Esto convierte a casi cualquier ataque contra el enlazado de la PoW en no rentable. Esto es válido tanto para las colisiones de resumen de hash en el hash del bloque RSK como para las colisiones de libre comienzo en el hash de transacción de coinbase.
Por lo tanto pensamos que la etiqueta es segura por los próximos 20 años, considerando incluso un avance crucial en la eficiencia computacional. Sin embargo, si las tendencias computacionales cambian radicalmente, una actualización de la red futura podría fácilmente volver a expandir el tamaño del hash los 32 bytes totales.
Desarrollo del plug-in de minería combinada de RSK
La siguiente imagen muestra una arquitectura de servidor de grupo estándar, incluyendo un plug-in de minería combinada:
Servidor de grupo con el plug-in de minería combinada de RSK conectado a dos redes
El plug-in de RSK del servidor de grupo se comunica con el daemon de rskj usando dos métodos JSON-RPC: mnr_getwork y mnr_submitBitcoinBlock. Otros métodos de envío permiten enviar menos información al nodo de rskj, para reducir el consumo de ancho de banda. El puerto de conexión JSON-RPC del daemon de rskj puede configurarse, y el valor por defecto es 4242. Aquí pueden encontrar una descripción de los métodos y del formato del intercambio de datos: https://github.com/rsksmart/rskj/wiki/JSON-RPC-API. Esos métodos se implementan junto a muchos otros que pertenecen a la interfaz Web3, que es la interfaz estándar para conectarse al nodo de rskj.
El equipo de RSK ha desarrollado varios plug-ins completamente funcionales para varias implementaciones en grupo como CoiniumServ, Ckpool, Btcpool y Eloipool. Otros grupos han implementado sus propios plug-ins. Recomendamos Ckpool por sobre los otros programas de minería en grupo ya que está optimizado y verificamos profundamente que la minería fusionada no afecta el rendimiento de la minería de Bitcoin.
Pronto estará disponible nuestra guía para el desarrollo de plug-ins de minería combinada con consejos adicionales para ayudar a grupos a construir módulos eficientes y confiables de minería combinada.
Es importante observar que como RSK usa el protocolo DECOR+, el programa del servidor de grupo puede seguir procesando todas las soluciones de la PoW de RSK halladas por los clientes del grupo, incluso si el bloque primario de RSK ha cambiado. Todos los bloques en competencia (denominados tíos) son recompensados.
Resumen
Entre 40 % y 51 % de mineros son actualmente mineros de minería combinada de RSK, lo que convierte a RSK en la plataforma de smart contracts más segura en el planeta, en seguridad “termodinámica” (4). La minería combinada de RSK es fácil, pero se debe tener cuidado de no alterar el normal funcionamiento del programa del servidor de grupo, incluso en las condiciones más severas, como ataques directos a la red RSK. RSK Labs desarrolló varios plug-ins que fueron ampliamente probados contra un número de condiciones de falla, para verificar la continuidad de la operación de la minería. Además, medidas a favor de la eficiencia fueron tomadas en programas de minería en grupo para certificar que la eficiencia del programa de minería no se haya alterado. Alentamos a los mineros en grupo y solitarios a realizar minería combinada de RSK y a participar de la revolución de los smart contracts de Bitcoin. Si necesita ayuda para configurar su iniciativa de minería combinada, encuéntrenos en el foro gitter de la comunidad RSK.
(1) Otro ataque interesante sería usar colisiones de etiquetas para crear bloques de varias cadenas en competencia en paralelo, todos con la misma dificultad acumulada, y suministrarse entre mineros “mejores cadenas” diferentes para impedirles que trabajen en la misma mejor cadena. Este requiere tener conexiones directas P2P con los otros mineros. Podría funcionar si el atacante tiene menos poder de hashing que los mineros restantes juntos pero mucho más poder de hashing que los mineros restantes separados. De todos modos este ataque sería mucho más costoso que simplemente llevar a cabo un ataque del 51 % para ignorar los bloques de otros mineros.
(2) https://eprint.iacr.org/2015/350.pdf
(3) La memoria RAM requerida por un simple ataque de colisión es 2^80 resúmenes de hash (32 millones de exabytes). Usando el algoritmo Oorschot/Wiener, y asumiendo que un único procesador puede realizar 2^40 operaciones de hashing secuencial en menos de 30 segundos, el requisito de memoria RAM podría reducirse a 32 terabytes.
(4) Una vez que una transacción se confirma en un bloque, no puede ser revertida sin que alguien invierta un mínimo de energía para reescribir la cadena. Esta energía es conocida como la seguridad “termodinámica” de una blockchain basada en PoW.