◇ 色々なハッシュ関数

ブロックチェーンのProof of Workで利用されているハッシュ関数は多数存在いたします。ブロックチェーンにおけるハッシュ関数はブロックヘッダと呼ばれる構造体(80バイト)をハッシュ処理します。それらをハッシュアルゴリズムと呼ばれております。なお、アルゴリズムが異なるとまったく異なる結果が出ます。そのため相手のブロックチェーンに合わせたハッシュを選択する必要があります。

◇ どのようなハッシュアルゴリズムがあるの?

まずはSHA256です。
トランザクションなどの重要な場面で活用されております。
次にSHA256Dです。
これはダブルハッシュと呼ばれSHA256を2回処理するハッシュとなっております。ビットコインの新規ブロック承認はこのSHA256Dで行われております。そして新規ブロック承認にはScryptなど色々な種類のハッシュ関数が存在いたします。

◇ サンプルコード(bitcoin: SHA256D no salt)

uint256 sha256d(const char *data) {
uint256 hash;
CSHA256().Write((const unsigned char *)data, 80).Finalize((unsigned char *)&hash);
uint256 hashD;
CSHA256().Write((const unsigned char *)BEGIN(hash), sizeof(uint256)).Finalize((unsigned char *)&hashD);
return hashD;
}