Does Particl (PART) crypto have serious problems?
So I’ve been a long-time hodl’er of Particl cryptocurrency (PART) because they sell a good vision of anonymity and all that but recently I discovered a serious vulnerability in their protocol. More shocking was their response which was to ban me from Discord (whilst asking me to lodge a GitHub issue).
Fingers hurt from clicking all day? Try Auto Mouse.
Want to use Notion as a CMS for your website? Try Local Notion.
Background
I’ve been a member of the PART community since 2017 — before their quasi-ICO and back when they were once known as “Shadow Cash”.
Suffice to say, I’ve been around the block with this project. PART is a proof-of-stake anonymity coin with in-protocol marketplace. Long story short — big promises, slow tech delivery, languid market performance but still an overall promising project.. except when you start digging into their consensus protocol!
It all started a few days ago when I discovered that my staking Raspbery-Pi was doing no such thing. It had sat in my office for 6 months without earning anything. I had expected a yield of about 10k PART, but alas nothing.
So I went onto their Discord and asked if “hot-staking was still enabled?”. I asked this because I noticed they were weirdly pushing (quite hard) for a centralized form of staking called “cold staking pools” and they had removed all the documentation about regular “hot staking”.
I was told that all is good and not to worry. So then I asked them if there were consensus problems because my node had not staked anything for the last 6 months.
For that and that alone, they banned me from Discord!
Very strange, but understandable if they mistakenly thought I was concern trolling or FUD’ing the project. Maybe they thought I wasn’t being genuine. It’s an honest mistake to make and a common rationale for pulling the banhammer trigger so quickly.
Sure, there’s a very small chance I could be right but a far bigger chance I’m “just a troll”, right? I mean, I’ve only been a member since the beginning, I hold a decent bag of their token, how could I possibly be legit? And by banning me, they only “lose a troll” at the small risk of not having a serious vulnerability brought to light, right? What could go wrong?
Well anyway since they weren’t going to help me, I decided to investigate myself so I rolled up a new node. To my shock and horror I found myself with two nodes reading 2 separate balances! These were fully synced up nodes, latest release, yet they were out-of-consensus!
Luckily, the discrepancy was only a 3000 PART but still significant. However, the size of the discrepancy isn’t the issue though. The fact that there is any discrepancy at all is a serious as it gets for a layer-1 blockchain. It should not be possible to have 2 fully synchronized and updated nodes reading 2 different balances. If that’s what’s going on then that’s a fatal error for a layer-1 blockchain.
Anyway, despite being pissed at their poor community management, I decided to accept their “honest mistake” of banning me and created a new Discord account just to inform them of this issue.
This time I requested to talk privately with a team member so as not to alarm the community. Eventually, one of their team members contacted me privately and I proceeded to show them that indeed their was consensus issue. In total, I had lost about $10k worth of PART. The team member acknowledged the issue and asked me to post it as a Github issue.
But this is the hilarious part, when I asked them if they could unban my account they simply banned me again!
Can’t make this stuff up!
Particl’s Proof-Of-Stake Consensus Issue
Anyway, what’s interesting is the actual consensus problem Particl has. It kind of reveals a fundamental issue in proof-of-stake blockchains that isn’t easily solvable.
What happened was they rolled out a hard-fork upgrade in February 2022 but I updated my node 1 day late. Despite this, my node did not correct to the mainchain and remained on the old orphaned chain. It continued to stake on the old abandoned fork for 6 months without ever realizing it was not on the correct chain.
This should never happen in a blockchain and is considered a fundamental error in the consensus algorithm when it does. In total, this cost me $10k USD in lost staking yield.
What’s interesting is that this issue cannot be easily solved in proof-of-stake. In proof-of-work, this resolves near instantly by simply taking the “most-work chain” (or the “longest-chain” in laymen terms). So you get small chain-forks here and there, but they correct themselves by following this objective rule.
However, in proof-of-stake you cannot do this because it costs nothing to forge fake “longest chains”. Thus a node cannot easily determine if it’s on the orphan chain or the correct chain. This known as the “nothing-at-stake problem” and implementations of Proof-of-Stake need to take great care to resolve this issue!
So the Particl devs obviously know about this problem which is why they leave a node on the orphan chain because they cannot risk switching to the “correct chain” because it could be a fake one.
Instead of solving this problem with a proper algorithm, the PART devs push for centralized block production instead. They do this by advocating pool-based “cold-staking” which basically centralizes the block producers to a tiny set of nodes (mostly controlled by them and their friends). Whilst this lessens out-of-consensus bugs it comes at the cost of sacrificing decentralization.
This essentially means their consensus model is broken.
Transcript
Below is the Discord capture with their team. Read it for yourself!