¿Por qué es necesaria la minería para la red/sistema Bitcoin? [duplicar]

Entiendo que una transacción es un registro de 1+ Bitcoins entregados de una parte a otra.

Entiendo que un bloque es una colección de transacciones no verificadas (pendientes) que se verifican cada aproximadamente 10 minutos.

Entiendo que minar es el acto de ejecutar un software especializado que resolverá algún problema criptográfico y, como resultado, permite agregar un bloque de transacciones pendientes a la cadena de bloques (historial de todas las transacciones, siempre).

Entonces, en primer lugar, si algo de lo que he dicho hasta ahora no es cierto o es engañoso, ¡comience por corregirme!

Asumiendo que estoy más o menos en lo correcto, todavía no veo por qué la minería es crucial para el sistema y (obviamente) no veo el bosque a través de los árboles aquí.

Si envío 10 BTC a alguien, ¿por qué otra persona (un "minero") necesita verificar esto? ¿Esta transacción no debería almacenarse en una base de datos en algún lugar y verificarse consultando esa base de datos?

No creo que sea un duplicado de esa pregunta, @StephenGornick. Se trata más que solo de qué se trata el problema de la minería, sino también de cómo los mineros contribuyen a la seguridad y la equidad de la red.

Respuestas (4)

Deberías empezar aquí: http://www.youtube.com/watch?v=GmOzih6I1zs

Como se menciona en el video, la minería es necesaria para garantizar la equidad y mantener la red estable, segura y protegida.

Ahora, veamos qué significa eso. Pero primero una explicación muy breve del principio de la minería.

Minería

La red Bitcoin consta de nodos que almacenan una base de datos con todas las transacciones, llamada cadena de bloques. Esta base de datos consta de una larga cadena de bloques, cada uno de los cuales contiene una o más transacciones. Lo que básicamente hacen los mineros es agrupar todas las transacciones no confirmadas en un bloque. La forma del bloque debe satisfacer ciertas condiciones antes de que el bloque se considere válido. Esta condición se llama prueba de trabajo y no es trivial de entender. Cuando un minero encuentra un bloque que es válido, puede enviar su bloque a la red y otros lo verificarán. Cuando sea realmente válido, todos los clientes lo agregarán a su cadena de bloques. Cada vez que un minero encuentra un bloque válido, tiene derecho a asignarse una cierta cantidad de bitcoins, llamada recompensa por bloque .. También obtienen todas las tarifas de transacción de todas las transacciones incluidas en su bloque. De esta manera, se agregan nuevos bitcoins a la red y se puede asegurar que las transacciones se puedan confirmar.

Justicia

Dado que Bitcoin es peer-to-peer y no existe una autoridad central para controlarlo, todos pueden enviar cualquier tipo de transacción a la red, sea válida o no. Simplemente puede enviar una transacción que le envíe las monedas de otra persona.

Afortunadamente, nadie en la red aceptará su transacción. Cuando desee gastar bitcoins desde una determinada dirección, deberá firmar la transacción con la clave privada de esa dirección. Otros clientes en la red pueden verificar que usted posee esa clave privada porque tienen la clave pública. Este método se basa en la criptografía de clave pública .

Entonces, cuando los mineros intentan agrupar transacciones no confirmadas en un bloque, primero deben confirmar cada transacción para asegurarse de que todas las transacciones en su bloque sean válidas. Cuando no lo son, otros clientes no aceptarán el bloque que extrajeron cuando lo envíen a la red.

De esta manera, los mineros se aseguran de que las personas solo puedan gastar bitcoins de su propiedad.

Estabilidad

Este es el menos difícil de entender. El protocolo Bitcoin establece la dificultad del problema de la minería de modo que, en promedio, cada 10 minutos, algún minero puede encontrar un nuevo bloque. De esta forma, una transacción tarda en confirmarse una media de 10 minutos.

Sin embargo, una vez que se ha incluido una transacción en un bloque, aún no es irreversible. Esto no es fácil de entender, pero cuando un minero intenta minar un nuevo bloque, incluye en ese bloque el número y el ID del anterior. Entonces, digamos que alguien extrajo el bloque 100, que sigue al número 99. Puede suceder que alguien más no se dé cuenta de que alguien encontró un bloque válido para seguir en el 99 y también crea un número 100 válido, llamémoslo 100'. En este caso, la mayoría de los clientes solo aceptarán el primer bloque que recibieron. Pero puede suceder que otro minero reciba 100' primero y encuentre un bloque siguiente en 100' y no en 100. Entonces tenemos la siguiente situación:

