1. Im Folgenden sind einige häufig verwendete mathematische Funktionen aufgeführt, deren Verwendung sicherer und zuverlässiger ist.

addmod(uint x, uint y, uint k) gibt (uint) zurück: Berechnet x + y modulo k.

mulmod(uint x, uint y, uint k) gibt (uint) zurück: Berechnet x * y modulo k.

2. API im Zusammenhang mit der Hash-Funktion

Die Hash-Funktion wird auch als Hash-Funktion bezeichnet: Eine Eingabe beliebiger Länge wird durch einen Hash-Algorithmus (MD4, MD5, Maturemd-160, SHA „Secure Hash Algorithm“ kryptografische Hash-Funktionsfamilie) in eine Ausgabe fester Länge umgewandelt.

SHA-Familie:

SHA1: 160-Bit-Bitwert, derzeit nachweislich nicht besonders sicher. Es ist möglich, dass verschiedene Eingabewerte den gleichen Hashwert erhalten.

SHA2: SHA-224, SHA-256, SHA-384 und SHA-512. Die unterschiedlichen Zahlen dahinter repräsentieren die berechnete Hashwertlänge.

SHA3: Keccak-Algorithmus

Welche Hash-Funktionen bietet Solidity?

keccak256(...) gibt (bytes32) zurück: Berechnet basierend auf dem Keccak-256-Hash-Algorithmus den Hash-Wert der Eingabe variabler Länge.

sha256(...) gibt (bytes32) zurück: Berechnen Sie basierend auf dem SHA-256-Hash-Algorithmus den Hash-Wert der Eingabe variabler Länge.

Maturemd160(...) gibt (Bytes20) zurück: Berechnet basierend auf dem RIPEMD-160-Hash-Algorithmus den Hash-Wert der Eingabe variabler Länge.

sha3(...) gibt (bytes32) zurück: Dies ist eigentlich ein Alias ​​für die Funktion keccak256. Die Verwendung dieser Funktion wird in Solidity0.4.16 und späteren Versionen nicht mehr empfohlen.

Der Hashwert des Funktionsselektors in Solidity wird mithilfe des keccak256-Hash-Algorithmus berechnet. Der Hashwert der ersten 4 Bytes wird als Identifikation des Funktionsselektors verwendet.

3. Ecrecover-Funktion

Wir können die mit dem öffentlichen Schlüssel verknüpfte Adresse durch die Signatur einer elliptischen Kurve wiederherstellen: ecrecover(bytes32 hash,uint8 v,bytes32 r,bytes32 s)returns(address)

Die vier Parameter sind:

Hash: Der Hashwert der signierten Daten, r, s und v, stammt jeweils aus der Signaturergebniszeichenfolge.

r = Signatur[0:64]

s = Signatur[64:128]

v = Signatur[128:130]+27