keccak256 Error Identificador no declarado en la solidez del navegador

Intento usar sha3/ keccakfunciones dentro de un contrato de Solidity, pero aparece un error extraño:

Sin título: 5:13: Error: identificador no declarado.
bytes32 d=keccak256(0x616263);

El contrato :

pragma solidity ^0.4.0;

contract C {

    bytes32 d=keccak256(0x616263);

    bytes32 a=sha3(uint256(1));
}
¿Qué versión del compilador de Solidity estás usando?
0.4.3 todas las noches (en el navegador Solidity)

Respuestas (2)

the keccak256()es un alias para la sha3función para evitar confusiones con el estándar sha-3 (el código de operación todavía se llama SHA3). Este alias se adoptó este mes para que el antiguo compilador no lo reconozca. así que usa en su sha3lugar.

Las funciones hash disponibles son sha3, sha256, ripemd160:

pragma solidity ^0.4.0;

contract C { 

    function hashingsha3 (string s)   returns  (bytes32 hash){
        return sha3(s);//<=========
    }

    function hashingsha256 (string s)   returns  (bytes32 hash){
        return sha256(s); //<=========
    }

    function ripemd160 (string s)   returns  (bytes20 hash){
        return ripemd160(s); //<=========
    }
}

Para la solidez del navegador, keccak256se corrigió en la versión 0.4.4 y posteriores.

keccak256Se recomienda su uso, es idéntico a sha3, y es menos confuso porque Ethereum no usa el estándar SHA-3 final, sino el algoritmo ganador original llamado Keccak. El uso de más contratos keccak256evitará confusiones como ¿Por qué los hashes sha3 de Solidity no coinciden con lo que producen otras bibliotecas sha3?