1. 以下は一般的に使用される数学関数の一部であり、これらを使用する方が安全で信頼性が高くなります。
addmod(uint x, uint y, uint k) returns (uint): x + y modulo k を計算します。
mulmod(uint x, uint y, uint k) returns (uint): x * y modulo k を計算します。
2. ハッシュ関数関連のAPI
ハッシュ関数はハッシュ関数とも呼ばれます。任意の長さの入力は、ハッシュ アルゴリズム (MD4、MD5、ripemd-160、SHA「セキュア ハッシュ アルゴリズム」暗号化ハッシュ関数ファミリー) を通じて固定長の出力に変換されます。
SHA家族:
SHA1: 160 ビットのビット値、現時点では特に安全ではないことが証明されており、異なる入力値が同じハッシュ値を取得する可能性があります。
SHA2: SHA-224、SHA-256、SHA-384、および SHA-512。後ろの異なる数字は、計算されたハッシュ値の長さを表します。
SHA3: ケチャックアルゴリズム
Solidity はどのようなハッシュ関数を提供しますか?
keccak256(...) returns (bytes32): Keccak-256 ハッシュ アルゴリズムに基づいて、可変長入力のハッシュ値を計算します。
sha256(...) returns (bytes32): SHA-256 ハッシュ アルゴリズムに基づいて、可変長入力のハッシュ値を計算します。
ripemd160(...) returns (bytes20): RIPEMD-160 ハッシュ アルゴリズムに基づいて、可変長入力のハッシュ値を計算します。
sha3(...) returns (bytes32): これは、実際には keccak256 関数のエイリアスです。この関数の使用は、Solidity0.4.16 以降のバージョンでは推奨されません。
Solidity の関数セレクターのハッシュ値は、keccak256 ハッシュ アルゴリズムを使用して計算され、最初の 4 バイトのハッシュ値が関数セレクターの ID として取得されます。
3. ecrecover機能
公開鍵に関連付けられたアドレスは、楕円曲線署名 ecrecover(bytes32 hash,uint8 v,bytes32 r,bytes32 s)returns(address) によって復元できます。
4 つのパラメータは次のとおりです。
ハッシュ: 署名されたデータのハッシュ値、r、s、v はそれぞれ署名結果文字列から取得されます。
r = 署名[0:64]
s = 署名[64:128]
v = 署名[128:130]+27