¿Cómo comparar hash de dos estructuras?

function checkOffers() public returns (bool){
    uint256 a = sha256(offerFromProducer);
    uint256 b = sha256(offerFromConsumer);
    if(a == b){
        return true;
    }
    return false;
}

ingrese la descripción de la imagen aquí

¿Hay algún método para comparar dos estructuras en Solidity?

Respuestas (1)

El valor de retorno de sha256es bytes32. Así que usa bytes32 a = sha256(...)y haz lo mismo para b. Esto solucionará los errores del compilador y a == bfuncionará.

Pero actualmente no puede pasar una estructura a funciones hash como sha256: https://github.com/ethereum/solidity/issues/980keccak256 . Por lo general, los miembros de las estructuras deben compararse entre sí. Una pregunta más específica puede ayudar a descubrir posibles optimizaciones (por ejemplo, puede haber formas de reducir las comparaciones requeridas según el diseño de la aplicación).

¡Gracias! ¿Puede dar consejos sobre cómo comparar dos estructuras con tales campos?struct Offer { uint amount; address transportCompany; string deliveryAddres; }