In this post Shawn explains the heated EIP-999 debate. He goes over how it happened and why the EIP-999 & Parity controversy is ruffling so many feathers.
Why Am I Writing This?
A cauldron of drama-soup is boiling in the kitchen – and most of us are too distracted to smell what’s cooking. Either we're too busy refreshing Blockfolio or the EIP-999 drama has too much technical mumbo-jumbo for the new members. Well, the soup is being stirred again – and perhaps it’s time we pay attention.
As a community we need to have an open discussion about this. For that, though, we need to first understand what is going on. In this post I’ll try to explain the issue as simply as possible.
EIP-999 & Parity
A somewhat comical incident led to a disastrous consequence. An anonymous developer managed to gain ownership to a Smart Contract – and then killed it.
But this wasn’t just any smart contract. It was the underlying contract to Parity Technlogies’ Multi-Sig Wallet – which held 514,000 Ether. That’s worth around $300,000,000.
Killing the smart contract resulted in 514,000 Ether being utterly inaccessible.
How Did It Happen?
Seems like Parity goofed up on auditing their smart contracts….
One of the contracts was left ‘uninitialized’. And a anon developer was able to simply take ownership by initializing it. Yeah... that simple.
He then went on to hit the self-destructo-button and killed it. Why? I’m not sure. He probably fumbled. It seems like an “oopsies!” moment. Either way, the contract is dead. Kaput! Gone. it was a disaster
All Parity Multi-Sig Wallets created after July 20th 2017 relied on that contract and without it – they can’t function. Funds in those wallets were effectively… burned?
Okay… So then what?
Around 600 wallets had their funds rendered inaccessible… indefinitely. Parity now have a lot of unhappy customers – some of which are big name ICOs. (It’s important to note, however, that Parity haven’t lost any funds themselves.)
A solution was proposed a couple months ago: EIP-999. An EIP is simply an “Ethereum Improvement Proposal”. Put in simple terms, the proposal was:
“Let’s just simply restore the contract with a patch”
This patch would replace the self-destructed contract with a brand new contract. This new contract basically:
- Allowed users to access their funds.
- Contained a fix for the previous ‘bug’. (bug or..oversight?)
No big deal. Right? Ah… If it were only that simple... This where the EIP-999 debate started to boil...
EIP 999 Proposal - Contentious?
Why the Drama?
The patch is simple – but the consequences are not. A code change like this will result in a hard-fork. A hard-fork isn’t necessarily a bad thing. In fact, the Metropolis upgrade was a hardfork and everything turned out fine.
It’s when we have a “contentious” hard-fork that things get really ugly. Why? Because a hard-fork requires miners and nodes to perform a software update. If the software update is “contentious” (controversial/debated) then we may not have 100% agreement on the upgrade.
If some participants decide to upgrade and others don’t, they will “fork” off into two different chains. We will have a chain split – fracturing the network and the community.
EIP 999, unfortunately, turned out to be a contentious proposal.
EIP 999 Vote: Majority Say NO
Some people say EIP-999 is the “right thing to do: people deserve access to their money”.
But others say that it’s "not fair – parity shouldn't get special treatment". And then there are the “code is law: deal with it” advocates.
There are many camps, but ultimately it’s either: “For EIP-999” vs “Against EIP-999”. A vote took place to gauge community support.
The vote was informal, but was enough to see that the community was at odds. And this is why we should care. Because if there are enough people who disagree with the other side, then a chain split WILL occur.
At that point it won’t matter what’s fair, what’s right, what’s law etc.... The community will be fractured, and a narrative will be spun for both sides.
A few days ago the EIP-99 was set as “Accepted” on GitHub because it was “not technically objected by the devs”. (So not saying ‘no’ means ‘yes’, now…)
Apparently this was done in error, and was quickly reverted. But it still stirred things up. And now it seems like there are changes being made to the EIP process to bypass community consensus
The cauldron is beginning to simmer.
Facing The Real Issues
All of this makes for an extremely intriguing case study. It’s in Parity’s best interest to have EIP-999 passed. But Parity doesn’t want a chain split either. So the only way they can have that is to have EIP-999 be passed without contention.
Well, there’s clearly contention… Now what? Are they going to pass it under EIP-1 because it is “technically feasible”? Oh dear...that would open a new can of worms.
And what about the people screaming “Not fair!”? Last year, QuadrigaCX – Canada’s largest exchange – faced a similar issue and had a huge amount of Ether rendered stuck. At the time, general consensus was “Your shit out of luck – Double check, triple check your godam code!”
Should Parity be held accountable for lack of auditing standards?
Governance & Audits
In the 2008 financial crisis, big banks were bailed out to utter disdain of the public. Regardless of whether the bailouts were the right move or not, people were upset. But unlike the Ethereum network, people couldn’t simply “fork off”.
It’s up to the community to step up and show that we are better than the rest. Someone is going to have to bite the bullet and set the stage for future dilemmas. Who is it going to be?
Either way, it’s now evident that we need more thought and discussion put into:
a) The Governance Process
b) Auditing smart contracts with more seriousness
Make no mistake – none of this is going to be easy. After all, we are a community who hate government but are in sore need of governance.