nodejs-keccak256

Prevent Ethereum hashing bugs in JavaScript and TypeScript. Node's sha3-256 is NIST SHA3, not Ethereum Keccak-256, and silently breaks selectors, signatures,…

INSTALLATION
npx skills add https://github.com/affaan-m/everything-claude-code --skill nodejs-keccak256
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

$27

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

## Examples

### 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' },

);


### Common patterns

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]),

);

}


### Address from public key

import { keccak256 } from 'ethers';

function pubkeyToAddress(pubkeyBytes: Uint8Array): string {

const hash = keccak256(pubkeyBytes.slice(1));

return '0x' + hash.slice(-40);

}


### Audit your codebase

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

grep -rn "keccak256" --include=".ts" --include=".js" . | grep -v node_modules

BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card