AFAIK hay 3 funciones hash para elegir en solidez ( sha3
, sha256
y ripemd
). sha3 es nativo mientras que los otros usan contratos precompilados.
¿Cuál de estos es más barato (en términos de gasolina)?
keccak256
(nuevo alias para sha3
) es más barato.
Fuente: Papel Amarillo
El Apéndice G menciona que el costo del gas sha3
es:
El Apéndice E tiene los costos para los demás.
sha256
(SHA2-256) costos:
ripemd
es aún más caro:
sha3
función incorporada (a diferencia de la directiva de ensamblaje) actualmente parecen crear una invocación de contrato en Solidity, que es mucho más costosa de lo que debería ser.blah = sha3(blah blah)
y assembly { blah = sha3(blahblahblah) }
?sha3
no es exactamente keccak256
. El código fuente de Ethereum keccak256
lo confirma.sha3
. "La función hash de Ethereum, keccak256, a veces (erróneamente) llamada sha3
" github.com/ethereum/eth-hashkeccak256(abi.encodePacked(...))
y vía assembly {c := keccak256(add(encoded, 0x20), 40)}
. La versión de ensamblaje en realidad terminó costando 11 gasolina más.
jeffrey w.
FA