Por ejemplo, en el sitio BAT ico , puede ver la dirección del contrato de venta colectiva , el ABI y también una cadena para usar en la parte de datos de su transacción si no desea llamar a la función del contrato usando el ABI.
El dato a poner en la transacción es 0xb4427263 que corresponde a la función createTokens().
¿Cómo lograron obtener este valor hexadecimal 0xb4427263? ¿Tuvieron que hacer una transacción usando el ABI primero y luego obtener los datos de la transacción o hay una forma directa de obtener el valor sin enviar una transacción?
Para este ejemplo específico, toma la firma del método createToken()
y calcula su hash SHA3 0xb4427263722d66ea37c3d76cba9c56b0f1a7d6e049effc1f9f75567547fd47eb
, luego toma los primeros 4 bytes (8 caracteres hexadecimales) y tiene 0xb4427263
. Como no hay argumentos para pasar, esos son todos los datos.
web3.sha3("createTokens()").substr(0,10)
Las especificaciones completas para esta codificación se pueden encontrar en https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI
ismael
ismael