¿Por qué los pools de minería no pueden proporcionar transacciones falsas dentro de los bloques generados?

Supongamos que Alice quiere agregar una transacción falsa en la que recibe una cantidad X de BTC . Entiendo que para agregar esa transacción a la cadena de bloques tendría que competir contra todos los demás mineros para generar el siguiente bloque, lo que hace que sea improbable que suceda como individuo contra ellos.

Ahora, si echamos un vistazo a la siguiente figura (tomada de blockchain.info ) que muestra los grupos de minería con la tasa de hash más alta en la red:

ingrese la descripción de la imagen aquí

vemos que, por ejemplo, el pool de minería BTC.com tiene una tasa de hash de la red del 26,4 %, y por eso surge mi pregunta: ¿Por qué no pueden todos los mineros de este pool llegar a un acuerdo agregando transacciones falsas a todos los bloques que ¿generar? A diferencia del caso anterior, donde Alice era un individuo con casi ninguna posibilidad de generar un bloque alterado, el grupo podría hacerlo muy probable.

Respuestas (3)

Supongamos que Alice quiere agregar una transacción falsa en la que recibe una cantidad X de BTC. Entiendo que para agregar esa transacción a la cadena de bloques tendría que competir contra todos los demás mineros para generar el siguiente bloque, lo que hace que sea improbable que suceda como individuo contra ellos.

No, eso no es correcto. No importa cuánto poder minero tenga o con cuántos mineros coopere, no puede agregar una transacción falsa a la cadena de bloques.

Es un error común pensar que los mineros son los únicos responsables de determinar si una transacción es válida o no, y si dicen que lo es, todos los demás la aceptan. De hecho, cualquiera que ejecute un nodo completo de Bitcoin (por ejemplo, Bitcoin Core) verifica automáticamente si cada transacción es válida (gasta dinero de una transacción anterior válida y no gastada, debidamente firmada, etc.). Si un minero intenta incluir una transacción no válida en un bloque, se detectará y todos ignorarán todo el bloque, lo que significa que no obtendrán su recompensa minera.

Con suficiente poder de minería o la cooperación de un grupo, Alice podría crear un bloque con su transacción falsa. Pero nadie en el mundo lo considerará válido ni lo aceptará como parte de la cadena de bloques. Si intenta gastar el producto de esa transacción, por ejemplo, enviando esas monedas a Bob a cambio de algunos bienes, el software de Bob simplemente lo ignorará. Él pensará que Alice simplemente no ha pagado nada y no le enviará ningún producto. Así que todo el ejercicio sería una gran pérdida de tiempo y recursos de Alice, sin ganar nada ni dañar a nadie más.

La única autoridad especial que tienen los mineros es esta: si hay dos o más transacciones válidas que están en conflicto entre sí, entonces los mineros pueden decidir cuál (o ninguna) entra en la cadena de bloques, confirmándola así. Pero no pueden confirmar una transacción que nunca fue válida en primer lugar.

Una gran cantidad de poder de minería, o un grupo, podría ayudar a Alice a realizar un ataque de doble gasto , donde una transacción válida y confirmada se reemplaza más tarde en la cadena de bloques con una transacción válida diferente. El primero podría haber ido a Bob, quien le habría enviado algunos bienes, y el segundo podría efectivamente recuperar el dinero de Bob y devolvérselo a Alice, que ahora tiene el dinero y los bienes. Pero la segunda transacción es una que Alice podría haber creado todo el tiempo (por supuesto que puede enviarse su propio dinero a sí misma); no es "falso".

¿Qué quiere decir con "si hay dos o más transacciones válidas que están en conflicto entre sí"? Además, entiendo que la transacción falsa no sería válida si proviene de otra cuenta, pero ¿eso también se aplicaría a la modificación de la recompensa? ¿Cuál sería la parte inválida de esta última transacción?
@jscherman: Por ejemplo, digamos que Alice recibió 1 bitcoin. Podría crear una transacción que se la envíe a Bob (gastando el resultado específico no gastado de la transacción que se le envió). O podría crear una transacción que lo envíe a Charlie. Cualquiera de estos por sí solo estaría bien. También podría crear ambos, pero solo uno de ellos puede entrar en la cadena de bloques, ya que está prohibido que la cadena de bloques contenga dos transacciones que gasten el mismo resultado.
Si coloca ambas transacciones en la red peer-to-peer, más o menos simultáneamente, los mineros decidirán cuál de las dos se confirma; si a Bob le pagan o a Charlie.
@jscherman: En cuanto a su segunda pregunta, en el caso de una transacción de "coinbase" que paga las recompensas de un minero, una de las comprobaciones realizadas por cada nodo completo es que el monto de la recompensa es apropiado dado el programa de recompensas especificado por el protocolo . Si no, consideran que el bloqueo no es válido y lo ignoran.
Si desea tomar un bloque existente y modificar a quién se le paga la recompensa, esto se notará porque hay un hash de la transacción (indirectamente) en el encabezado del bloque. Y si cambia el encabezado, la prueba de trabajo no coincide y tendrá que volver a hacer el trabajo para extraer el bloque, por lo que no gana nada.
Esta respuesta parece reafirmar que btc.com no puede crear transacciones falsas, pero comienza con "todo el mundo detecta las falsificaciones inmediatamente, por lo que no se puede insertar ninguna". Creo que mejoraría mucho si se explicara el mecanismo por el cual se detectan las falsificaciones.
@AnoE: Agregué algunos enlaces donde puede leer más sobre las verificaciones exactas que se realizan.

