Lesson 1 Chapter11 Keccak256と型キャスト
Keccak256(ケッチャック)
イーサリアムにはSHA3のバージョンの一つであるkeccak256関数が組み込まれている。
keccak256関数は、文字列をランダムな256ビットの16進数(ハッシュ値)にマッピングする機能をもつ。
入力する文字が1文字違うだけで、戻り値が全く別物になる。
型キャスト
uint8 a = 5;
uint b = 6;
// a * b はuint8ではなくuintで返すから、エラーになる:
uint8 c = a * b;
// 正しく動作させるために、bをuint8に型キャストさせる:
uint8 c = a * uint8(b);
この例ではa * bはuintを返すが、uint8で格納しようとしているから、問題が発生することになる。
dnaModulus
後のレクチャーでは剰余演算子である %を使用して整数を16桁に縮小できる。
uint dnaDigits = 16;
uint dnaModulus = 10**dnaDigits;
function _generateRandomDna(string _str) private view returns (uint) {
uint rand = uint(keccak256(_str));
return rand % dnaModulus;
}
これを、ゾンビのdna桁数のdnaModulus=10^dnaDigitsで割った余りモジュロ(0~10^dnaDigits-1の循環値)をもとめて、名前に対応するdna値とする。
ある値を4で割った余りは、0~(4-1)となる。ある値が順番にカウントアップすると余りは、0~(4-1)で循環する。
ある値 0 1 2 3 4 5 6 7 8 9 10 11
余り 0 1 2 3 0 1 2 3 0 1 2 3
参考
SHA-0、SHA-1、SHA-2、SHA-3の4種類がある。
SHA-0、SHA-1、SHA-2、は国家安全保障局 (NSA)が開発。
SHA-3は、アメリカ国立標準技術研究所 (NIST)が公募。
SHA-0
SHA-0はSHAシリーズの最初の規格。発表から間もなくして欠点が発見された。ハッシュ長は160ビット。
SHA-1
SHA-0のアルゴリズムの欠点を修正した関数。ハッシュ長は160ビット。
SHA-2
SHA-1のアルゴリズムを改良し出力されるハッシュ値の長さも長くしたものハッシュ長は224 256 384 512ビットがある。
SHA-3
Keccak を基にして決められたハッシュ関数群。
オンラインツール
SHA1オンラインツール
SHA256オンラインツール
SHA3-256オンラインツール
Keccak-256オンラインツール
SHA3-256オンラインツール
prev
-
クリプトゾンビ Lesson 1 Chapter10 Private Public 関数~2
Lesson 1 Chapter10 Private / Public 関数~2 戻り値の宣言 Solidityでは関数の宣言に戻り値の型を含む。 string greeting = "What's ...
next
-
クリプトゾンビ Lesson 1 Chapter12 ゾンビ生成関数
Lesson 1 Chapter12 ゾンビ生成関数 ゾンビの名前またはユーザーの名前をインプットして、名前からランダムなDNA値をもとめゾンビ作成するpublic関数を作成する。 ブロックチェーン上 ...