Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
affaan-m avatar

Nodejs Keccak256

  • 1.4k installs
  • 238k repo stars
  • Updated August 5, 2026
  • affaan-m/ecc

This is a copy of nodejs-keccak256 by affaan-m - installs and ranking accrue to the original listing.

nodejs-keccak256 is a Claude Code skill at version 1.0.0 that prevents Ethereum Keccak-256 hashing bugs in JavaScript and TypeScript for developers who must not confuse Node's NIST SHA3-256 with Ethereum's Keccak variant

About

nodejs-keccak256 is an ECC skill at version 1.0.0 that stops a silent Ethereum hashing bug in Node.js and TypeScript codebases. Node's crypto.createHash('sha3-256') implements the NIST-standardized SHA3 variant, not Ethereum Keccak-256, and produces different digests for the same input without warnings—breaking function selectors, event topics, EIP-712 signatures, storage slots, and address derivation. The skill documents correct patterns with ethers v6 keccak256 and id helpers, viem toBytes hashing, and web3.js utils.keccak256, plus mapping slot encoding and public-key-to-address derivation. It includes grep audit commands to find createHash('sha3-256') misuse across .ts and .js files and worked examples for solidityPackedKeccak256 and Transfer event topics. Developers reach for nodejs-keccak256 when reviewing Web3 backends or building Merkle, signature, or ABI selector utilities in JavaScript.

  • Prevents Ethereum hashing bugs that break function selectors, event topics, signatures, and storage slots
  • Provides drop-in Keccak-256 implementation matching ethers.js and viem behavior
  • Detects and warns when Node.js crypto.createHash('sha3-256') is misused for Ethereum data
  • Includes ready-to-use examples for EIP-712, Merkle proofs, and solidityPackedKeccak256
  • Covers function selectors, event topics, and address derivation correctly

Nodejs Keccak256 by the numbers

  • 1,368 all-time installs (skills.sh)
  • +82 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/affaan-m/ecc --skill nodejs-keccak256

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1.4k
repo stars238k
Last updatedAugust 5, 2026
Repositoryaffaan-m/ecc

Why does Node sha3-256 break Ethereum hashes?

Ensure correct Ethereum Keccak-256 hashing in JavaScript and TypeScript instead of silently using the incompatible NIST SHA3-256.

Who is it for?

JavaScript and TypeScript developers building Ethereum integrations who hash selectors, signatures, storage slots, or addresses and must avoid Node's incompatible SHA3-256.

Skip if: Developers hashing non-Ethereum data with standard NIST SHA3-256 requirements should use Node crypto directly instead of nodejs-keccak256.

When should I use this skill?

JavaScript or TypeScript code computes Ethereum function selectors, event topics, storage slots, or addresses using Node crypto or ambiguous sha3 helpers.

What you get

Correct Keccak-256 digests, audited grep results for sha3 misuse, and fixed selector, topic, and storage-slot helpers

  • Correct Keccak-256 helper implementations
  • grep audit of sha3-256 misuse
  • Fixed selector and storage-slot hashes

By the numbers

  • Skill version 1.0.0 in ECC direct-port adaptation
  • Documents Keccak patterns for ethers, viem, and web3.js

Files

SKILL.mdMarkdownGitHub ↗

Node.js Keccak-256

EthereumはKeccak-256を使用し、Nodeのcrypto.createHash('sha3-256')が公開するNIST標準化SHA3バリアントではない。

使用するタイミング

  • Ethereum関数セレクターやイベントトピックの計算
  • JS/TSでEIP-712、署名、Merkle、またはストレージスロットヘルパーの構築
  • Nodeのcryptoを直接使用してEthereumデータをハッシュするコードのレビュー

仕組み

2つのアルゴリズムは同じ入力に対して異なる出力を生成し、Nodeは警告しない。

import crypto from 'crypto';
import { keccak256, toUtf8Bytes } from 'ethers';

const data = 'hello';
const nistSha3 = crypto.createHash('sha3-256').update(data).digest('hex');
const keccak = keccak256(toUtf8Bytes(data)).slice(2);

console.log(nistSha3 === keccak); // false

ethers v6

import { keccak256, toUtf8Bytes, solidityPackedKeccak256, id } from 'ethers';

const hash = keccak256(new Uint8Array([0x01, 0x02]));
const hash2 = keccak256(toUtf8Bytes('hello'));
const topic = id('Transfer(address,address,uint256)');
const packed = solidityPackedKeccak256(
  ['address', 'uint256'],
  ['0x742d35Cc6634C0532925a3b8D4C9B569890FaC1c', 100n],
);

viem

import { keccak256, toBytes } from 'viem';

const hash = keccak256(toBytes('hello'));

web3.js

const hash = web3.utils.keccak256('hello');
const packed = web3.utils.soliditySha3(
  { type: 'address', value: '0x742d35Cc6634C0532925a3b8D4C9B569890FaC1c' },
  { type: 'uint256', value: '100' },
);

一般的なパターン

import { id, keccak256, AbiCoder } from 'ethers';

const selector = id('transfer(address,uint256)').slice(0, 10);
const typeHash = keccak256(toUtf8Bytes('Transfer(address from,address to,uint256 value)'));

function getMappingSlot(key: string, mappingSlot: number): string {
  return keccak256(
    AbiCoder.defaultAbiCoder().encode(['address', 'uint256'], [key, mappingSlot]),
  );
}

公開鍵からアドレス

import { keccak256 } from 'ethers';

function pubkeyToAddress(pubkeyBytes: Uint8Array): string {
  const hash = keccak256(pubkeyBytes.slice(1));
  return '0x' + hash.slice(-40);
}

コードベースの監査

grep -rn "createHash.*sha3" --include="*.ts" --include="*.js" --exclude-dir=node_modules .
grep -rn "keccak256" --include="*.ts" --include="*.js" . | grep -v node_modules

ルール

Ethereumコンテキストでは、crypto.createHash('sha3-256')を絶対に使用しない。ethersviemweb3、または別の明示的なKeccak実装のKeccak対応ヘルパーを使用すること。

Related skills

How it compares

Use nodejs-keccak256 when Ethereum hashing happens in JavaScript rather than Solidity, where the Node SHA3 versus Keccak distinction is the most common silent failure.

FAQ

Why is Node crypto.createHash('sha3-256') wrong for Ethereum?

nodejs-keccak256 explains that Node crypto.createHash('sha3-256') implements the NIST SHA3 variant, not Ethereum Keccak-256. The two algorithms return different digests for the same input without warnings, breaking selectors, signatures, storage slots, and address derivation.

Which libraries does nodejs-keccak256 recommend?

nodejs-keccak256 recommends Keccak-aware helpers from ethers v6, viem, or web3.js instead of Node crypto. The skill includes examples for id-based selectors, solidityPackedKeccak256, mapping slot encoding, and public-key-to-address derivation.

Backend & APIsbackendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.