問題一覧に戻る
中級実践的な機能
問題71: Keccak256ハッシュ

Solidityのkeccak256ハッシュを学習します - イーサリアムの標準暗号ハッシュ関数です。Keccak256は任意の入力データから32バイトのハッシュを生成します。決定的です - 同じ入力は常に同じ出力を生成します。一意の識別子の作成、データ整合性の検証、コミット・リビールスキームの生成によく使用されます。効率的なハッシュ化のためabi.encodePackedとよく組み合わされます。keccak256の理解は署名、マークルツリー、DeFiプロトコルでの様々な暗号パターンの実装に不可欠です。

pragma solidity ^0.8.0;

contract Hashing {
mapping(bytes32 => bool) public verified;

// データをハッシュ化
function hashData(string memory data)
public pure returns (bytes32) {
return (bytes(data));
}

function verifyAndStore(
string memory data,
bytes32 expectedHash
) public {
// データ整合性を検証
bytes32 dataHash = (abi.encodePacked(data));
require(dataHash == expectedHash, "Invalid");

// 検証済みハッシュを保存
verified[] = true;
}
}