Ditto, after reading several of the about pages, I'm still not sure what Ether is, or how it's used, or who the target audience is.
Something in there about a decentralized platform for running apps, but I don't want to guess too deeply about what this means.
Is it a cloud hosting platform that runs on Ether? Is the platform going to be used primarily for mining Ether? I'm not even sure, if anyone has a short description that will explain what this is, I'd love to read it!
Ether is a "computational currency." You earn it by running computations on your computer. You spend it by purchasing processing power on other people's computers. The computation is software defined, so that customized "distributed apps" are possible.
This is my outsiders understanding. I think there are potentially a lot of things that could be gotten wrong here - from the specific implementation and security measures to the economic plan. But it's one of several such experiments with using the blockchain, so I'm looking forward to see what they can do - that said I have no expectations for financial gain.
1. A program written in ethereum can execute code at a predetermined point in the future, and there is as close to 100% certainty as possible that the code will execute as written (i.e. as long as a single ethereum user remains in the world at that date everybody's code is guaranteed to run exactly as written, even if it involves moving money between accounts.)
2. All computer programs are "open source" not just before a program is launched but also WHILE THE PROGRAM IS RUNNING- Nobody can run any code without having full transparency.
3. Users accounts are provably always in a state of complete anonymity (unless of course they do something to purposely reveal their identity) and can use all programs on the platform in this fully anonymous state.
4. Program authors are forced to explicitly document ahead of time all situations in which their program code might be modified in the future, making it much harder to have the "screw your user after they've committed to your platform" business model that's so popular among startups these days.
Those are just some of the properties of ethereum that come to mind.
>4. Program authors are forced to explicitly document ahead of time all situations in which their program code might be modified in the future
Can you point me to a resource that explains this in more detail? I think I've gotten the gist of how Ethereum works, and have gone through a tutorial of Solidity, but I'm unclear how versioning will work in Ethereum (even though I do have some guesses for how it could be implemented).
How would I deploy a new version of my contract? Would I have to implement a mechanism for basically hot loading new code?
If you want your contract to be updateable, you can have the contract store an address of a contract which is the part you might want to change. Then, to update the contract, you upload the new version of the contract ( or contract component) , and make the address that the first contract stores point to the new one.
Uh...
Users interact directly with contract A.
Contract A stores a address which currently points to contract B, and uses whatever contract it currently points to to accomplish whatever it needs to do for users.
To update the part of Contract A, upload an updated contract C, and send A a message to tell it to change the address it stores to point to contract C instead.
Contract A only changes where the address points if whatever conditions it was designed to use for that are met.
And, of course, you don't have to use this "point to another contract" thing.
That's just if you need part of the contract to be updateable under some conditions, which you might not need.
Yeah, that's pretty much it: By default, contracts can't be updated, but you can create a network of multiple contracts to allow some of your code to update. Myself, I think this is "cheating" and destroys the value proposition of ethereum... a better approach (and what I hope to do) is to keep my main contract(s) alive for all eternity and just add new features with "accessory contracts" but it's easy to fail with this if the original contract has problems.
> But it's one of several such experiments with using the blockchain
Well, using a blockchain. Its not using "the blockchain" in the usual sense; Ethereum is specifically using an alternative to the Bitcoin protocol and blockchain, not built on top of it.
Bitcoin isn't "the blockchain" any more than Internet Explorer is "the browser". When people talk about "X in the browser" it's understood that they mean any generic implementation of a web browser.
Oh! That sounds a lot more like the kind of distributed system I assumed everyone meant when they first started talking about "cloud computing", rather the kind of dumb rent-a-datacenter schemes we have now. It'll be interesting to see if this takes off.
One example of an app you'd want to run on ethereum is something like a prediction market (PM). A PM is a pretty general financial market and can be used to speculate on things from "Who will become the US President in 2016?" to "Will Russia invade Estonia by 2020?" to "Will American Pharoah win the Triple Crown?"
Ethereum is useful for this because it allows for distributed custody of funds. No one controls the funds stored in these contracts, so there's no one to run away with and steal all the money, and, since it's run on Ethereum, there's no middleman taking 5-10% fees. In fact, for the first time, we can have a truly global prediction market, and _anyone_ can create markets on it to boot! This is just one app possible on ethereum, and it's one I'm building - www.augur.net if you're interested.
Ethereum's basically a platform that allows you to create "smart contracts" (aka programs) that are practically guaranteed to execute the way you write them. And multiple people can interact with the programs and it'll still be executed the same way. This is a bit abstract, but the main huge advantage this allows is: you can finally send money to some program, and the program will do exactly what it says it will, and no one else can modify the results or even touch your money. Bitcoin allows you to send money around, Ethereum allows you to enter into complex contracts with money, and those contracts are always enforceable.
To take this into the real world, imagine you want to make a bitcoin prediction market. Since you can't run the complicated buy/sell machinery of a prediction market directly on bitcoin, you're forced to take deposits from users, match their orders, and then do payouts accordingly after the event occurs. You can run away with the funds at any time, and there's nothing stopping you. Sure, you could elect to use multisignature wallets or cold storage, but that didn't stop MtGox from happening. Heck, even InTrade, the largest prior prediction market had millions of dollars of funds embezzled by their later CEO.
Now with Ethereum, we can send funds to a contract, they're stored there. You can buy and sell and all orders go through the contract. At the end payouts are done by the code in the contract, and no one can take the funds held in the contract.
Something in there about a decentralized platform for running apps, but I don't want to guess too deeply about what this means.
Is it a cloud hosting platform that runs on Ether? Is the platform going to be used primarily for mining Ether? I'm not even sure, if anyone has a short description that will explain what this is, I'd love to read it!