Lightweight Ethereum Virtual Machine (EVM) bytecode selector extractor.
- Zero dependencies
- Works in Node.js and Browser
- ESM + CommonJS compatible
- Extracts
PUSH4function selectors directly from raw bytecode
https://www.npmjs.com/package/evm-selector-extractor
npm install evm-selector-extractorimport { JsonRpcProvider } from "ethers";
import { EVM } from "evm-selector-extractor";
const provider = new JsonRpcProvider("https://ethereum-rpc.publicnode.com");
const address = "0x6982508145454ce325ddbe47a25d4ec3d2311933";
async function main() {
const bytecode = await provider.getCode(address);
const evm = new EVM(bytecode);
console.log(evm.getSelectors());
}
main();const { JsonRpcProvider } = require("ethers");
const { EVM } = require("evm-selector-extractor");
const provider = new JsonRpcProvider("https://ethereum-rpc.publicnode.com");
async function main() {
const bytecode = await provider.getCode(
"0x6982508145454ce325ddbe47a25d4ec3d2311933"
);
const evm = new EVM(bytecode);
console.log(evm.getSelectors());
}
main();import { EVM } from "evm-selector-extractor";
const bytecode = "0x63a9059cbb...";
const evm = new EVM(bytecode);
console.log(evm.getSelectors());- Accepts hex string with or without
0x - Throws if invalid hex
interface EvmOpcode {
name: string;
opcode: number;
pc: number;
pushData?: Uint8Array;
}string[] // e.g. ["0xa9059cbb", "0x095ea7b3"]- No ABI required
- No heavy EVM stacks
- Works directly on raw bytecode
- Suitable for static analysis and on-chain monitoring tools
npm run build