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