nodejs-keccak256
作者 affaan-mnodejs-keccak256 技能可幫你避開 JavaScript 與 TypeScript 裡常見的以太坊錯誤:在需要 Keccak-256 時卻用了 Node 的 sha3-256。它很適合後端開發、selector、event topic、簽章、storage slot 與 address derivation,並提供實用的 nodejs-keccak256 使用指引。
這個技能評分 81/100,表示它很適合收錄給需要避免 Node.js/TypeScript 中 Ethereum Keccak-256 與 NIST SHA3 雜湊誤用的使用者。這個 repository 提供了足夠清楚的工作流程細節,方便判斷是否安裝並正確觸發技能,但仍缺少一些導入輔助,例如安裝指令與支援檔案。
- 問題定義清楚:明確提醒 Node 的 sha3-256 是 NIST SHA3,若誤用會悄悄破壞 Ethereum 的 selector、signature、storage slot 與 address derivation。
- 實作流程具體:提供 ethers v6、viem 與 web3.js 的實際使用範例,並搭配 code fence,讓代理執行時更不容易猜錯。
- 操作範圍明確:技能清楚說明適用情境,包括 Ethereum hashing、EIP-712、Merkle 與 JS/TS 的 storage-slot 輔助工具。
- 沒有安裝指令或支援檔案,使用者可能得只靠範例自行推斷設定方式。
- 內容聚焦在單一雜湊陷阱;它很實用,但不是一個涵蓋面很廣的 Ethereum 開發技能。
nodejs-keccak256 技能概覽
nodejs-keccak256 的用途
nodejs-keccak256 skill 可幫你避開 JavaScript 和 TypeScript 中一個很常見的 Ethereum bug:其實你需要的是 Keccak-256,卻用了 Node 的 crypto.createHash('sha3-256')。這種不一致可能會悄悄弄壞 selectors、event topics、signatures、storage-slot 計算,以及 address derivation。
適用對象
如果你在做 backend services、bots、indexers、wallet tooling、smart-contract helpers,或任何會對 Ethereum data 做 hashing 的 Node-based code,都適合使用 nodejs-keccak256 skill。它特別適合 reviewer 和 maintainer,用來在錯誤上線前先抓出不正確的 hashing。
為什麼重要
這不是一份通用的 hashing 教學。nodejs-keccak256 skill 的核心價值在於判斷品質:它會告訴你程式碼哪裡不安全、該換成什麼,以及如何確認輸出真的和 Ethereum tooling 一致。這讓它特別適合 nodejs-keccak256 for Backend Development,因為在這裡正確性比方便性更重要。
如何使用 nodejs-keccak256 skill
安裝並開啟 skill
用以下指令安裝 nodejs-keccak256 skill:
npx skills add affaan-m/everything-claude-code --skill nodejs-keccak256
接著先打開 SKILL.md。在這個 repository 裡,它是唯一的支援檔案,所以最快的做法就是仔細讀 skill 本體,並把它當成 nodejs-keccak256 usage 的工作參考。
把模糊需求整理成好提示詞
這個 skill 最適合你明確提供 hashing 任務、runtime,以及預期的 Ethereum artifact。好的輸入會包含:
- hash 目標:function selector、EIP-712 domain、event topic、storage slot,或 packed encoding
- 技術堆疊:Node.js、ethers v6、viem、web3.js,或 plain crypto
- input 形狀: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 實作換成像 ethers 或 viem 這類明確提供 Keccak-256 的函式庫方法。接著不要只用肉眼看起來差不多就算了,而是要拿已知的 selector 或 topic 來驗證結果。
先讀哪些內容
針對這份 nodejs-keccak256 guide,先讀 SKILL.md,並聚焦在:
- When to Use
- How It Works
- Examples
- ethers v6
這些段落會告訴你適用邊界、失敗模式,以及首選的替代寫法。
nodejs-keccak256 skill 常見問答
nodejs-keccak256 只適合 Ethereum 嗎?
是,這是它的主要適用範圍。這個 skill 處理的是 Ethereum-compatible Keccak-256,不是一般密碼學。如果你需要的是非 Ethereum 情境下的標準 SHA3-256,那這個工具就不適合。
為什麼不能直接用 Node crypto?
因為 crypto.createHash('sha3-256') 不是 Keccak-256。Node 不會提醒你,而這個 bug 在 production 爆掉之前,看起來可能一直都「正確」。nodejs-keccak256 skill 的存在,就是為了避免這種安靜但致命的不一致。
它適合初學者嗎?
適合,只要你能用白話描述 hashing 目標即可。你不需要很深的密碼學背景,也能受益於 nodejs-keccak256 install 和使用指引;但你需要知道自己在建立哪一種 Ethereum artifact。
它能搭配 ethers 和 viem 嗎?
可以。repository 裡的範例展示了 ethers v6 和 viem 的寫法,這也是它在真實 backend codebase 中有價值的原因。當你需要的是特定函式庫、而且必須正確無誤的替代方案時,它比一般 prompt 更適合。
如何改進 nodejs-keccak256 skill
直接說清楚要處理的 artifact
最好的結果通常來自你明確指出被 hash 的 Ethereum 物件。例如,直接說「ERC-721 Transfer(address,address,uint256) topic」,不要只說「把這個字串 hash 一下」。這樣 nodejs-keccak256 skill 才能選對 encoding 和輸出格式。
提供來源與預期輸出
如果你手上已經有失敗的程式碼,請直接貼出片段和預期值,或一個已知正確的參考。這能幫 skill 判斷問題是 encoding、algorithm choice,還是 formatting。做 backend 工作時,也請說明輸出是否必須和 ethers v6、viem,或舊版 web3.js 相容。
留意常見失敗模式
多數錯誤其實不在 Keccak 本身,而是在輸入準備。字串和 bytes 搞混、少了 ABI packing、忘了做 0x 正規化,這些都很容易造成錯誤修正。如果第一個答案看起來合理,卻對不上已知的 selector 或 topic,就要求它補上驗證步驟,並改成特定函式庫的寫法。
透過已知值反覆校正
第一次處理完後,拿結果去對照可信的 Ethereum 來源中的已知 selector、topic 或 hash。如果不一致,就把精確差異回饋回去,並要求更狹義的修正。這是提升 nodejs-keccak256 usage 最快的方法,不需要靠猜。