Lo que debe comprender es que, fundamentalmente, los mineros, y otros nodos en la red, pueden transmitir lo que quieran. Lo que importa no es lo que emiten, sino lo que aceptan otros nodos.

Los nodos completos verifican que todas las transacciones en la red sean válidas de acuerdo con las reglas del protocolo. Y una de esas reglas de protocolo es que las monedas no pueden materializarse arbitrariamente. Para que un tx sea válido, sus entradas deben sumar al menos tanto como las salidas; y las entradas son salidas no gastadas de transacciones anteriores o monedas recién acuñadas en la base de monedas del bloque.

Si las monedas provienen de salidas anteriores, la transacción debe firmarse con las claves privadas correspondientes al hash de la clave pública del propietario. El minero puede incluir tantas "transacciones falsas" como quiera en el bloque, pero sin las firmas digitales adecuadas, ningún nodo aceptará el bloque como válido y ningún comerciante reconocerá que ha recibido monedas con el fin de ofrecer un servicio. .

Uno de los conceptos que es fundamental para bitcoin es el concepto de "funciones unidireccionales", que permiten la creación de un problema para el cual encontrar una solución requiere muchos más recursos que verificar si una solución propuesta es válida.

No está claro qué quiere decir con "transacción falsa". Las transacciones en la red bitcoin se pueden clasificar en dos grupos. Primero, están las transacciones de "recompensa", en las que un minero simplemente declara que ha recibido una cierta cantidad de bitcoins, de la nada, como recompensa por completar un bloque. Para que esto sea aceptado por la red, deben demostrar que realmente completan un bloque válido. La única interpretación que se me ocurre para una transacción de recompensa "falsa" es que Alice simplemente declare que se le ha otorgado una recompensa, sin crear un bloque válido. Luego puede intentar gastar esa recompensa dándosela a otras personas a cambio de bienes y servicios. El destinatario entonces, presumiblemente, verificará si la transacción es válida. Aquí es donde entran las funciones unidireccionales: cualquiera que acepte bitcoin puede verificar de manera eficiente si la transacción de recompensa de Alice cumple con las condiciones de validez de bitcoin. Si los supuestos "bitcoins" de Alice valen algo depende de si puede conseguir que alguien intercambie bienes y servicios por ellos. Si puede encontrar a alguien que no se moleste en verificar si tiene un bitcoin válido, o que esté dispuesto a aceptar cualquier criterio de validez que proponga, entonces podrá "gastar" su "bitcoin". Pero eso no es realmente un problema para la red bitcoin, así como un casino que hace que la gente acepte sus fichas de casino como "dinero" no es un problema para el dólar estadounidense. El "bitcoin" de Alice será claramente distinguible del bitcoin "real" por cualquiera que ejecute el software estándar de bitcoin.dicen que es valido.

El otro tipo de transacción es donde la salida de una transacción de recompensa se transfiere a otra persona (o se transfiere la salida de una cadena de transacciones). Así que digamos que Bob tiene bitcoins perfectamente válidos y Alice quiere afirmar que Bob se los ha transferido. Hay dos formas principales en las que puede hacer esto. Una es que simplemente puede declarar que Bob lo ha hecho, sin ninguna verificación. Esto la pone en la misma situación que la anterior. La otra estrategia es falsificar la verificación. Aquí es donde entran de nuevo las funciones unidireccionales. Bob tiene una clave secreta que usa para firmar sus transacciones. La firma de una transacción, si conoce esa clave, se puede hacer en tiempo polinomial. La verificación de que una transacción ha sido firmada se puede hacer en tiempo polinomial. Pero la firma de la transacción sin la clave no se puede hacer en tiempo polinomial. Entonces, Alice tendrá que usar una cantidad astronómicamente grande de recursos para falsificar la transacción. Incluso si tuviera todo el poder de cómputo del mundo, la probabilidad de que encuentre una solución sería cero para todos los propósitos prácticos. Ella estaría mejor si aplicara ese poder de cómputo a la minería.bitcoin real .

La minería en Bitcoin es difícil pero no NP-completa. Si bien la minería en Bitcoin es una situación en la que es más fácil verificar la solución que encontrarla desde cero, NP-completo tiene un significado técnico específico y la minería de Bitcoin no califica.
Solo una pregunta: digamos que un minero agrega una transacción falsa entre 2 personas. Entiendo que la validación de esta transacción fallará debido a una firma incorrecta (suponemos obviamente que el remitente no fue quien firmó la transacción). ¿Cuándo se activa la validación? ¿Es que todos los nodos validan todas las transacciones dentro de un bloque cuando reciben una?