En bitcoin, la probabilidad de descubrir un bloque en el hash X-ésimo es el mismo 1 que en el hash Y-ésimo. Como tal, la probabilidad de descubrimiento es estocásticamente dependiente .
¿Existen algoritmos de prueba de trabajo que sean estocásticamente dependientes ? Los mineros que usan uno pueden no tener idea de qué tan cerca están de un descubrimiento, pero saben que se están "acercando".
Siga leyendo si desea una descripción rápida y sucia de por qué creo que tal algoritmo podría ser interesante:
Una consecuencia de la independencia estocástica de bitcoin es que cada vez que un minero descubre un bloque, ninguno de los otros mineros de la competencia está "más cerca" de redescubrir el mismo bloque (con un hash diferente pero válido que también resuelve la dificultad). Por supuesto, es natural entonces que Bitcoin no proporcione ningún incentivo/recompensa por redescubrir bloques, ya que es mejor gastar esa prueba de trabajo intentando descubrir el bloque más nuevo. Sin embargo, desafortunadamente, un atacante con suficiente poder de hashing y tiempo tiene buenas posibilidades de vencer a la competencia varias veces seguidas; por eso se dice que para estar seguro debe esperar 6 confirmaciones, lo que equivale a una hora de tiempo de espera de la transacción. Podríamos decir que en bitcoin las confirmaciones son seriales .
Por el contrario, la prueba de trabajo estocásticamente dependiente podría permitir la implementación eficiente de procesos paralelos .confirmaciones; lo que reduce en gran medida el tiempo de espera de la transacción, ya que se puede esperar que los redescubrimientos sigan poco después del primer descubrimiento de un bloque. Suponga que una criptomoneda usa tales pruebas para recompensar no solo el primer descubrimiento de un bloque, sino también la primera X de sus redescubrimientos. El receptor del pago solo necesita verificar que la transacción figura en todos los descubrimientos del bloque (o al menos en un porcentaje lo suficientemente alto). Idealmente, la cantidad de poder de hash que necesita un atacante para realizar redescubrimientos debería ser la misma que para el descubrimiento inicial (crecer linealmente). Estos hashes de redescubrimiento podrían registrarse de la misma manera que las transacciones, al incluirse por una tarifa/recompensa en un bloque secundario.
1 En realidad, la probabilidad aumenta ligeramente cuando aún no se han descubierto bloques, y solo se altera un mínimo fijo de bits, como cuando solo se aumenta el campo nonce; pero la diferencia es tan pequeña que no importa, dada la cantidad astronómica de posibles hashes que resuelven la dificultad actual.
¿Existen algoritmos de prueba de trabajo que sean estocásticamente dependientes?
Sí. Otra idea similar a la que Nick describió:
Agregue 8 bytes adicionales al final de cada transacción al hacer el árbol Merkle, en un campo llamado nEffort
. El nBits
campo del encabezado describe la cantidad total de trabajo que se debe realizar (en promedio) en el bloque. Dividir ese trabajo por el número de transacciones en el bloque, y luego puede minar cada transacción individualmente alterando nEffort
hasta que la hoja del árbol merkle tenga un valor lo suficientemente bajo. Tenga en cuenta que esto no reemplaza los ID de transacciones, sería esencialmente solo un campo adicional de cada elemento de hoja del árbol merkle.
Para verificar el trabajo, asegúrese de que cada hoja del árbol Merkle cumpla con el parámetro dificultad/Número_de_transacciones.
Las desventajas de esto:
Probablemente no sea una buena idea, pero es otra forma de hacer una prueba de trabajo estocásticamente dependiente.
Los mineros que usan uno pueden no tener idea de qué tan cerca están de un descubrimiento, pero saben que se están "acercando".
Sí, esto es posible.
En lugar de requerir un encabezado de bloque con dificultad A, podría requerir 16 encabezados de bloque con dificultad A/16. Esto haría posible averiguar qué tan avanzado está en el proceso.
Por el contrario, la prueba de trabajo estocásticamente dependiente podría permitir la implementación eficiente de confirmaciones paralelas; lo que reduce en gran medida el tiempo de espera de la transacción, ya que se puede esperar que los redescubrimientos sigan poco después del primer descubrimiento de un bloque. Suponga que una criptomoneda usa tales pruebas para recompensar no solo el primer descubrimiento de un bloque, sino también la primera X de sus redescubrimientos.
Eso es posible también. Puede hacer esto haciendo que cada bloque en Bitcoin tenga 1 o más padres. Necesitaría algún tipo de regla de vía para decidir qué transacciones mantener en un bloque de combinación (ya que algunas inevitablemente entrarían en conflicto).
codificador morse