Насколько я знаю, есть 3 хеш-функции на выбор в солидности ( sha3
, sha256
и ripemd
). sha3 является родным, в то время как другие используют предварительно скомпилированные контракты.
Какой из них самый дешевый (с точки зрения газа)?
keccak256
(новый псевдоним для sha3
) самый дешевый.
Источник: Желтая бумага
В Приложении G указана стоимость газа sha3
:
В Приложении E указана стоимость остальных.
sha256
(SHA2-256) стоит:
ripemd
еще дороже:
sha3
встроенной функции (в отличие от директивы сборки) в настоящее время создают вызов контракта в Solidity, что намного дороже, чем должно быть.blah = sha3(blah blah)
и assembly { blah = sha3(blahblahblah) }
?sha3
это не точно keccak256
. Исходный код Ethereum keccak256
подтверждает это.sha3
. "Функция хеширования Ethereum, keccak256, иногда (ошибочно) называемая sha3
" github.com/ethereum/eth-hashkeccak256(abi.encodePacked(...))
и через assembly {c := keccak256(add(encoded, 0x20), 40)}
. Сборочная версия на самом деле стоила на 11 бензинов дороже.
Джеффри В.
АФ