Academic analysis of Blockstack's claims that Ethereum won't work?
Muneeb Ali, a co-founder of Blockstack and PhD in Distributed Systems, along with others in the Blockstack community are vocally skeptical about remote execution of untrusted code on Ethereum. See the Twitter thread between Muneeb and Vitalik here, below the video: https://twitter.com/ponli137/status/870637598867415040
As far as I can tell, Muneeb's concerns would lead to a conclusion that Ethereum's vision of "worldcomputer" is simply impossible.
Can anyone academically address Muneeb's criticisms, broken out here?
Posted Jun 2, 2017, 6:30 PM UTC · edited
If that's impossible, then so is Javascript in browsers (or any sort of virtualisation, like docker or VPSes). Not to mention that turing completeness is a red herring here, and has nothing to do with whether the VM can be broken out of or not.
Hi Nick, first of all, thanks for your comments on Twitter and spending time discussing this. I actually bought ether way back in the pre-sale and been following how you guys have built a great community of developers. I appreciate what the community is trying to do and I'm personally sold on the vision of decentralization.
We're just discussing technical concepts here for the benefit of everyone.
Now with that context in mind, it's great that you brought up JavaScript in browsers. It's a good analogy. JavaScript in browsers works when the code is from "trusted sources" i.e., websites you feel comfortable visiting and it doesn't work when the code is from "untrusted sources" i.e., malicious websites that want to do bad things to your machine and/or browser. There is no browser that I'm aware of that declares/thinks that no JavaScript code can crash the browser. This has literally happened many many times and then browsers roll out fixes.
On Ethereum, the situation is different because users don't have a choice between executing code only from "trusted sources". They must, by definition, execute all code (including potentially malicious one). And just like browsers can't give any guarantee that arbitrary JavaScript code will not crash the browser, similarly, Ethereum cannot give a guarantee that arbitrary "smart contracts" will not crash the EVM and, by definition, crash all nodes on the network (since all nodes execute the same code in the same EVM environment). Does that make sense?
*EDIT: bought ether
But that's not the JavaScript trust model. The trust model is that you should be able to execute JS from untrusted sources. Without that, the whole premise of the web breaks down.
On occasion in the past that hasn't been the case (though actually, not that often; usually it's plugins instead), and in those cases the bugs have been fixed.
No code is bug free, but the EVM, just like the JS VM, is designed to operate correctly when executing untrusted code.
Moreover, none of this has anything to do with turing completeness -it's not necessary for a VM to be turing complete to be exploitable, and it's unclear to me how a VM that permits easier static analysis would be used to prevent 'bad' code from running.