Fresh cryptographic evidence published on August 4 by Bitcoin developer James O’Beirne has tied the faulty randomness code behind the ongoing Coldcard hardware-wallet exploit directly to Coinkite co-founder and CTO Peter Gray, publicly known on X.
The library at the center of the incident, libngu, was published on GitHub under a pseudonymous account named switck and presented as an external, low-profile dependency. O’Beirne’s analysis argues that switck and Gray are the same person.
Confirmed losses from the exploit, which began on July 30, now sit above $110 million, with Galaxy Research’s running tally pointing toward roughly 1,800 BTC drained from more than 5,200 addresses across four waves. Coinkite has acknowledged the entropy failure and shipped emergency firmware, but has not publicly addressed the GPG identity link. The Crypto Times previously reported that confirmed losses had passed the $100 million mark on August 4.
The GPG Trail: 58 Signed Commits, One Key
O’Beirne’s case rests on GPG commit signatures, the same mechanism GitHub uses to prove a specific cryptographic identity authored a commit. According to his write-up, 58 commits authored as “switck” on the libngu repository carry valid GPG signatures from Gray’s personal key, the same key that signs Gray’s commits made under the name Peter D.
Gray elsewhere. The switck account itself, by contrast, has never uploaded a public key of its own. The overlap has been independently verified by Bitcoin analyst Dylan LeClair and further community researchers, and security firm Wizardsardine has named libngu as one of three repositories involved in the vulnerability.
The connection matters because Coldcard’s production firmware pulls libngu in as a direct dependency. A library that looked like an outside project appears, on the cryptographic evidence, to have been maintained by the CTO himself under an alternate identity, without that fact being disclosed to Coldcard users or, apparently, to independent auditors.
The Bug: A One-Line Preprocessor Guard
Coldcard is marketed as an air-gapped, high-security cold-storage device. Under the hood, however, seed generation on affected firmware silently stopped using the device’s hardware true random number generator and fell back to a weak software fallback. The failure, as documented by Block’s Bitcoin engineering team and Wizardsardine, sits in a single preprocessor guard inside libngu.
Coldcard’s board config defined the macro MICROPY_HW_ENABLE_RNG and set it to 0, intending to disable MicroPython’s built-in RNG so Coinkite’s own hardware TRNG wrapper would be used instead. The libngu guard, however, only checked whether the macro was defined, not whether it was enabled. Because 0 still counts as defined, the guard passed, and seed generation was routed through MicroPython’s Yasmarang software fallback. That fallback was seeded from the chip’s unique ID and timer registers, then XORed with a second Yasmarang instance initialized from public hardcoded constants, a construction that produces a deterministic stream.
Effective entropy collapsed to roughly 40 bits on Mk2 and Mk3 devices, and about 72 bits on Mk4, Mk5 and Q models, against the 128 bits a 12-word BIP-39 seed is supposed to have. Both figures sit inside the range a well-resourced attacker can brute-force offline.
The change entered the codebase in a March 1, 2021 commit titled “First pass w/ libNgU” and shipped to users in Coldcard firmware v4.0.0 on March 17, 2021. It remained in production, unreviewed, for more than five years.
The May 2025 Warning That Was Waved Away
The most damaging detail in O’Beirne’s account is not technical, but procedural. In May 2025, more than a year before the first sweep, O’Beirne says he audited the coldcard/firmware repository, traced the RNG path back to libngu, and flagged it to Coinkite. He described the library at the time as a low-star, single-maintainer dependency with hardcoded Yasmarang constants, and advised Coinkite to rip it out and link against libsecp256k1 directly.
According to O’Beirne, he was told that if something were wrong the company would already know about it by now, and that everything was properly configured for the real boards. The library stayed. Fourteen months later, the sweeps began.
$110M and Rising, Attack Still Live
The exploit went from theoretical to catastrophic on July 30, when attackers began sweeping vulnerable single-signature Coldcard wallets in a coordinated first wave that moved roughly 594 BTC from around 500 addresses in under an hour. Subsequent waves followed within days, and Galaxy Research now places confirmed losses at approximately 1,600 to 1,800 BTC across more than 5,200 addresses, worth roughly $110 million to $130 million at the time of the thefts.
The Crypto Times covered the live fourth wave that swept 449 BTC as victims raced to save funds, and the subsequent escalation to as many as 15 distinct attackers exploiting the same firmware flaw. Most of the stolen Bitcoin remains unspent, and one attacker-linked address has become an on-chain public bulletin board of victim pleas written into OP_RETURN fields. The bleed has also stirred long-dormant Bitcoin wallets, some untouched since 2013, as long-term holders migrate to fresh seeds.
Who Was Protected, and Who Wasn’t
Coinkite’s advisory scopes the confirmed exploit to Coldcard Mk2 and Mk3 devices running firmware v4.0.0 through v5.0.3, with reduced-but-still-worrying entropy on Mk4, Mk5 and Q models.
Users were protected if they had generated their seed with the on-device dice-roll option using a sufficient number of rolls, if they had layered a strong and unique BIP-39 passphrase on top of the device seed, or if they had used a multisig setup in which the Coldcard-generated key was only one of several signers. Users of plain, on-device single-signature seeds generated on affected firmware have no such protection.
Firmware Fixed, Seeds Not
Coinkite has shipped emergency firmware for every affected model that correctly routes seed generation through the hardware TRNG going forward. Installing the update, however, does not repair an already-generated weak seed. Anyone who created a single-signature seed on vulnerable firmware must generate an entirely new seed on patched firmware and migrate their funds.
The company has publicly acknowledged the entropy failure and published technical background, but as of publication has not issued a detailed public response to the GPG identity link between Switch and Peter Gray. It told Bloomberg it was heads down helping affected customers rather than estimating losses.
Why This One Hurts
The Coldcard incident has reopened a bruising debate about the trade-offs of self-custody, with on-chain analyst Willy Woo arguing that self-custody remains the only path to sovereign ownership even after the exploit. But the specifically damaging piece of this story is the governance picture the GPG evidence draws. A security-critical entropy path in a flagship hardware wallet was maintained under an alternate identity that presented itself as an outside contributor.
An external audit that flagged exactly this class of risk more than a year before the thefts was, by O’Beirne’s account, dismissed on internal confidence rather than a technical rebuttal.
The substantive questions Coinkite has yet to answer publicly are pointed. Why was a security-critical cryptographic library for a flagship hardware wallet maintained under a pseudonymous account tied to the CTO’s own GPG key? Why was the May 2025 external report on the RNG path not escalated to a build-level review? And what internal review, if any, was performed on the March 1, 2021 “First pass w/ libNgU” commit before it shipped in v4.0.0?
Until those questions are answered on the record, Coldcard’s marketing of an air-gapped, high-security device sits in uncomfortable tension with the code trail investigators are now unwinding.
The Bottom Line
More than a week after the first sweeps, the Coldcard exploit has become one of the largest self-custody thefts in Bitcoin’s history, and, unusually, one that is still in progress. The new GPG evidence turns what looked like a supply-chain failure involving an unknown dependency into a question about internal governance at Coinkite itself.
For holders, the takeaway is unchanged and pressing: any single-signature Coldcard wallet created on the affected firmware should be treated as compromised, and its funds moved without delay. Primary sources for verification include James O’Beirne’s public post on X, the GitHub history of the switck/libngu repository, Coinkite’s official security advisories, and the technical write-ups from Block and Wizardsardine.
Also Read: Galaxy Research Confirms $111M Stolen Funds in Coldcard Exploit