98 - 99 - 100
      \ _ 100' - 101'

Cuando los clientes notan tal situación, siempre elegirán la cadena más larga existente (que solo consta de bloques que creen que son válidos). Esto significa que el bloque 100 será descartado y que el 100' y el 101' o ahora los dos últimos bloques de la cadena principal. Esto significa que una transacción que fue confirmada por el bloque 100 posiblemente ya no esté confirmada. Afortunadamente, los mineros que encontraron el bloque 100' o 101' probablemente también sabían de la transacción y probablemente también lo incluyeron en uno de esos bloques. Pero puede suceder que no lo hayan hecho y, por lo tanto, se puede deshacer una transacción.

Por esta razón, la mayoría de los clientes y comerciantes requieren que una transacción sea confirmada por al menos 6 bloques . Esto significa que debe incluirse en un bloque que tenga al menos 5 bloques después.

El hecho de que una transacción pueda considerarse confirmada después de 1 hora en promedio, la convierte en una situación estable. Es raro que las transacciones confirmadas por más de 1 hora se reviertan nuevamente.

Seguridad y proteccion

La parte anterior sobre la estabilidad ya incluía algunos aspectos de seguridad de la minería. Está claro que los mineros hacen que la cadena de bloques de Bitcoin sea confiable. Cuando se incluye una transacción en un bloque y han pasado 5 o más bloques, puede estar seguro de que es irreversible y seguro aceptarla como pago.

También está claro que la seguridad de Bitcoin como sistema de pago está en manos de los mineros y que cada vez que uno de ellos resuelve un bloque, tiene el poder de decidir qué transacciones acepta a la cadena de bloques.

En su mayoría, todos los mineros son justos e incluirán tantas transacciones válidas como sea posible. Siempre que un minero no sea justo y excluya selectivamente algunas transacciones, es probable que otro minero lo incluya en el siguiente bloque.

Sin embargo, hay un defecto. Cuando un minero tiene más poder de cómputo que todos los demás mineros combinados , siempre puede crear nuevos bloques a un ritmo más rápido que los demás. Esto le da mucho poder sobre la cadena de bloques, y eso debe evitarse a toda costa. Este defecto se denomina ataque del 51%. Esta respuesta resume las consecuencias de lo que podría pasar si alguien tuviera el 51% del poder de cómputo de la red.

Pero esto es una falla de seguridad, ¿qué tiene esto que ver con por qué los mineros deberían minar? Bueno, a medida que más personas extraen, la potencia de cálculo total aumenta y será mucho más difícil para alguien realizar un ataque del 51 %. Actualmente, poseer hardware capaz de realizar tal ataque sería tan enormemente costoso que es económicamente inviable, si no completamente imposible. Por lo tanto, cada minero que contribuye con su poder a la red se asegura de que solo los mineros justos encuentren bloques y que la red sea segura para que la gente confíe.

Gracias @Steven Roose (+1) - respuesta increíble. Entonces, para resumir, la minería es el acto de conciliar/verificar transacciones en la red distribuida (en lugar de que un servidor central haga la conciliación). Y, como recompensa por proporcionar la reconciliación, los mineros reciben recompensas en bitcoins recién creados. ¿Es esa una evaluación justa? ¡Gracias de nuevo!
Sí, eso lo resume. Una pregunta que tienen algunas personas es si las tarifas de transacción por bloque serán suficientes para estimular a los mineros cuando la recompensa del bloque se haya ido. La recompensa del bloque se reduce a la mitad cada 4 años y en diciembre de 2012 cambió de 50 a 25 BTC. Algún día será cero y, a partir de ese momento, los mineros tendrán que ganar dinero con las tarifas de transacción.
@StevenRoose Entonces, ¿los mineros también verifican las firmas? ¿No "la red", sino específicamente los mineros? Entonces, la minería es básicamente esto: "Verifique las firmas en las transacciones. Cuando termine, concatene un montón de cosas y agregue i; incremente i hasta hash (montónDeCosas+i) <dificultadelegida"?
@ErikVesterlund Algo así, de hecho. Pero tenga en cuenta que los nodos no mineros también verifican la firma. Cuando un minero transmite un bloque con firmas no válidas, un nodo no minero rechazará el bloque y bloqueará al minero y simplemente se adherirá a la cadena que sabe que solo incluye bloques válidos.
Si el nivel de dificultad se mantuviera en 1 como cuando comenzó la cadena de bloques, con los hashrates locos de los mineros de hoy en día podrían reescribir toda la cadena de bloques desde cero en menos de un segundo. Digamos que un minero recrea toda la cadena de bloques Y tiene acceso a muchos nodos completos para que pueda simplemente copiar esta "nueva cadena de bloques" sobre ella. ¿Hay alguna protección contra este tipo de ataque? Porque si no, eso significa que la minería es completamente inútil para defender el sistema.
Entonces, ¿qué sucederá cuando se extraigan todas las monedas? ¿Bajará todo? Además, ¿cómo mantienen esta equidad las monedas no minables?
@LifeH2O Cuando se extraen todas las monedas, los bloques recompensarán las tarifas de transacción al minero. Por lo tanto, los mineros preferirán (y ya lo hacen) transacciones con tarifas más altas. Por eso es importante pagar tarifas de transacción por sus transacciones: el sistema de tarifas reemplaza el sistema de recompensas para mantener a los mineros honestos.

