用途:该技能聚焦以太坊哈希场景,包括函数选择器、事件 topic、EIP-712、Merkle 证明、存储槽与地址派生,帮助在 JS/TS 中避免误用 Node 的 sha3-256。
主要能力:说明 Node 的 crypto.createHash('sha3-256') 属于 NIST SHA3,与以太坊使用的 Keccak-256 对同一输入产生不同输出且不会告警;提供 ethers、viem、web3.js 的 Keccak 用法示例,以及选择器、typeHash、映射槽、由公钥推导地址等常见模式。
使用方式:优先使用项目已有依赖中的 keccak256(如 viem),仅在项目已依赖 ethers 时使用 ethers。示例包括 ethers v6 的 keccak256、toUtf8Bytes、solidityPackedKeccak256、id,viem 的 keccak256、toBytes,web3.utils.keccak256 与 soliditySha3。可用 grep 审计代码库中 createHash.*sha3 与 keccak256 的使用。
限制:仅限以太坊哈希,不得改写用于 JWT、OAuth PKCE、API 密钥等应用密钥的 createHash('sha256');Keccak 不是 SHA-256。非 EVM 地址校验应使用 solana-v1。规则:以太坊场景绝不要用 crypto.createHash('sha3-256'),应使用 ethers、viem、web3 等明确的 Keccak 实现。