Después de enviar/inundar transacciones, ¿cómo sabemos que una transacción específica está en todos los nodos?

En el libro "Mastering the Blockchain" de Imran Bashir, dice que el ciclo de vida de una transacción es el siguiente:

  1. Un usuario/remitente envía una transacción utilizando un software de billetera o alguna otra interfaz.
  2. El software de la billetera firma la transacción utilizando la clave privada del remitente.
  3. La transacción se transmite a la red de Bitcoin utilizando un algoritmo de inundación.
  4. Los nodos de minería incluyen esta transacción en el siguiente bloque a minar.
  5. La minería comienza una vez que un minero que resuelve el problema de la Prueba de trabajo transmite el bloque recién extraído a la red. La prueba de trabajo se explica en detalle más adelante en este capítulo.
  6. Los nodos verifican el bloque y lo propagan aún más, y comienza a generarse la confirmación.
  7. Finalmente, las confirmaciones comienzan a aparecer en la billetera del receptor y después de aproximadamente seis confirmaciones, la transacción se considera finalizada y confirmada. Sin embargo, seis es solo un número recomendado; la transacción puede considerarse definitiva incluso después de la primera confirmación. La idea clave detrás de esperar seis confirmaciones es que la probabilidad de duplicar el gasto prácticamente se elimina después de seis confirmaciones.

Mi pregunta:

Ahora todos los nodos tienen mineros que compiten para crear un bloque al recibir todas las transacciones de todos los nodos/usuarios que envían transacciones y las empaquetan, que no provienen de un solo lugar. Si llamamos al ganador, el minero que resuelve el problema de PoW primero, ¿cómo sabemos que recibió todas las transacciones que se supone que debe recibir antes de anunciar que creó un bloque válido? Mi software de minería podría ignorar algunas transacciones y llegar a la minería antes que otros, y por lo tanto vencer a todos los demás (suponiendo que todos tengamos el mismo poder de cómputo).

Mi pregunta también se puede leer de una manera diferente: ¿Cómo garantizar que todos los mineros resuelvan el mismo problema de PoW, mientras que los tiempos de latencia grandes pueden estar involucrados en la red de Bitcoin (porque estamos minando en todo el mundo)?

Respuestas (5)

No puede saber que está en TODOS los nodos porque tal vez no lo esté. Txns se chismean sobre la base del mejor esfuerzo y por lo general funciona.

Se incentiva a los mineros a incluir tantas transacciones como puedan, en orden de la tarifa pagada más alta a la más baja. Por lo tanto, se conectan a una gran cantidad de nodos para asegurarse de tener la información más completa que puedan obtener razonablemente para lograr esto.

Gracias por la respuesta. Entonces, ¿cuantas más transacciones incluyan, mayor será la recompensa que obtengan?
Sí. Pero debido a que hay un límite de tamaño en cada bloque, solo pueden incluir tantos, por lo que los ordenan de mayor a menor cuando no pueden caber todos en 1 bloque.
También eso significa que para el escenario en el que obtienen una transacción más tarde que otra persona, ¿siempre deben verificar si esta transacción ya estaba en un bloque anterior antes de agregarla?
Eso es correcto.

De un novato, lo que significa que si alguien que no es experto en bitcoins aceptó bitcoins en el bloque obsoleto y le dio a esa persona algo de valor, esa persona no tiene suerte, simplemente perdió ese artículo de valor.

Las respuestas anteriores eludieron, pero los tontos como yo miran "Entonces, ¿qué significa esto realmente?". Significa que, cuando le pagan en BitCoins, no se le "PAGA" hasta que esa transacción aparece en al menos 6 bloques de esa cadena, ya que esa cadena podría votarse como inválida en cualquier momento antes de que se alcance el sexto bloque (todavía puede llamarse inválida después de eso, pero muy poco probable).

Esto significa que las transacciones instantáneas que utilizan BitCoin son "RIESGO". Si acepto bitcoins en mi restaurante, es posible que la cadena en la que me pagaron sea votada como inválida, por lo tanto, nunca recibí el pago real. Creo que el tiempo es actualmente de 10 minutos para "confirmar" que una transacción está en la cadena válida "6 bloques de profundidad".

Una persona podría apostar y gastar dinero dos veces, el dinero en realidad no se gasta dos veces, pero una persona novata podría aprovecharse si no entiende cómo funcionan las cosas. En resumen, no renuncie a nada de valor hasta que la cadena tenga al menos 6 bloques de profundidad, entonces lo más probable es que se confirme su "pago".