Para evitar el doble gasto, las transacciones firmadas deben tener un sello de tiempo en un orden bien definido (para que los clientes puedan determinar la validez de cada transacción, es decir, si la fuente de fondos es suficiente para respaldar la transacción).

En lugar de tener una única autoridad de confianza centralizada, Bitcoin distribuye esta función a través de la red. Pero, ¿cómo decidir en quién confiar para hacer esto? La respuesta es otorgar la autoridad a quien demuestre más poder de cómputo.

Dado que una demostración de poder de cómputo no se puede falsificar de manera confiable (a diferencia de otras medidas de identidad individual), las personas pueden unir sus recursos para ganar el derecho a las transacciones con marca de tiempo. Mientras haya más poder de cómputo en manos de usuarios no maliciosos que de los maliciosos, ningún usuario malicioso (o conjunto de usuarios) podrá subvertir la función de sellado de tiempo.

¿Dónde estaría el DB?

Si la base de datos se almacena en alguna ubicación centralizada, Bitcoin ya no está descentralizado.

Básicamente, la base de datos debe ser almacenada por una red distribuida de nodos honestos y compartida en la red P2P. Sin embargo, necesitamos una forma para que los nodos individuales puedan verificar si un bloque no está falsificado. Ingrese el nonce/hash: es algo difícil de generar (falsar), pero fácil de verificar. Uno debe elegir el nonce correcto para que el hash del bloque siga los criterios, y lleva tiempo encontrar un nonce que funcione. (Por otro lado, verificar un hash es un trabajo rápido)

Ahora, por supuesto, necesitamos una forma de generar "legítimamente" el nonce: no hay una autoridad central que distribuya los nonce. Ingrese a los mineros: siempre que casi toda la población minera esté trabajando para generar nonces para bloques "buenos" (bloques que contienen todas las transacciones transmitidas sin manipulación), podemos garantizar que todos los bloques generados provienen de estos mineros, y por lo tanto estos bloques son "legítimos".

Si bien las transacciones se transmiten, no hay forma de saber si una transacción llegó al resto del mundo. Puedo dirigirle una transacción y hacer que parezca que le he dado dinero, cuando no es así. Sin embargo, convertir una transacción en un bloque es algo casi imposible de hacer para cualquier individuo, ya que tiene que competir contra la mayoría de los mineros.

Ver también: http://codinginmysleep.com/bitcoin-mining-in-plain-english/

El nonce es en realidad solo un contador. Lo que es difícil de generar es el hash sobre el contenido del bloque, el hash del bloque anterior y el nonce.
@MichaelBorgwardt: actualizado. Sin embargo, ambos realmente significan lo mismo "generar el nonce" y "generar el hash" en este contexto.

La respuesta corta es esta: al carecer de una autoridad central, el esquema simple que mencionó no funcionaría para Bitcoin.

Considere si transfirió los mismos 10 bitcoins a dos cuentas diferentes con dos transacciones diferentes. ¿Qué impediría que algunas personas reconocieran la primera transacción y otras la segunda?

Bitcoin utiliza la prueba de trabajo (minería) para resolver este "problema de doble gasto".