I couldn’t believe it happened - as I sat down at my desk, I opened my laptop and I was hit with the news I knew the cryptocurrency community had been dreading might happen eventually.
It was moments like this the crypto community had discussed with concern - a leak, a hack or similar, leading to a freeze on digital wallets powered by a single provider.
By now, you’ve probably heard the news already - an estimated $280m (£212m) worth of the ether token is locked up because one user accidently deleted the code library required to access digital wallets.
I’m going to break down what actually happened and outline what could have been done to prevent this.
It all started at the beginning of the month when one user overstepped the mark (by accident, I should note). They were playing with the Parity multi-sig wallet library contract, and accidentally triggered it’s “kill” function, effectively freezing the funds on all Parity multisig wallets.
WOAH - that was a lot of jargon. Let’s break it down: Parity is a digital wallet provider (kind of like a bank which provides a number of different bank accounts). Multi-signature wallets are popular (especially with Initial Coin Offerings, where companies raise money by investors/consumers buying into their coin (in the hope it will increase in the future)), because these wallets require more than one user to sign off before funds can be transferred (more detailed information on ICO's here).
A recent example of this in my own life was when I was buying some software for a sizeable amount. We have a rule in our company that for any transaction above a certain size, an automatic message will be sent to our finance team who can either approve or reject the transaction, by which time they can speak to us to make sure this came from us and is a legitimate transaction we’d like for them to approve. I can think of a multitude of things in my personal life I wouldn’t have bought if I had a third-party who verified every purchase!
To get to the point of the story - there was an unprotected kill/suicide function in the codebase which the developers hadn’t noticed or closed up. Here’s a short yet informative analysis of the smart contract bug by a security researcher if you want to get into the details.
Having had hundreds of conversations with development teams about speeding up their development process and helping them with their QA challenges, there hasn’t been a single conversation where someone boasted their software has been / will always be perfect (i.e. no bugs have ever come up in their code).
This smart contract bug could have been spotted and dealt with much earlier in the process (apparently the wallet provider knew about the bug a few months before), with the right infrastructure and a robust testing strategy before each new update.
Got any feedback? Let us know in the comments below and reach out to our team to find out how we can help you!