If your code doesn't reach out beyond the blockchain, then there's very little it can actually do. You are limited to twiddling balances of coins. This turns out to be great for making casinos and ponzi schemes, but little else.
To do anything more meaningful, code needs to interact with the real world. And this is generally the point at which blockchain apps lose all of their purported benefits, like decentralization, immutability, reliability and so on.
> If your code doesn't reach out beyond the blockchain, then there's very little it can actually do.
Asset issuance, voting, wills, identity/reputation systems, land registries.
Fundamentally, a blockchain is just public, transparent immutable data history. Of the above sample cases, all it takes is for the powers to be to recognize the data as a reflection of the real world; which is a barrier outside of the technology.
And sidenote, decentralized oracles will literally tie outside world to the blockchain.
Asset issuance, voting, wills, identity/reputation systems, land registries.
All of which reach beyond the blockchain. No-one is going to care that a 'smart contract' says that Alice owns a plot of land when Bob holds the real-world deeds.
The real world and the blockchain can only be linked when, as you say, 'the powers that be' decide to recognise the data. But then you've lost all of the advantages that the blockchain was claimed to possess. For example, if we need an entity to recognise that the land registry smart contract is valid, there's no more decentralization, and we might as well let that entity store the land registry in their own simple database. The blockchain becomes pointless and wasteful.
> But then you've lost all of the advantages that the blockchain was claimed to possess.
That's a very wide brush stroke to paint. You just have to analyze each use case independently.
In the same example of land registry, just a transparent history is a huge value add when dealing with corrupt government officials. Here's a case study https://s3.amazonaws.com/ipri2016/casestudy_collindres.pdf . Voting transparency even with the government as the part of centralization is a huge value add imo.
Further, even allowing centralization in certain points, like a SpaceX IPO (which should def be centralized), allows whoever holds a share to make arbitrary, trustless mediums and rules of exchange.
How does the blockchain ensure that I can both verify that my vote was counted but can't sell my vote? https://youtu.be/BYRTvoZ3Rho describes one electronic voting system that's supposed to have those important properties, even though I don't fully all the details yet.
Depends on the specific implementation. Just because you do it on a blockchain doesn't mean you can't require people to show up to a polling center and sign transactions in person.
With Ethereum, one way to do it is to make the voting weight non-transferable, meaning to give someone else your vote you'd need to give your private key.
It would be of course crazy to do that; like giving someone your bank card and PIN number to give them cash.
To do anything more meaningful, code needs to interact with the real world. And this is generally the point at which blockchain apps lose all of their purported benefits, like decentralization, immutability, reliability and so on.