This is an implied function that wraps around your full code. This is instantiated if/when core founders are losing money on a function that possibly had a bug in it. This function returns the wrapped function, under the guise of a new blockchain, with invalidations applied to all 'unintentional' side effects of bad or buggy code.
It happened with the DAO, because founders lost too much money. Just be aware, that VIP() can happen to your code, regardless if your implementation is a bug or intentional. Wrong people losing money means VIP() returns successful.
They had a problem, they asked the community how they would like it dealt with, and acted accordingly.
Saying the founders were losing too much money so they hard forked it is a gross misrepresentation of the reality. It's like a Fox News representation of what actually happened.
"The Contract is the Code, and the Code is the Contract."
It was a programmers no-man's land where anyone could stake a claim, and start doing cool stuff. And if you screwed up, it was your fault. Nobody else's. And you had to watch out, because it was easy to lose money into nothingness (yeah, BTC had checksums, Eth didnt - another point of amateur hour).
Until the DAO.
When that happened, I think $150m of Eth went into it. Massive amounts. The idea was to have a distributed living self-autonomous company. And, by the older ideals, lots of someones didn't do their homework. Or they did and it was intentional. Regardless, the "completely innocent magnanimous leaders of Ethereum" decided to force a Blockchain split, and rewind it all. Of course, Something like 2/3's of the total amount was owned by Ethdevs. Surprised? Nope.
Bitcoin? Sure, I'll play. But Ethereum has proved that if you are in the special class of people (Creators with loads of money lost), you don't matter. Nor do the ideas of what they were supposedly founded with.
Disclaimer: I was a DAO investor. The DAO held 5% of my Ether at the time of the attack.
Having said that, it's not as simple as saying: I support the DAO refund because it was in my best interest. That doesn't necessarily follow, and it didn't necessarily follow for most of the other DAO investors.
I still held 95% of my crypto $ in Ether. I would have been happy to eat the 5% loss if it would have been the right thing to do and instilled confidence in Ethereum and its leadership. There were many debates at that time about what the right course of action was, and it was a very hard decision. If saving 5% of my investment meant I ended up with a worthless 100%, it would be foolish to save that 5%. And everyone else knew this as well.
I think the decision the Ethereum team made was the best moral and legally advisable choice. They had the opportunity to stop the theft of 14% of all Ether, which would have gone to a criminal actor. It required a very risky solution (a hard fork) which came with big consequences (an alternative chain which remains to this day), so the solution wouldn't be feasible for smaller attacks (as some people like the poster before you try to allege). But for an attack which threatened 14% of the available supply, a hard fork to retrieve the funds was a viable solution.
Most of the market agrees with this decision. In the time since the Ether market cap has grown to the second largest of any cryptocurrency at 1/2 the size of Bitcoin. The alternative chain that didn't fork is still alive but only has less than 10% of the Ether market cap. The vast majority of dApps are running on the Ether chain. And it's the chain that is being taken seriously by enterprise (look up "Enterprise Ethereum Alliance"). Large businesses know the founders can't simply hard fork whenever they want to better themselves. The model works around consensus, consensus that is clearly shown by the considerations listed above, and I am glad that the consensus model is strong enough withstand an attack on 14% of its supply and respond with a difficult solution to rescue the chain from a catastrophe. It makes me feel more confidence in the technology, the community, and the protocol.
The project itself made mistakes early on by not sufficiently warning people of the risks of the DAO, which gave justification for the do-over. I think they can be excused given the DAO was the very first smart contract of its kind, and given how much was deposited in the DAO so quickly, which was totally unexpected.
So I think Ethereum can easily be forgiven for the DAO and subsequent hard fork to redo it. It was a highly experimental technology, that saw a major hack of a early-stage application that was only aiming to attract $500,000 of ETH, but had ended up having $150 million worth of ETH deposited in it, when the ecosystem and the state of the technology were not ready.
Could it be that you just resent the fact that people give a lot more value to a forked chain called ETH? This is understandable, since the DAO fail made clear that code run on blockchains still depend on human consensus. Code will run according to spec, but only as long as the people running the nodes decide to adopt a specific version of the protocol. Note that no blockchain tech, not even ETC, is free from this fact. You can run a blockchain using the protocol you want, but what gives it value is human consensus.
Ethereum is not a tech utopia. But it is a damn cool tech, and understanding its limitations is important to be able to take advantage of it.
If I'm going to trust the enforceability of my contract to some group of people, I trust the established legal system--warts and all--much more than the mob rule of the Ethereum crowd.
In short, you're mischaracterizing the motives of the lead developers who supported the HF.
With that, are there any trust algorithms that aren't susceptible to 51% attacks? Ideally power (stake or hash in this case) is distributed amongst actors as much as possible. Cryptocurrency doesn't take us from centralized -> decentralized currency: it moves us from almost wholly centralized currency to more decentralized currency. The move is welcome but idealistically seeing the options as completely centralized or completely decentralized seems a bit misguided to me.
No function as op describes, also no source or reference. Screams FUD, nothing to see here...
Why pick Solidity if Viper and other languages like Low-level Lisp-like Language (LLL) by Consensys[2] are around the corner? Or is this just a matter of language flavour similar to how anybody can pick from a plethora of languages targeting the JVM (Clojure, Scala, Java, etc.)?
[1] https://github.com/ethereum/viper
[2] https://media.consensys.net/an-introduction-to-lll-for-ether...
Solidity is here now, and the demand for Solidity developers is growing by the hour.
"Complete" is certainly in the eyes of the beholder, but Viper's author seems to think the language is "complete enough" to have started writing Ethereum's new Proof-of-Work/Proof-Of-Stake hybrid system (aka Casper contracts[1]) in Viper[2][3].
[1] https://www.ethnews.com/proof-of-stake-vitalik-buterin-share...
[2] https://ethereumclassic.github.io/blog/2017-03-13-viper/
[3] https://github.com/ethereum/casper/blob/master/README.md
We're still very early days, but this is what distributed smart contracts make possible. The second and third order consequences of this will be enormous.
And could you give me a link where this is described in more detail, including addressing various possible objections?
great guide here too.