¿Cómo verifica Ethereum que existe una cuenta si esa cuenta no realizó ninguna transacción?

https://blog.ethereum.org/2015/11/15/merkling-in-ethereum/ :

Esto permite un protocolo de cliente ligero muy avanzado que permite a los clientes ligeros realizar y obtener fácilmente respuestas verificables a muchos tipos de consultas: ... ¿Existe esta cuenta?

es manejado por el árbol de estado, pero la forma en que se calcula es más compleja. Aquí, necesitamos construir lo que se puede llamar una prueba de transición de estado de Merkle. Esencialmente, es una prueba que hace la afirmación "si ejecuta la transacción T en el estado con la raíz S, el resultado será un estado con la raíz S ', con el registro L y la salida O".

Cuando comenzamos a usar getho paritypodemos crear un número ilimitado de cuentas, cada una con una dirección única, por ejemplo: ' 0xe427c111f968fe4ff6593a37454fdd9abf07c490'. Según tengo entendido, si no hay ninguna transacción en esta dirección, no aparecerá en el árbol de estado.

[Q] Si una cuenta no realizó ninguna transacción, ahora aparecerá en el árbol de estado. Entonces, ¿cómo podría Ethereum saber que esa cuenta realmente existe y que ahora tiene alguna huella en el árbol estatal?

[P] Además de eso: por lo tanto, cada usuario puede crear un número ilimitado de cuentas. Si un usuario crea miles de millones de cuentas, y cada una llevará una transacción sin parar entre sí. ¿Toda la información de la cuenta se almacenará en el Estado mundial? En caso afirmativo, esto puede consumir mucha memoria a largo plazo.

Gracias por su valioso tiempo y ayuda.

Respuestas (1)

En el primer trimestre, tiene razón en que simplemente "crear" una cuenta en un cliente no hace que se rastree como parte del estado de la cadena de bloques. Todo lo que ha hecho es tomar una clave privada y generar la dirección para ella; esto está completamente fuera de línea y no requiere ninguna interacción con la cadena de bloques. En este sentido, todas las cuentas ya existen, pero la cadena de bloques solo rastrea aquellas cuentas para las que hay al menos una transacción entrante (y que no se han autodestruido). Si una cuenta no tiene transacciones, la cadena de bloques no necesita "saber" al respecto; cuando realiza la primera transacción en esa cuenta, se agrega al estado de blockchain.

En Q2, en principio tienes razón. En la práctica, para que la cadena de bloques agregue una cuenta al estado, debe enviarle una transacción. Esto cuesta algo de gasolina, idealmente suficiente gasolina para evitar que alguien la envíe spam. Sin embargo, esto no siempre fue así. A fines del verano de 2016, un atacante aprovechó una forma económica de crear cuentas y, de hecho, envió spam a la cadena de bloques con "inflación estatal". Estas cuentas de spam se borraron más tarde del estado de la cadena de bloques, y el costo del gas de creación de la cuenta se volvió a fijar para desalentar este tipo de cosas en el futuro.

Consulte EIP-150 para ver el cambio de precio del código de operación para evitar esto. Aquí hay una explicación detallada de cómo se llevaron a cabo los ataques de aumento de estado. Un poco de discusión sobre el problema y la limpieza de Vitalik.