1. A seguir estão algumas funções matemáticas comumente usadas. Usá-las é mais seguro e confiável.
addmod(uint x, uint y, uint k) retorna (uint): Calcula x + y módulo k.
mulmod(uint x, uint y, uint k) retorna (uint): Calcula x * y módulo k.
2. API relacionada à função hash
A função hash também é chamada de função hash: a entrada de qualquer comprimento é transformada em uma saída de comprimento fixo por meio de um algoritmo hash (família de funções hash criptográficas MD4, MD5, maduro-160, SHA "Secure Hash Algorithm").
Família SHA:
SHA1: valor de bit de 160 bits, atualmente comprovado como não particularmente seguro. É possível que diferentes valores de entrada obtenham o mesmo valor de hash.
SHA2: SHA-224, SHA-256, SHA-384 e SHA-512 Os diferentes números atrás representam o comprimento do valor hash calculado.
SHA3: algoritmo Keccak
Quais funções hash a solidez fornece?
keccak256(...) retorna (bytes32): Com base no algoritmo hash Keccak-256, calcula o valor hash da entrada de comprimento variável.
retornos sha256(...) (bytes32): Com base no algoritmo de hash SHA-256, calcule o valor de hash da entrada de comprimento variável.
Ripemd160(...) retorna (bytes20): Com base no algoritmo de hash RIPEMD-160, calcule o valor de hash da entrada de comprimento variável.
sha3(...) retorna (bytes32): Este é na verdade um alias para a função keccak256. O uso desta função não é mais recomendado no Solidity0.4.16 e versões posteriores.
O valor hash do seletor de função no Solidity é calculado usando o algoritmo hash keccak256. O valor hash dos primeiros 4 bytes é considerado a identificação do seletor de função.
3. função ecrecover
Podemos recuperar o endereço associado à chave pública através da assinatura da curva elíptica, ecrecover(bytes32 hash,uint8 v,bytes32 r,bytes32 s)returns(address)
Os quatro parâmetros são:
Hash: O valor hash dos dados assinados, r, s e v, respectivamente, vem da string de resultado da assinatura.
r = assinatura[0:64]
s = assinatura[64:128]
v = assinatura[128:130]+27