My POPcoin project, whose basic principle is described in the POPcoin tab at the top of this page, is coming along nicely. I’ll have much more to say later. But it seems worth noting that as of now, I’ve got an independent fork of Bitcoin working locally, which I plan to adopt so that it becomes POPcoin.
A significant piece is the mechanism that provides both anonymity and Sybil resistance in association with proof-of-personhood. In naive settings, those two characteristics are mutually exclusive, at least in decentralized networks: if the data is anonymous, the underlying proof-of-personhood has to be unavailable to malicious actors, but if it’s unavailable to malicious actors in a decentralized context, it has to be unavailable to everyone. And then, there’s usually no way to catch attempts to reuse it to create fake identities. If an identity is hidden, then in a decentralized setting, there’s no way to know it’s already in use.
POPcoin incorporates a new mechanism for reconciling those different goals, called ASGARD (Anonymous Sybil‑resistant Gatekeeping Architecture for Robust Defense). It uses zero-knowledge proofs (ZKPs) with Merkle trees. The code is mostly done, leveraging the Noir ZKP language, Rust, and Python. I will probably release ASGARD as an independent open-source GitHub project.