nodejs-keccak256
作者 affaan-mnodejs-keccak256 技能可帮助你避开 JavaScript 和 TypeScript 中一个常见的以太坊坑:在需要 Keccak-256 时误用 Node 的 sha3-256。它适用于后端开发、selector、event topics、签名、storage slot 和地址推导,并提供实用的 nodejs-keccak256 使用指引。
该技能评分为 81/100,属于目录中较值得收录的候选,适合需要避免 Node.js/TypeScript 中以太坊 Keccak-256 与 NIST SHA3 混用问题的用户。仓库提供了足够明确的工作流信息,便于判断是否安装以及如何触发技能,但仍缺少一些落地辅助内容,例如安装命令和支持文件。
- 问题定义清晰:明确提醒 Node 的 sha3-256 属于 NIST SHA3,可能会悄无声息地破坏以太坊的 selector、签名、storage slot 和地址推导。
- 工作流示例实用:给出了 ethers v6、viem 和 web3.js 的具体用法,并配有代码块,让代理执行时更不容易靠猜。
- 适用范围明确:说明了适合使用的场景,包括以太坊哈希、EIP-712、Merkle 以及 JS/TS 中的 storage-slot 辅助功能。
- 没有安装命令或支持文件,用户可能需要仅凭示例自行推断环境配置。
- 内容主要聚焦于单一哈希陷阱;虽然很实用,但不算全面的以太坊开发技能。
nodejs-keccak256 技能概览
nodejs-keccak256 是做什么的
nodejs-keccak256 技能可以帮你避开 JavaScript 和 TypeScript 里一个很常见的 Ethereum 误区:明明需要的是 Keccak-256,却误用了 Node 的 crypto.createHash('sha3-256')。这个不一致会悄悄搞坏 selector、event topic、签名、storage slot 计算和地址推导,而且往往不会立刻报错。
适合谁使用
如果你在做后端服务、机器人、索引器、钱包工具、智能合约辅助工具,或者任何会对 Ethereum 数据做 hash 的 Node 代码,都适合用 nodejs-keccak256 技能。它尤其适合评审者和维护者,用来在代码上线前识别错误的 hashing。
为什么它重要
这不是一份泛用的 hashing 教程。nodejs-keccak256 技能的核心价值在于决策质量:它会告诉你代码哪里不安全、该替换成什么,以及如何确认输出和 Ethereum 工具链一致。对 nodejs-keccak256 for Backend Development 来说,这一点尤其实用,因为这里正确性比方便性更重要。
如何使用 nodejs-keccak256 技能
安装并打开技能
使用下面的命令安装 nodejs-keccak256 技能:
npx skills add affaan-m/everything-claude-code --skill nodejs-keccak256
然后先打开 SKILL.md。在这个仓库里,它就是唯一的支持文件,所以最快的方式就是认真读技能正文,并把它当作 nodejs-keccak256 usage 的工作参考。
把模糊任务转成高质量提示词
当你把具体的 hashing 任务、运行环境和期望的 Ethereum 产物都说清楚时,这个技能效果最好。高质量输入通常包括:
- hash 的目标:function selector、EIP-712 domain、event topic、storage slot,或 packed encoding
- 技术栈:Node.js、ethers v6、viem、web3.js,或原生 crypto
- 输入形状:string、bytes、ABI-encoded tuple、address,或 bigint
- 期望输出格式:带或不带
0x的 hex、bytes、topic hash,或 selector
提示词示例:
Review this Node.js code that computes an ERC-20 Transfer topic. Replace sha3-256 with a correct Keccak-256 approach and show the safest ethers v6 version.
使用正确的工作流
先判断这段代码是在做 Ethereum hashing,还是在做通用的 NIST SHA3。如果它和 Ethereum 相关,就把 Node 的 SHA3 实现替换成明确提供 Keccak-256 的库函数,例如 ethers 或 viem。然后不要只凭肉眼看起来像,就直接相信结果;要用已知的 selector 或 topic 去验证输出。
先读哪些内容
如果是这份 nodejs-keccak256 guide,建议先读 SKILL.md,重点关注:
- When to Use
- How It Works
- Examples
- ethers v6
这些部分会告诉你适用边界、常见失效方式,以及首选的替换模式。
nodejs-keccak256 技能 FAQ
nodejs-keccak256 只适合 Ethereum 场景吗?
是的,主要适用场景就是这个。这个技能面向的是 Ethereum 兼容的 Keccak-256,而不是通用密码学。如果你需要的是非 Ethereum 场景下的标准 SHA3-256,那这不是合适的工具。
为什么不直接用 Node crypto?
因为 crypto.createHash('sha3-256') 并不是 Keccak-256。Node 不会提醒你,而这个 bug 在生产环境里爆掉之前,看上去往往“完全正常”,直到 selector、topic 或 signature 被破坏。nodejs-keccak256 技能就是为了防止这种静默不一致。
对新手友好吗?
友好。只要你能用自然语言说清楚 hashing 目标,就能从 nodejs-keccak256 install 和使用指南中受益。不过你仍然需要知道自己在构建哪一种 Ethereum 产物。
能和 ethers 和 viem 配合吗?
可以。仓库示例里包含 ethers v6 和 viem 的写法,这也是它在真实后端代码库里有用的原因。和普通提示词相比,它更适合需要“按库正确替换”、且尽量一次写对的场景。
如何改进 nodejs-keccak256 技能
把要哈希的具体产物说清楚
效果最好的输入,都会明确指出正在处理的 Ethereum 对象。比如说“ERC-721 Transfer(address,address,uint256) topic”,而不是笼统地说“把这个字符串 hash 一下”。这样 nodejs-keccak256 skill 才能选对编码方式和输出形态。
提供源代码和期望输出
如果你已经有报错代码,直接贴出代码片段、期望值,或者一个可信的参考结果。这样技能更容易判断问题出在编码、算法选择,还是格式处理。对于后端工作,也要说明输出是否必须兼容 ethers v6、viem,或旧版 web3.js。
留意常见失败模式
大多数错误不在 Keccak 本身,而在输入准备阶段。字符串和 bytes 混用、缺少 ABI packing、忘记做 0x 规范化,这些都会导致很多“看似修好了,其实没修对”的结果。如果第一次答案看起来合理,但和已知的 selector 或 topic 对不上,就要继续要求验证步骤,并按具体库重写。
用已知值反复校验
第一次改完后,把结果和可信 Ethereum 来源里的已知 selector、topic 或 hash 对比一下。如果不一致,就把具体差异反馈回去,并要求更窄范围的修正。这是提升 nodejs-keccak256 usage 最快的方式,远比猜测更可靠。
