Solidity tiene una función nombrada sha3
y la probé con una entrada de cadena vacía. No coincide con lo que producen otras bibliotecas sha3. Veo contratos escritos por otros usando la misma sha3
función en Solidity, y sus valores hash tampoco coinciden. web3.sha3
Lo mismo ocurre con los hashes de Javascript . ¿Por qué?
Ethereum usa Keccak-256 , en lugar del estándar SHA-3 FIPS 202. En las bibliotecas sha3 que está utilizando, intente buscar la opción para especificar usando Keccak-256.
Para Python, consulte Obtener ID de método "Keccak hash" en Python
Para Javascript, esta biblioteca js-sha3 implicaría usar la keccak_256
función en lugar de sha3_256
.
keccak_256('');
// c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
sha3_256('');
// a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a
Otros:
keccak_256('The quick brown fox jumps over the lazy dog');
// 4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15
keccak_256('The quick brown fox jumps over the lazy dog.');
// 578951e24efd62a3d63a86f7cd19aaa53c898fe287d2552133220370240b572d
sha3_256('The quick brown fox jumps over the lazy dog');
// 69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04
sha3_256('The quick brown fox jumps over the lazy dog.');
// a80f839cd4f83f6c3dafc87feae470045e4eb0d366397d5c6ce34ba1739f734d
keccak()
puede permitir múltiples entradas dentro del contrato inteligente como: keccak256(97, 98, 99)
. ¿Cómo podríamos lograr esto usando keccak_256() que representaste? @eth♦Ampliando esta respuesta :
Ethereum utiliza hash Keccak, que se presentó a la competencia NIST para SHA3. Posteriormente, fue seleccionado como ganador en 2012, pero el estándar final solo se publicó en agosto de 2015.
Ethereum usa Keccak en su forma, ya que fue seleccionado en 2012. Lástima que algunos parámetros del algoritmo se ajustaron para la especificación final en 2015, lo que lo hizo incompatible con el original.
La mayoría de las herramientas en línea implementan la versión final de 2015 de SHA3.
JB
ética
hudson jameson
ética
alberto renshaw