Supongo, dada la reciente autorización del estado, que los clientes de Ethereum solo deben almacenar el estado actual de cada cuenta en lugar de todo el estado histórico. (De lo contrario, si almacenara un registro de todos los estados anteriores de cada cuenta, ¿no seguiría almacenando las 20 000 000 cuentas vacías?)
Pero, si los clientes solo almacenan el estado actual, ¿cómo informan de manera eficiente sobre los saldos anteriores como lo hacen bajo esta llamada RPC ( https://github.com/ethereum/wiki/blob/master/JSON-RPC.md#eth_getbalance ) que toma una altura de bloque opcional?
¿Los clientes revisan la lista de todas las transacciones para generar saldos anteriores o los clientes realmente almacenan saldos anteriores? Si almacenan saldos anteriores, ¿almacenan algún otro historial por cuenta?
Un nodo completo de Ethereum almacena el estado histórico. De hecho, cada bloque contiene la raíz del árbol de estado, de modo que "toma instantáneas" de todo el estado de cada bloque. La razón por la que esto no es un enorme desperdicio de espacio es que los árboles Patricia se pueden combinar fácilmente con el tiempo. Puede almacenar el código del contrato una vez, y cada vez que se hace referencia a él, puede volver a hacer referencia a él.
La limpieza estatal fue principalmente para nodos ligeros. Si todo lo que le importa es cuál es el estado ahora , no hay necesidad de tener los estados inflados de antes. Para la sincronización rápida de geth y la sincronización warp de parity, es aún más importante que el estado sea pequeño; de lo contrario, tendrá mucho más para descargar. Además, cuanto mayor sea el estado actual, más recursos consume un nodo completo en ejecución, lo que en sí mismo es una razón para borrar el estado.
ética
thomas jay prisa