¿Qué mantiene el tiempo de bloque promedio en 10 minutos?

Me han dicho que "la red" establece el nivel de dificultad de modo que se extraiga un bloque nuevo cada diez minutos.

Me imagino que los ricos preferirían mantener la dificultad lo más alta posible para evitar que otras personas ganen sus 50 BTC y provoquen inflación, mientras que los pobres preferirían una dificultad lo más baja posible para obtener una mayor parte de los BTC disponibles.

(Por ricos y pobres, me refiero solo a la cantidad de BTC que tiene alguien).

¿Cuál es la fuerza que dice "No, olvida tus mezquinos intereses personales y establece la dificultad en 10 minutos"?

Respuestas (4)

Las reglas de la red bitcoin definen qué dificultad tiene cada bloque. Esto se hace a través de una fórmula simple que solo depende de la propia cadena de bloques. Esto significa que si me das una cadena de bloques con bloques del 1 al N, puedo decirte con un 100 % de precisión cuál debe ser la dificultad del bloque N+1, y puedo rechazar cualquier bloque que tenga la dificultad incorrecta. Esto significa que no es realmente "la red" la que decide sobre una dificultad, sino que realmente cada nodo lo calcula y lo aplica de forma independiente .

La fórmula real es esta: en cada bloque N, que es un múltiplo de 2016, mire las marcas de tiempo de los últimos bloques de 2015 y cambie la dificultad de lo que sigue a old_difficulty*(2 semanas)/(tiempo que tomó los últimos bloques de 2015 ). Las reglas adicionales sobre qué marcas de tiempo están permitidas en los bloques evitan las trampas (en su mayoría).

En resumen, al usar un cliente de bitcoin, acepta sus reglas de red, y esas incluyen el ajuste de dificultad.

Hmm, ¿podría ser más preciso sobre la "marca de tiempo" utilizada? Afaik, la hora en el encabezado del bloque puede ser muy inexacta, y la propagación del bloque puede inducir cierto retraso entre los nodos (por lo tanto, si registran la hora en que escucharon por primera vez sobre el bloque, no todos estarían exactamente de acuerdo en la misma dificultad). Y, ¿qué pasaría si uno generara bloques con una computadora cuyo reloj no está sincronizado (como días en el pasado/futuro)? (Si esto no es adecuado como comentario, puedo hacer una pregunta por separado).
@ Artefact2: de la wiki : "Una marca de tiempo se acepta como válida si es mayor que la marca de tiempo mediana de los 11 bloques anteriores y menor que el tiempo ajustado por la red + 2 horas. "Tiempo ajustado por la red" es la mediana de la marcas de tiempo devueltas por todos los nodos conectados a usted".
Creo que lo importante es que no se trata de un montón de servidores que votan sobre cuál debería ser la dificultad, que es lo que suena cuando la gente me dice que la dificultad la establece la red.
@billpg - Correcto. Sería más exacto decir que la dificultad la establece el algoritmo. Se ajusta cada bloque de 2016 en función del tiempo de ejecución promedio de los bloques de 2016 anteriores para garantizar que el tiempo de ejecución promedio futuro se mantenga en ~10 minutos. Por supuesto, un minero podría ignorar/romper este algoritmo, pero entonces no estarían minando bloques de bitcoin válidos (estarían minando una bifurcación).
Solo para ser completamente claro: "tiempo que tomaron los últimos 2015 bloques" significa "Marca de tiempo del bloque 2016N-1 menos marca de tiempo del bloque 2016N-2016"? Y sin el error de apagado por uno, ¿habría sido el bloque 2016N-2017?
Y otra pregunta: ¿se multiplica por 2 semanas (1209600 segundos, el tiempo deseado para crear bloques de 2016) o por 1209000 (el tiempo deseado para crear bloques de 2015)?
@MeniRosenfeld Creo que sí, sí. Y es "14 * 24 * 60 * 60; // dos semanas" (primera mención de nTargetTimespan en main.cpp)
OH, son 2 semanas y bloques de 2016, no 10 minutos. 2 semanas = 20160 minutos / 2016 = 10 minutos por bloque.
¿Qué pasaría si mi cliente de bitcoin hiciera trampa y no estuviera de acuerdo con las reglas de su red, y pusiera menos o más transacciones en el bloque?
No existe una regla que requiera que se coloque un número específico de transacciones en un bloque. Esta pregunta y respuesta se trata de pruebas de trabajo en bloques, no de transacciones.

Cada cliente individual comprueba la validez de cada bloque que recibe. Si recibe un bloque no válido, lo ignora como si no existiera.

Si extrae un bloque y otros clientes lo ignoran, no obtiene sus 50 Bitcoins. Solo puede conservar sus 50 Bitcoins si el bloque que extrajo se convierte en un enlace en la cadena pública aceptada.

Una de las primeras cosas que el cliente verifica cuando recibe un bloque es que el bloque cumple con el objetivo de dificultad que calcula en función de la rapidez con que se han generado los bloques. Si ese cliente cree que ese bloque no cumple con el objetivo de dificultad que calculó, entonces ignora el bloque.

Así que tienes que minar un bloque que otros clientes acepten, o no obtendrás tus 50 Bitcoins.

Software. La red de Bitcoin se ejecuta en un conjunto de reglas previamente acordadas que están integradas en el software del cliente de Bitcoin.

Una de esas reglas es que la dificultad debe cambiarse cada 2016 bloques para que un nuevo bloque tarde, en promedio, 10 minutos en extraerse. A medida que cambia la economía, los mineros se iniciarán y apagarán, lo que hará que el bloque promedio tarde más o menos de 10 minutos en encontrar, pero la próxima vez que se extraiga otro bloque 2016, la dificultad se reajustará nuevamente.

De hecho, también reformularía su pregunta, ya que la dificultad de un bloque no está técnicamente establecida en un tiempo sino en un número. En su lugar, es posible que desee preguntar: "¿Qué hace que el tiempo promedio para extraer un bloque sea de 10 minutos?"

La dificultad se ajusta cada 2016 bloques por toda la red para promediar la generación de Bitcoin a un bloque cada 10 minutos. Si las monedas se generaron en promedio demasiado rápido desde el último ajuste, la dificultad aumenta, si se generaron demasiado lento, se reduce.

Lo que los ricos solo pueden hacer es hacer todo lo posible para tener la velocidad de hashing más alta posible. Esto haría que rompieran el bloque con más frecuencia (ganarían más dinero), además de aumentar más la dificultad, por lo que las personas con máquinas de gama más baja no podrían romper un bloque sin usar una piscina en un tiempo razonable (como es el caso corrientemente).

Lo que también pueden hacer los ricos es acaparar los Bitcoins, por lo que su valor aumentaría. Tenga en cuenta que incluso si alguien fuera dueño del 99% o más de todos los Bitcoins, la moneda seguiría siendo tan utilizable como con un conjunto más grande de monedas (los Bitcoins actualmente se pueden dividir hasta en 8 decimales, y no hay nada que detenga una implementación futura). de dividirlos aún más).

Por supuesto, si alguien quiere depreciar el valor, puede socavar la confianza que la gente tiene en las monedas. Por ejemplo, la piratería de Mt.Gox provocó que muchas personas fueran más reservadas al manipular las monedas. Por otro lado, si uno quiere aumentar el valor de Bitcoins, debe promocionarlos, convencer a nuevas personas para que inviertan en ellos y ser un miembro contribuyente de la comunidad.