¿Cómo asegurar que todos los mineros estén resolviendo el mismo problema PoW?

Es imposible. Y no es necesario.

Ahora todos los nodos tienen mineros que compiten para crear un bloque al recibir todas las transacciones de todos los nodos

Y esto tampoco es necesario. Puede comenzar a extraer el bloque sin recibir transacciones de la red.

Gracias por la respuesta. Pero luego puedo seguir creando bloques y obtener dinero gratis, ¿verdad?
(a) las monedas no son dinero (b) PoW significa que estás "trabajando", trabajando = gastando energía, la energía no es gratis.
¿Cuál es el incentivo para que alguien extraiga bloques que realmente contengan transacciones? Por cierto, no te obsesiones con la diferencia entre monedas y dinero, porque son canjeables en los intercambios.
Entonces, ¿las manzanas y las naranjas también son "dinero" porque son intercambiables en los mercados? OK. entiendo. con respecto a su pregunta: hay al menos dos razones: (a) el minero obtiene tarifas adicionales de los txs incluidos (b) existe el mito de que incluir txs ayuda a la red y aumenta la tasa de cambio de monedas a dinero fiduciario
@SamMarkus La gente coloca transacciones en los bloques que extraen por dos razones: 1) El minero se queda con las tarifas de transacción que pagan las transacciones que extraen. 2) Los mineros tienen que invertir en ASIC para extraer bitcoins y sus mineros se convertirían rápidamente en calentadores de espacio muy costosos si la red no fuera utilizable para las transacciones.

En cuanto a su pregunta en la parte inferior:

¿Cómo garantizar que todos los mineros resuelvan el mismo problema de PoW, mientras que la red de Bitcoin puede implicar grandes tiempos de latencia (porque estamos minando en todo el mundo)?

Dentro del encabezado del bloque, está el campo Marca de tiempo (el tiempo aproximado de creación de este bloque - segundos desde Unix Epoch). Por lo tanto, todas las soluciones deben ser válidas para ese bloque en particular. Parte de la solución que encontrarán los mineros es encontrar las transacciones y el Nonce que solucionen el problema. No se procesarán todas las transacciones enumeradas antes de que se cree el bloque. Así, si se publica una posible solución pero no es válida para el bloque actual no será aceptada. Por lo tanto, todos los mineros están trabajando en el PoW.

Si llamamos al ganador, el minero que resuelve el problema de PoW primero, ¿cómo sabemos que recibió todas las transacciones que se supone que debe recibir antes de anunciar que creó un bloque válido?

¿Por qué debería importarnos? Puede incluir las transacciones que quiera, es su bloque. Si ignora las transacciones lucrativas, perderá dinero porque no ganará tanto como podría en comisiones. Pero otros mineros pronto los obtendrán.

Mi software de minería podría ignorar algunas transacciones y llegar a la minería antes que otros, y por lo tanto vencer a todos los demás (suponiendo que todos tengamos el mismo poder de cómputo).

Eso no tiene sentido por dos razones:

  1. Ignorar las transacciones no le ahorrará tiempo ni nada. Siempre estás minando. ¿Por qué esperaría transacciones que podrían o no llegar y, si las hiciera, cuándo dejaría de esperar? En la práctica, siempre tratas de incluir las transacciones más rentables que conoces y nunca esperas nada porque así es como ganas más dinero.

  2. Incluso si dos mineros tienen el mismo poder de cómputo, están tratando de resolver problemas diferentes. Entonces, el que encuentre una solución primero será efectivamente aleatorio. Si no se están coordinando, entonces el minero A está tratando de encontrar una solución que le pague al minero A, mientras que el minero B está tratando de encontrar una solución que le pague al minero B, por lo tanto, diferentes problemas. Si están coordinados, definitivamente no repetirán el trabajo; ese es el objetivo de la coordinación.

Mi pregunta también se puede leer de una manera diferente: ¿Cómo garantizar que todos los mineros resuelvan el mismo problema de PoW, mientras que los tiempos de latencia grandes pueden estar involucrados en la red de Bitcoin (porque estamos minando en todo el mundo)?

Definitivamente no lo son. Nuevamente, si no se están coordinando, entonces cada uno está tratando de resolver el problema de minar un bloque que les pague . Y si están coordinando, están asignando cuidadosamente un trabajo diferente a los dos para que el esfuerzo no se desperdicie.