Supongamos que los nodos de Bitcoin no tienen ninguna dificultad de destino y, en cambio, solo aceptan el bloque con el PoW más grande cada 10 minutos. Ignorando el aumento del ancho de banda (dado que los nodos estarían transmitiendo varios candidatos de bloque), ¿funcionaría esto? ¿O hay alguna necesidad técnica de una dificultad objetivo ajustable?
Editar: para aclarar, quise decir que se aceptan todos los bloques, pero solo la cadena con el mayor trabajo acumulado se considera canónica. Es decir, si hay un bloque débil hace días y extraes un bloque con una puntuación más alta, ese bloque débil no se vuelve inválido. Debe reemplazar cada bloque encima si desea reescribir la historia hasta ese punto. Es decir, es lo mismo que Bitcoin, sin dificultad objetivo. Los nodos simplemente aceptan todos los bloques y calculan el mejor bloque sumando el trabajo acumulado de cada sugerencia de candidato.
No es trivial a) acordar el tiempo en un sistema distribuido, especialmente cuánto tiempo ha pasado entre dos eventos, b) establecer cuándo se encontró exactamente un candidato a bloque. Además, cuando un nodo se pone al día con la punta de la cadena después de estar fuera de línea, no tiene ningún medio para determinar si realmente se encontró un bloque dentro del período de tiempo asignado.
Así que ahora, en lugar de que alguien encuentre un bloque y lo anuncie, necesitamos enviar muchos más datos y luego ejecutar algún tipo de algoritmo de consenso para acordar si los candidatos se enviaron a tiempo.
Pero, lamentablemente, todavía no veo cómo se requiere una dificultad objetivo para el consenso.
Sin dificultad, se vuelve subjetivo si se ha encontrado el siguiente bloque porque el criterio ya no es binario. Si cualquier dificultad es aceptable, estaríamos encontrando miles de millones de bloques en cada momento. Digamos que todos estos anuncios de bloque caen en cascada a través de la red. Cada nodo ahora recibe múltiples anuncios y realiza una validación de bloque innecesaria, incluso si solo envían el mejor bloque que han visto hasta ahora a la altura dada. ¿Cómo saben los mineros cuándo deben cambiar a la siguiente altura? ¿Cómo saben que ya han visto el mejor bloque en la altura? Las reorganizaciones estarían ocurriendo todo el tiempo. Si los mineros cambian constantemente el bloque anterior de sus plantillas de bloques para actualizar al estado más reciente, estarán minando casi por completo candidatos a bloques que no serán compatibles con la mejor cadena final. La mayor parte de la prueba de trabajo se desperdiciaría por completo y no contribuiría en absoluto a la seguridad de la red. Además, la carga de ancho de banda en la red aumentaría drásticamente para chismear todos los bloques.
Especialmente los mineros con mayores proporciones del poder de hash ahora tienen todo tipo de ángulos adicionales para atacar el bloque anterior en lugar de avanzar, por ejemplo, la minería egoísta y los ataques de Finney se vuelven más fáciles. Deshacerse de la dificultad obstaculizaría el progreso de la cadena de bloques y haría que incluso las confirmaciones múltiples no fueran confiables.
genesis_time + 10 mins * block_count
. Los nodos simplemente transmiten bloques como de costumbre y eligen la cadena con el trabajo más grande.El punto clave del diseño de Bitcoin es crear un sistema que proporcione un registro confiable de transacciones sin ninguna coordinación central o árbitro . En cambio, Bitcoin es un sistema distribuido en el que se llega a un consenso mediante un "algoritmo de consenso" que cada nodo de la red puede evaluar repetidamente.
Como Bitcoin está operando hoy, el objetivo de un "período de bloque" está bien definido y acordado por todos los nodos. Un nodo puede verificar si un determinado bloque es una solución válida utilizando solo el conocimiento de la cadena (es decir, la dificultad objetivo) sin depender de ningún reloj.
En el sistema que propones, no puedes decidir si has visto "el mejor bloque del intervalo de tiempo de 10 minutos" con solo mirar el bloque. Esto significa que no sabe si ese bloque es un bloque válido sin conocer a todos los demás candidatos. La consecuencia es que un bloque que considerabas válido puede volverse inválido cuando aparece un bloque con un hash más bajo. Esto es algo que no puede ocurrir según el esquema actual, y tiene consecuencias dramáticas. Hoy en día, un bloque que se considera válido se puede minar con seguridad, ya que se espera que el trabajo requerido para superar el bloque válido sea aproximadamente el mismo que continuar en ese bloque. En su esquema, solo se necesita el trabajo de encontrar un bloque mejor para invalidar la solución previamente aceptada y destruir el trabajo basado en ese bloque ahora inválido "
Entonces, cuando comienza a minar en un bloque, debe estar seguro de que conoce una solución válida y que esta solución seguirá siendo válida . El enfoque habitual del desafío sería un árbitro central que recopile a los candidatos y decida qué bloque elegir y corrija esta decisión para siempre. Como ya dije en la introducción, cualquier cosa que dependa de un servicio central confiable no cumple con el objetivo principal de Bitcoin.
Dos problemas potenciales con esta idea, algo relacionados.
Los incentivos mineros fluctuarán durante el período de 10 minutos, dependiendo de la dificultad del "candidato" del bloque actual. Si es más alto de lo esperado, se incentivará a los mineros a dejar de minar hasta el comienzo del próximo período. En un caso extremo, podría ser que todos los mineros dejen de minar por el resto del período porque la probabilidad de minar el bloque canónico hace que no sea rentable para todos los mineros.
Al comienzo de cada período de 10 minutos, la red de retransmisión se inundaría con "candidatos" de bloque. Debido a que es probable que el mejor bloque actual para el nuevo período tenga un hash de dificultad relativamente baja, se están generando muchos mejores bloques nuevos en rápida sucesión, y esto podría sobrecargar los nodos de retransmisión. Esto podría afectar tanto el ancho de banda de la red (recepción de bloques) como la CPU (validación de bloques a medida que llegan).
El esquema de dificultad de minería de bitcoin existente no sufre estos problemas porque la tasa esperada de generación de nuevos bloques es constante.
La dificultad fue diseñada por Satoshi para equilibrar la red y garantizar el acceso equitativo a nuevos pares, evitando que terceros maliciosos controlen la red, filtren transacciones y obtengan las monedas generadas con demasiada facilidad.
El PoW es una prueba matemática de que alguien gastó recursos para obtener las monedas generadas. Si no hubiera un PoW, una entidad organizada con muchos recursos, por ejemplo, una botnet o un ISP, enviaría spam a la red con transacciones que generarían interés para ellos.
En particular, para transacciones más grandes (1), debemos estar particularmente seguros de que Alice (gastador malicioso) no emite una transacción a Bob, que vende bienes, y luego envía spam a la red con la transacción al comerciante Charlie o a ellos mismos para estafar a Bob. .
Considere que Bitcoin es totalmente descentralizado y los sistemas distribuidos sufren el concepto de tiempo, que no es absoluto. Si tiene preguntas al respecto, debe publicar en SW Engineering. Solo diré "sin una autoridad de certificación, puede retener un mensaje para siempre". Y Bitcoin rechaza las autoridades de certificación que pueden ser pirateadas, sobornadas, forzadas por el gobierno, etc.
Satoshi necesitaba diseñar un sistema para que las transacciones secuenciales no pudieran (tan fácilmente) reescribirse (2).
Suponga que los nodos de Bitcoin acaban de aceptar el bloque con el PoW más grande cada 10 minutos.
El verdadero problema es: no lo mires desde la perspectiva de todo el sistema. Mírelo desde la perspectiva de mi cliente Bitcoin-qt arrancando ahora mismo desde el vacío.
¿ Cómo puede mi cliente estar seguro de que nadie está reteniendo bloques ? ¿Cómo puede mi cliente estar seguro del tamaño de la red a juzgar por la entrada de otros pares malintencionados?
Satoshi esperaba que la red creciera y el poder computacional junto con ella. Con más nodos de minería, una mayor cantidad de bloques alcanzaría el umbral de dificultad en menos de 10 minutos.
Desde la perspectiva de un nodo solitario , que es el concepto mismo de las redes peer-to-peer, el objetivo no es identificar el bloque con mayor dificultad, lo que sería difícil si los pares intentan ocultar información, sino buscar el más largo . cadena
El principio de la cadena más larga no impide que Alice reescriba por completo una transacción. Lo hace tan caro que, al menos para las compras de comestibles, vale la pena seguir las reglas en lugar de hacer trampa.
Y es la misma razón por la cual los pares requieren 3 o más confirmaciones para considerar una transacción final .
(1) Bitcoin fue diseñado para comprar comestibles y bienes raíces. Por supuesto, no es esa pérdida un gasto doble en el supermercado.
(2) Reescribir una transacción, en el ámbito de una cadena de bloques, significa que si la transacción ocurrió en el bloque 100
, se reemplaza cada bloque de 100
a current
con 100
1 a current
1
maiavictor
Jard de Cayo
maiavictor
1 / block_hash
, que es una estimación de cuántos nonces se intentaron para hacer este bloque. Luego, la suma de todos los hashes de bloque hasta la raíz es la puntuación de esta cadena específica. Los nodos solo reciben bloques y seleccionan la cadena con mayor puntaje.Jard de Cayo
maiavictor
Jard de Cayo
maiavictor
Michael Karcher
maiavictor
muro