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