Hacker News new | ask | show | jobs
by fredfoobar 1860 days ago
Satoshi fixed a bug (that reverted it back to the initial rules everyone agreed upon).

The DAO hack actually was an exploitation of the rules that everyone agreed upon in the DAO, recursively calling a function in your smart contract layer is not a bug.

This brings us to an interesting topic, bugs are common in software,

* Should you make the protocol layer so complex that it increases the probability of bugs being found, being harder to understand and potentially grind the whole system to a halt if a bug is found.

OR

* Should you break them up into layers where each layer has one responsibility (base monetary layer, a smart contract layer, a micro payments layer etc.)

2 comments

> Satoshi fixed a bug (that reverted it back to the initial rules everyone agreed upon).

The Bitcoin chain fork where the bug manifested wasn't reverted. Instead, a chain fork where the bug didn't manifest outgrew the one that did, and is now the canonical fork. If they wanted, miners could continue to mine the fork where the bug manifested. The point is, the Bitcoin protocol didn't change at all -- it merely presented miners and users a choice between two conflicting histories. You can start up a miner on the other fork today if you wanted.

This is not true for Ethereum. Because the undecidability of the EVM precludes miners from determining whether or not a given transaction would touch the DAO contract without first executing the transaction for less than the cost of executing them, there was really no good answer to dealing with the DAO hack. The options were:

* Let the DAO hacker keep the proceeds (this became Ethereum Classic)

* Change the network protocol to prevent the DAO code from ever running (this is Ethereum today)

* Change the EVM so it would permit miners to determine which contract(s) are reachable from a given transaction, thereby allowing them to filter out contracts that could move the DAO funds (a path not taken, because censorship)

> The Bitcoin chain fork where the bug manifested wasn't reverted. Instead, a chain fork where the bug didn't manifest outgrew the one that did, and is now the canonical fork.

That's right, thank you for adding the missing nuance.

I want to add to this, some additional material, anyone interested in the current state of DeFi can understand this

https://medium.com/coinmonks/demystify-the-dark-forest-on-et...