Esta pregunta se hizo en Reddit hace un tiempo:
Sin embargo, ¿dónde se almacenan realmente los datos de estado? ¿En el disco duro de cada nodo? ¿Separado o dentro de la cadena de bloques? — Reddit: Preguntas básicas sobre Ethereum EVM y State Storage
Conceptualmente, hay 2 componentes importantes de una cadena de bloques basada en cuentas:
Un nodo "completo/de archivo" podría almacenar todas las transacciones y las transiciones de estado resultantes para todas las alturas de bloque en un almacén de datos local. Esto incluiría todos los estados históricos, incluso aquellos que ya no son válidos. Esto permite a los clientes consultar el estado de la cadena de bloques en cualquier momento del pasado sin tener que volver a calcular todo desde el principio. Es probable que esto requiera grandes cantidades de almacenamiento en disco y, debido a que no es estrictamente necesario, los datos de la cadena de bloques se pueden separar conceptualmente:
Si bien se necesitarán todos los datos de la cadena para garantizar la cadena de custodia criptográfica y que no se haya manipulado nada, los datos de estado antiguos se pueden descartar (lo que se conoce como "poda"). Esto se debe a que los datos de estado son datos implícitos . Es decir, su valor se conoce solo a partir del cálculo, no de la información real comunicada. Por el contrario, los datos de la cadena son explícitos y se almacenan como la propia cadena de bloques.
Por lo tanto, actualmente, mientras que los datos de la cadena y del estado se almacenan localmente en el disco del nodo, solo los datos de la cadena son estrictamente necesarios. Los datos de estado pueden ser efímeros.
Técnicamente, los estados se ensamblan en un árbol de estados (patricia-tree) vinculado a la cuenta (saldo en caso de EAO y saldo y almacenamiento en caso de cuenta de contrato) y a los bloques (cifras a continuación). Físicamente, los estados son parte de la cadena de bloques, por lo que puede encontrarlos en la carpeta .ethereum (en una base de datos leveldb) de cada nodo completo. Para obtener más detalles, visite este enlace .
@Badr Ballaj
tu enlace no funciona. Presumiblemente debería ser blog.ethereum.org/2015/06/26/state-tree-pruning .Fusión de pepitas de información de múltiples fuentes (principalmente, this y this ):
Vaibhav Saini