Я пытаюсь использовать sha3
/ keccak
functions внутри контракта Solidity, но получаю странную ошибку:
Без названия: 5:13: Ошибка: Необъявленный идентификатор.
bytes32 d = keccak256 (0x616263);
Контракт :
pragma solidity ^0.4.0;
contract C {
bytes32 d=keccak256(0x616263);
bytes32 a=sha3(uint256(1));
}
это 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?
эт
Сиг Тури