1. Las siguientes son algunas funciones matemáticas de uso común. Usarlas es más seguro y confiable.
addmod(uint x, uint y, uint k) devuelve (uint): Calcula x + y módulo k.
mulmod(uint x, uint y, uint k) devuelve (uint): Calcula x * y módulo k.
2. API relacionada con la función hash
La función hash también se denomina función hash: la entrada de cualquier longitud se transforma en una salida de longitud fija mediante un algoritmo hash (MD4, MD5, ripemd-160, familia de funciones hash criptográficas SHA "Secure Hash Algorithm").
Familia SHA:
SHA1: valor de bits de 160 bits, actualmente se ha demostrado que no es particularmente seguro. Es posible que diferentes valores de entrada obtengan el mismo valor hash.
SHA2: SHA-224, SHA-256, SHA-384 y SHA-512. Los diferentes números detrás representan la longitud del valor hash calculado.
SHA3: algoritmo de Keccak
¿Qué funciones hash proporciona la solidez?
keccak256(...) devuelve (bytes32): basado en el algoritmo hash Keccak-256, calcula el valor hash de la entrada de longitud variable.
sha256(...) devuelve (bytes32): según el algoritmo hash SHA-256, calcula el valor hash de la entrada de longitud variable.
ripemd160(...) devuelve (bytes20): según el algoritmo hash RIPEMD-160, calcula el valor hash de la entrada de longitud variable.
sha3(...) devuelve (bytes32): en realidad, este es un alias para la función keccak256. El uso de esta función ya no se recomienda en Solidity0.4.16 y versiones posteriores.
El valor hash del selector de funciones en solidez se calcula utilizando el algoritmo hash keccak256. El valor hash de los primeros 4 bytes se toma como la identificación del selector de funciones.
3. función ecrecover
Podemos recuperar la dirección asociada a la clave pública mediante la firma de curva elíptica, ecrecover(bytes32 hash,uint8 v,bytes32 r,bytes32 s)returns(address)
Los cuatro parámetros son:
Hash: el valor hash de los datos firmados, r, s y v respectivamente, provienen de la cadena de resultado de la firma.
r = firma[0:64]
s = firma[64:128]
v = firma[128:130]+27