There seem to be two incredibly staunch and polarizing interpretations of the phrase "Code as Law". My goal here is to initiate a civil conversation about what it has meant thus far, and what it means going forward. I'm not trying to say which interpretation is right or wrong, merely trying to understand them and apply them to real-world, non-blockchain solutions. I personally subscribe to the second interpretation below.
What sparks this controversy?
Ethereum successfully hardforked today, bringing with it all the implications associated with hardforking both known and unknown. For anyone not aware: the fork was brought on by malicious use of the DAO smart contract's unintended functionality which resulted in potential losses of somewhere around $50million (depending on when you look at the price of ETH). Additionally, Steemit was hacked very recently by malicious use of unintended functionality (injecting script into posts and capturing passwords) which also prompted a hard fork for recovery.
The reactions of the two communities were incredibly different, where Steem(it) users were happy to have the fork and resulting recovery of accounts and funds. On the other hand, the Ethereum community was incredibly divided on the topic. I believe this revolves around the fact that there is significantly more talk about "Code as Law" with Ethereum than with Steem. Combine that with the fact that Ethereum is a platform designed essentially to let people engage in contracts with other people via a blockchain, removing much of the trust involved. Steem doesn't really have this functionality, or at least it isn't actively being used. As users of Steem(it), we basically enter into a "contract" with just the blockchain, just the code.
These interpretations are summaries of what they seem to be for me. If you disagree, feel free to share in the comments! I'd love to talk about it so long as we can remain respectful, dignified people.
Interpretation One:
Many people think that the code should be the end-all be-all of any dispute. Here, "Law" is interpreted as being the end-all be-all of every situation that never changes. The code should not be changed, nor should any exceptions be made when the code "malfunctions". There are no "bugs" in this interpretation, since a "bug" implies that something is wrong and should be fixed. In this position, bugs are therefore basically indistinguishable from features.
Implications:
Applying this interpretation to a real-world, non-blockchain scenario could result in the below situations:
- Enron followed "the laws" using some obscure rules of accounting and many other methods. Some of what they did ended up being "illegal" but for the most part the vast majority of it was only just "unethical". So if they had followed the laws and operated on the fringes but still within the system, should none of the people executing these operations be punished?
- When the 2008 housing crises hit in the U.S. everyone turned to the banks and said "You shouldn't have been giving out those loans, you should be punished!". However, again, in the vast majority of cases no laws were actually broken here. Many lendors, both predatory and not, operated within the law and in fact did as they were encouraged to do from every possible angle. People wanted loans for homes, the banks wanted to make loans, the government wanted people to be in homes. In this interpretation, nothing should have been done about the housing crisis. The incredible amount of bad loans were just an unintended "feature" of the lending landscape.
- Bernie Madoff's funds were an active, outright ponzi scheme. Even though this is technically against the law, Madoff and his associates were able to successfully put together and run a ponzi scheme for quite some time. It may have been against the law, but it was possible and in fact happened, so where does that leave us? Should they have been able to keep the funds and go on unpunished just because the environment they were in never prevented it from happening? Some people of this interpretation may believe so.
Interpretation Two:
Laws are flexible. Laws exist now so that we have a good guideline what we should and should not do right now, but they are not perfect nor should they be resistant to change as the environment around them changes. "bugs"(loopholes) should be patched as soon as possible. People exploiting those bugs may even deserve to be punished depending on the consequences and severity of those exploits. Laws are intended to enforce their features, not their bugs. As humans, we should respond rationally to any possible red flags.
Implications:
This makes decisions much more difficult, but creating these laws much easier. Laws can be created and then iterated upon as the landscape changes. However, since we aren't imposing "forever" on the laws we create, they are likely not nearly as "bulletproof" as laws we might create under the first interpretation. We also have to decide when and how to change the laws which can add crazy amounts of overhead to every decision. Real-world scenario:
- People use Tax loopholes all the time in order to save money on their taxes. This is not always necessarily a bad thing, for instance perhaps they give all the extra saved money to charity, etc. Do these people deserved to be punished? They're operating within the confines of the law, they just managed to find unintentional holes to crawl in for shelter. Do we attempt to change the laws in order to fill these holes and lose flexibility or risk introducing even worse holes?
Personally, I'm more in the camp of interpretation two. I understand some of the opinions of people in the first camp especially in the context of computers and code, but at the same time I have yet to find a 100% inflexible, complex solution to be better than a flexible, less complex one
The questions remain whether it would have been better to let the malicious Ethereum user keep the funds that were taken or not. We don't know, nor will we ever at this point. If people were of the opinion that the Ethereum user should have been able to keep the Ether, perhaps that means the Steem hacker should have been able to keep those accounts/funds. Thoughts?
Note: header image pulled from bitcoinez.com
Well....
The reason It took Ethereum Much longer to react because it claimed the mightiest claim of all.. Being able to design Smart-Contracts which is unchangeable, Period. Having pulled in so many investors using that pitch alone would cause second-thoughts and raise question of the integrity of the whole decentralized platform.
All in all the hard-fork was probably the smartest decision, and so was restoring Steem accounts/funds. Being flexible is without a doubt the better solution.
Long story short: Whales took advantage of that and many many trolls were seen with "Code is Law" nonsense.
Yeah, that makes sense. It was a strong claim. I don't see why that raises the question of the entire platform, though. That part still seems a bit dramatic to me. If something absolutely silly were to come up and the core team tried to make changes, they would go largely unsupported and that would be quite obvious.
One still, if nothing else, needs to gain the support of the miners.
Great post. People will always "work the system" or find ways around. Nice work sighting the image source! respect!
Thanks! I try to keep myself honest, hahah.