My primary objection to Ethereum is two-fold: first, the power of the smart contract language, and second, the fact that validation of the too-powerful smart contract language
must be done onchain. This leads to a massive inefficiency that encourages centralization and therefore is against the goal of decentralized finance.
There are two primary points that the base blockchain must enforce:
- The ordering of events in the blockchain.
- The validity of events in the blockchain
If the ordering of events is not enforced, then it is easy to create two valid conflicting histories. If the validity of events is not enforced, it is easy to create an invalid history.
Miners only ensure the former; fullnodes enforce the latter as part of consensus. Thus, that RSK is "merge-mined" simply means that it has some way of enforcing the first point, but speaks nothing of how it enforces the second point. Worse, merge-mined does not necessarily mean that
all Bitcoin miners actually enforce the first point above, only those that actually merge-mine RSK enforce the first point above.
That is, there must also exist some fullnode network of RSK nodes, which enforces the validity of events in the blockchain. And those fullnodes must be well-distributed: if only a few nodes exist, they can be co-opted and invalid events (such as those that create more Bitcoins on the RSK blockchain) can be allowed.
Now, the distribution of RSK fullnodes is hampered if every fullnode must verify a fully-powerful smart contract language. The more powerful the language, the greater the overhead of validation. If the validation becomes too expensive, it is easier to not run an RSK fullnode yourself and trust a third party instead, which runs into the point of trust third parties being security holes.
But that is not my only objection here. The other one is the power of the smart contract language.
https://en.wikipedia.org/wiki/Rule_of_least_power holds here: choose the least powerful computer language suitable for a given purpose.
Anyone who thinks "more powerful language == better" needs to read this quite well:
https://tvtropes.org/pmwiki/pmwiki.php/LoopholeAbuse/RealLifeLaw. The point is that loopholes
will be found in any smart contract, and they
will be exploited (Murphy Law). A smart contract is nothing more than a program that enforces certain behavior, and all laws are just such programs that enforce certain behaviors on puny humans. Thousands of years of law have shown that humans like going through loopholes in laws, and that will hold sway as well in smart contracts.
Thus, the design of Smart Contracts Unchained:
https://zmnscpxj.github.io/bitcoin/unchained.html- The blockchain validity rules only require k-of-n signature validation.
- Participants in a smart contract can agree it is actually full of holes and can agree to ignore the contract to do the sensible thing.