Guessing a random Ethereum private key

The purest attack — and the one that can never work. Generate a random 256-bit number, derive its address, and hope it holds funds. Here is the math that makes it hopeless.

How it works

An Ethereum private key is simply a random integer between 1 and roughly 1.16 × 1077 (that is 2256). The "Random" mode generates one using your browser's window.crypto.getRandomValues() — the same cryptographically-secure generator that protects your bank's TLS connection — then derives the address: multiply against the secp256k1 curve to get a public key, hash it with Keccak-256, and take the last 20 bytes.

That derived address is checked against a Bloom filter of ~1.5 million addresses that currently hold at least 1 ETH. A hit is confirmed with a live on-chain balance call before anything is declared a win.

Why it is physically impossible to brute-force

2256 is not just a big number — it is a number that defeats brute force at the level of physics:

Crucially, there is no strategy that beats uniform randomness. Every key is equally likely, so no ordering, pattern, or heuristic improves your odds above the base rate.

The real lesson

Because pure guessing is hopeless, every real-world wallet theft has instead attacked how a key was generated or used — weak randomness, reused numbers, or human-chosen secrets. Those are the other modes in this game, and each is a genuine, documented failure.

▶ Try the Random mode in the game

← Back to all attack vectors