keccak256 Ошибка Необъявленный идентификатор в браузере-солидность

Я пытаюсь использовать sha3/ keccakfunctions внутри контракта Solidity, но получаю странную ошибку:

Без названия: 5:13: Ошибка: Необъявленный идентификатор.
bytes32 d = keccak256 (0x616263);

Контракт :

pragma solidity ^0.4.0;

contract C {

    bytes32 d=keccak256(0x616263);

    bytes32 a=sha3(uint256(1));
}
Какую версию компилятора Solidity вы используете?
0.4.3 nightly (в браузере солидности)

Ответы (2)

это keccak256()псевдоним для sha3функции, чтобы избежать путаницы со стандартом sha-3 (код операции по-прежнему называется SHA3). этот псевдоним был принят в этом месяце, поэтому старый компилятор его не распознает. так что используйте sha3вместо этого.

Доступные функции хеширования: 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); //<=========
    }
}

Для надежности браузера исправлено в версии 0.4.4 и выше keccak256.

keccak256рекомендуется использовать, он идентичен sha3, и менее запутан, потому что Ethereum использует не окончательный стандарт SHA-3, а исходный алгоритм победы под названием Keccak. Использование большего количества контрактов keccak256предотвратит путаницу, например, почему хэши Solidity sha3 не соответствуют тому, что производят другие библиотеки sha3?