This product wasn’t designed from theory. It was designed from the wreckage of real losses — and from the one defense that worked.
On July 31, 2026, one of Bitcoin’s most respected hardware wallets disclosed that a firmware build error had silently routed seed generation through a weak fallback random generator since 2021. Effective randomness collapsed from 128 bits to roughly 40 — a space attackers simply enumerated, matching addresses on-chain. Roughly $38–40M was drained, including 594 BTC in one 25-minute sweep. Patching couldn’t fix keys already generated; every affected user had to migrate everything.
The two facts that matter most: the flaw made no sound for five years — no error, no symptom, nothing a user could notice. And the users who had mixed their own dice entropy into generation were untouched, because their randomness never depended on the broken path.
One of the most widely used wallet libraries in existence shipped a version whose randomness had a guessable starting point. Every wallet created by the affected extension was remotely brute-forceable, no user interaction required. Losses exceeded $6M. Library popularity, it turns out, is not evidence of entropy correctness.
A popular tool for generating custom “vanity” addresses drew keys from a bounded seed space — small enough to search. Attackers reconstructed private keys from public addresses; the trading firm Wintermute lost roughly $160M. Users had opted into convenience with no way to inspect the randomness underneath it. The tool was fine software with a rotten heart, and no one could tell from the outside.
A browser-side randomness failure caused different users to receive identical keys — the earliest widely-known instance of the pattern in a consumer wallet, and proof the problem was never new.
Bare-metal firmware. A browser extension. A native tool. Server-delivered JavaScript. Four completely different technology stacks — the same failure in all four. You cannot escape this bug class by picking a different language, library, or brand, because it doesn’t live in any of them. It lives in the seam where one component assumes another is supplying good randomness, and nothing ever checks.
Three design consequences follow, and they are KŌINIkeystick’s constitution:
Every requirement in this product traces to one of these incidents. Anything that traces to neither history nor an invariant is scope creep — and we cut it.