1. Ниже приведены некоторые часто используемые математические функции. Их использование безопаснее и надежнее.
addmod(uint x, uint y, uint k) возвращает (uint): вычисляет x + y по модулю k.
mulmod(uint x, uint y, uint k) возвращает (uint): вычисляет x * y по модулю k.
2. API, связанный с хэш-функцией
Хэш-функция также называется хэш-функцией: входные данные любой длины преобразуются в выходные данные фиксированной длины с помощью хеш-алгоритма (MD4, MD5,ripemd-160, семейство криптографических хеш-функций SHA «Secure Hash Algorithm»).
Семья ША:
SHA1: 160-битное значение, которое в настоящее время не является особенно безопасным. Вполне возможно, что разные входные значения получат одно и то же значение хеш-функции.
SHA2: SHA-224, SHA-256, SHA-384 и SHA-512. Различные числа позади представляют рассчитанную длину хеш-значения.
SHA3: алгоритм Кечака
Какие хеш-функции предоставляет Solidity?
keccak256(...) возвращает (bytes32): на основе алгоритма хеширования Keccak-256 вычисляет хэш-значение входных данных переменной длины.
sha256(...) возвращает (bytes32): на основе алгоритма хеширования SHA-256 вычисляет хэш-значение входных данных переменной длины.
ripemd160(...) возвращает (bytes20): на основе алгоритма хеширования RIPEMD-160 вычисляет хэш-значение входных данных переменной длины.
sha3(...) возвращает (bytes32): на самом деле это псевдоним функции keccak256. Использование этой функции больше не рекомендуется в Solidity0.4.16 и более поздних версиях.
Хэш-значение селектора функций в Solidity рассчитывается с использованием хэш-алгоритма keccak256. Хэш-значение первых 4 байтов используется в качестве идентификации селектора функций.
3. функция секретного восстановления
Мы можем восстановить адрес, связанный с открытым ключом, с помощью подписи эллиптической кривой, ecrecover(bytes32 hash,uint8 v,bytes32 r,bytes32 s)returns(address)
Четыре параметра:
Хэш: хэш-значение подписанных данных, r, s и v соответственно, берутся из строки результата подписи.
г = подпись[0:64]
s = подпись[64:128]
v = подпись[128:130]+27