Diferencia entre una cadena de bloques podada y no podada

En el encuentro de Blockchain de Berlín, Gustav Simonsson se burló del lanzamiento de Homestead próximamente (tm) y estuvimos discutiendo la expansión de la cadena de bloques y el tamaño actual de la cadena de bloques de Ethereum.

Reunión de Blockchain de Berlín

Discutimos la cadena de bloques podada y no podada y la opción de sincronización rápida geth . Ahora me pregunto:

  1. ¿Cuál es la diferencia entre una cadena de bloques podada y no podada? ¿La cadena de bloques podada todavía consiste en bloques? ¿Es incluso una "cadena de bloques" ?
  2. ¿Cuál es la diferencia en los requisitos de espacio? La cadena completa, sin podar, actualmente tiene un tamaño de 7 GB. ¿Cuánto espacio requiere una cadena podada?
  3. ¿Qué hay de los clientes de sincronización rápida podados a clientes ligeros? Si los requisitos de espacio son menores, ¿no es mejor usar clientes de sincronización rápida en lugar de clientes ligeros inseguros?

¿Los clientes de cadena podada pueden ser considerados clientes ligeros?

Respuestas (2)

Vamos a dar un paso a la vez.

Las cadenas de bloques generalmente funcionan al tener un estado de origen (génesis) con algunas cuentas que tienen fondos, y luego cada bloque que colocas en la parte superior de la cadena mueve esos fondos de origen, lo que también otorga un poco más para el minero. Entonces, siempre que importe un nuevo bloque a su cadena existente para ver cuál es su visión (estado) del mundo, y transforme ese estado de acuerdo con las transacciones contenidas en el bloque, llegando a una nueva visión de lo que cree que es el parece el mundo. No descarta su visión anterior del mundo porque si hay una bifurcación en la cadena de bloques (por ejemplo, aparece un minero con un bloque mejor, o tal vez dos bloques mejores), entonces necesita transformar su visión de ese estado pasado a la mejor versión. Esto lleva a que todos los estados pasados ​​por los que hiciste la transición se acumulen para la eternidad.

Lo importante a tener en cuenta es que la mayoría de las veces no le importa cuánto fondo tenía una cuenta hace 3 años, solo le importa cuál es el estado actual (tal vez hace unos días también). Entonces, ¿por qué mantener todo ese estado de transición pasado extremadamente antiguo? La poda estatal es esencialmente tomar todo ese estado intermedio y tirarlo por el inodoro. Lo importante a tener en cuenta es que solo desecha la visión intermedia del mundo, nunca los bloques en sí mismos ni ningún otro dato que pueda no ser saludable para la red (es decir, un nodo que se une necesita esos datos para sincronizarse). Por lo tanto, al podar su prueba de estado, pierde la capacidad de consultar el saldo anterior de las cuentas, pero se beneficia de la reducción de la cantidad de datos almacenados a alrededor de 1/5-1/6 de su tamaño original.

Bien, ¿qué pasa con la sincronización rápida? Bueno, siguiendo el patrón de pensamiento anterior, si no le importa el saldo de una cuenta aleatoria de hace 3 años, ¿por qué querría reproducir todo el historial de transacciones de la cadena de bloques, solo para llegar al estado actual? Entonces, lo que hace la sincronización rápida es que descarga toda la cadena de bloques, pero no ejecuta las transacciones que generan la vista del mundo un bloque a la vez. En su lugar, solo verifica la prueba de trabajo, y cuando se descarga toda la cadena, mira la raíz del estado (hash que define la visión actual del mundo) y descarga la base de datos de estado directamente desde dentro de la red, reconstruyendo el estado final desde el principio. , sin necesidad de los estados transitorios para ello. Esto significa que, además de descargar los bloques, necesita descargar másdatos, el estado se prueba a sí mismo, por lo que está intercambiando ancho de banda por potencia de procesamiento (es decir, descargo el estado, no lo genero). El resultado final de la sincronización rápida es una base de datos podada de todos los intentos y propósitos, solo que a través de un medio diferente. El tamaño actual de dicha base de datos es de 1,2 a 1,3 GB.

Solo una pregunta de seguimiento: si deseaba generar un saldo de cuenta para una cuenta aleatoria hace 3 años, aún podría hacerlo con la cadena recortada. Solo tendría que volver a ejecutar las transacciones que conducen al bloque que le interesa. ¿Es correcto?

No puedo comentar, pero esto ahora se propone en EIP-4444 .