Velocidad de confirmación de bloque

Según cualquier estándar que considere relevante, ¿con qué rapidez se verifican los bloques actuales para el seguimiento de reglas, como recuentos de saldos correctos, transacciones verdaderas, recompensas y tarifas correctas?

¿Es este un proceso oneroso? ¿Una base de datos aceleraría este proceso?

¿Tiene alguna sugerencia para mejorar la velocidad de verificación de bloques?

Respuestas (2)

La mayor parte del trabajo consiste en verificar cada transacción dentro del bloque. Esto significa que las firmas deben verificarse para cada entrada de transacción, lo que requiere mucho procesamiento de la CPU. Entonces, una forma de mejorar la velocidad de verificación sería tener una asistencia de hardware para el proceso de verificación (como un chip ASIC especializado). No sé si se podría usar un ASIC minero, pero es un pensamiento interesante.

Eso no es correcto. Mira mi respuesta.
¡Gracias, ScripterRon! ¿Qué hay de buscar transacciones anteriores para asegurarse de que las nuevas se equilibren? ¿No es un proceso terriblemente intensivo en disco? ¡Muchas gracias por adelantado!
El cliente bitcoin utiliza la base de datos LevelDB para almacenar los resultados de las transacciones. Estoy usando la base de datos H2 en mi propia aplicación para almacenar tanto la cadena de bloques como los resultados de las transacciones. No estoy seguro de que haya mucho más por hacer además de ajustar el rendimiento en áreas de alto uso (mejores argumentos de búsqueda de SQL, índices, cachés, etc.).
¡Muchas gracias de nuevo ScripterRon! ¡Gracias por responderme muchas de mis preguntas y darme este curso intensivo! Pude hacer hash perezosamente a aproximadamente 1 M/seg, por lo que no entiendo cómo la verificación de bloques simple es tan intensiva. O algo se ajusta o no, ¿no? ¿Tiene alguna estadística sobre el tiempo promedio de verificación de bloques frente al poder de hash? Definitivamente puedo entender cómo un ataque DDoS con bloques malos podría atascar uno, pero no entiendo cómo verificar los bloques de los buenos actores es oneroso, excepto en el disco. ¡Muchas gracias de antemano!
La verificación de la firma requiere un uso intensivo de la CPU, ya que primero debe derivar la clave pública de la dirección y luego usar la clave pública para verificar la firma. El proceso de verificación digital utiliza números muy grandes y fórmulas matemáticas complejas. Consulte en.bitcoin.it/wiki/Transactions para obtener más información.
Debo agregar que la verificación de transacciones no es un problema cuando obtiene un nuevo bloque una vez cada 10 minutos. Solo se convierte en un problema cuando descarga la cadena de bloques inicial (ya sea desde bootstrap.dat o un nodo par). Luego se convierte en un factor de activación de la velocidad con la que el nuevo nodo puede sincronizarse con la red. Y tiene razón, hacer coincidir las entradas de transacciones con las salidas no gastadas requiere un uso intensivo del disco. Por lo tanto, es una combinación de verificación de firmas, coincidencia de entradas con salidas y creación de nuevas entradas en la base de datos.
¡Gracias, como siempre, ScripterRon! ¡Me has ayudado mucho con mi comprensión de bitcoin! ¿La clave pública no está simplemente concatenada con la firma (¿o he leído mal una vez más?)? ¿No se puede realizar un solo hash o "descifrado" de forma muy económica? Muchas gracias una y otra vez por adelantado!
Recién me estoy metiendo en esta área, así que no puedo decirte con certeza. Pero creo que la clave pública no está en la entrada, por lo que todo lo que tienen es la dirección de la salida a la que se hace referencia. Entonces, el código primero debe derivar la clave pública usando la dirección y los datos firmados. Una vez que tiene la clave pública, puede realizar la verificación de la firma. Creo que se hizo de esta manera para reducir el tamaño de la transacción (las claves públicas son muy largas)

El proceso de verificación de transacciones no es particularmente intensivo en CPU o memoria. La parte intensiva de la CPU es el protocolo de red necesario para obtener un consenso global sobre un solo pedido total de transacciones. Eso se llama "minería" y para eso están diseñados los ASIC especializados de varias compañías como kncminer.

Depende de qué parte del proceso estés viendo. Definitivamente, si está buscando el final de la minería, encontrar el hash de bloque correcto es lo que más requiere la CPU. Sin embargo, si está observando los nodos pares que reciben bloques, entonces la verificación de transacciones es la que requiere más CPU. Esta es una de las razones por las que un nuevo compañero tarda tanto en procesar la cadena de bloques.
¡Gracias, Neal Gafter! ¿Le importaría explicar por qué la verificación no es costosa y por qué la parte de la red sí lo es? Parece que cada parte individual podría ser rápida, pero lo será menos con una mayor frecuencia de verificación. ¡Muchas gracias de antemano!
Descargué toda la cadena de bloques, la copié en una máquina fuera de línea, recientemente formateada, y todavía tuve que esperar (¿una hora? 2? No recuerdo ahora) antes de que todo estuviera listo, por lo que claramente verificar toma mucho tiempo. tiempo y CPU. Una vez leí que el proceso podría acelerarse si el cliente QT usa la GPU para verificar, tal como se usa para la minería, pero hasta ahora no he visto ninguna implementación de esta idea...