1. Voici quelques fonctions mathématiques couramment utilisées. Leur utilisation est plus sûre et plus fiable.
addmod(uint x, uint y, uint k) renvoie (uint) : calcule x + y modulo k.
mulmod(uint x, uint y, uint k) renvoie (uint) : calcule x * y modulo k.
2. API liée à la fonction de hachage
La fonction de hachage est également appelée fonction de hachage : une entrée de n'importe quelle longueur est transformée en une sortie de longueur fixe via un algorithme de hachage (MD4, MD5, ripemd-160, famille de fonctions de hachage cryptographique SHA "Secure Hash Algorithm").
Famille SHA :
SHA1 : valeur binaire de 160 bits, dont il est actuellement prouvé qu'il n'est pas particulièrement sécurisé. Il est possible que différentes valeurs d'entrée obtiennent la même valeur de hachage.
SHA2 : SHA-224, SHA-256, SHA-384 et SHA-512. Les différents nombres derrière représentent la longueur de la valeur de hachage calculée.
SHA3 : algorithme Keccak
Quelles fonctions de hachage la solidité fournit-elle ?
keccak256(...) renvoie (bytes32) : basé sur l'algorithme de hachage Keccak-256, calcule la valeur de hachage de l'entrée de longueur variable.
sha256(...) renvoie (bytes32) : sur la base de l'algorithme de hachage SHA-256, calculez la valeur de hachage de l'entrée de longueur variable.
ripemd160(...) renvoie (bytes20) : basé sur l'algorithme de hachage RIPEMD-160, calcule la valeur de hachage de l'entrée de longueur variable.
sha3(...) renvoie (bytes32) : il s'agit en fait d'un alias pour la fonction keccak256. L'utilisation de cette fonction n'est plus recommandée dans Solidity0.4.16 et les versions ultérieures.
La valeur de hachage du sélecteur de fonction en solidité est calculée à l'aide de l'algorithme de hachage keccak256. La valeur de hachage des 4 premiers octets est prise comme identification du sélecteur de fonction.
3. fonction de récupération
Nous pouvons récupérer l'adresse associée à la clé publique via une signature à courbe elliptique, ecrecover(bytes32 hash,uint8 v,bytes32 r,bytes32 s)returns(address)
Les quatre paramètres sont :
Hachage : la valeur de hachage des données signées, r, s et v proviennent respectivement de la chaîne de résultat de la signature.
r = signature[0:64]
s = signature[64:128]
v = signature[128:130]+27