¿Dónde se almacenan las variables de un contrato inteligente?

todos sabemos que podemos escribir contratos inteligentes con solidez en ethereum como:

 mapping(bytes32 => bytes32) private  userPasswds ;
    event RecordReturnResult(bool res);

    /// @dev new the pair of user and password to the array here
    function newPair(string user, string password)  returns (bool) {      
        bytes32  sha3_user = sha3(user);
        bytes32  sha3_password = sha3(password);
        bool res = true;
        if (userPasswds[sha3_user] > 0) {
            res = false;
            RecordReturnResult(res);
            return res;
        }           
        else{
            userPasswds[sha3_user] = sha3_password;
            res = true;
            RecordReturnResult(res);
            return res;
        }      
    }

¿Dónde se almacenan las variables? Por ejemplo:

    mapping(bytes32 => bytes32) private  userPasswds ;
    event RecordReturnResult(bool res);bytes32  sha3_user = sha3(user);
    bytes32  sha3_password = sha3(password);
    bool res = true;

¿Están almacenados en cadena de bloques o leveldb u otros lugares? gracias.

Muchas gracias por su respuesta. pero solo puedo elegir uno para que sea el ganador.

Respuestas (2)

estos estados se almacenan en el almacenamiento del Contrato. Cada contrato tiene su propio espacio de almacenamiento y memoria y ambos están en la cadena de bloques (leveldb físicamente).

mira el siguiente diagrama para hacerte una idea:

ingrese la descripción de la imagen aquí

Las variables de los contratos (estado) son almacenadas por la máquina virtual Ethereum en un Merkle Tree . El hash del árbol se almacena en un bloque y el bloque se conserva en el disco a través de leveldb.

gracias, dijiste que el árbol está almacenado en EVM, no en bloque, así que si se corta la electricidad, ¿faltarán los datos?