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