I'm sorry if this is the wrong forum to ask because I'm not versed well enough in the code to understand it, but how Ethereum manages scalability of the code?
Suppose Ethereum becomes as big as twitter, facebook, google (or even all of them), does it means that every computer connected to it has to run all the commands that are executed, and have to be as powerful as a google data center? Of course serving media and files wouldn't be in the Ethereum scope as those could be served by torrents, but code execution itself, passing data around, would. And since code is reexecute in all machines, it's not that the total network would have to be as powerful as twitter + google + facebook data centers, it's that every single node has to be as powerful as the total sum of them!
Of course this would be rather silly, so I'm missing something here: what is it?
6 ·
Comments
Lets say we're willing to put 1GHz at it, and it takes 50 instructions to do a single ethereum command, and a typical contract does 100 of them, each person using such contract once a day, then we can deal with 200k people.. A rough estimate, probably really at the low end..
1) ethereum will be too expensive to do anything more than a few very simple financial contracts as a decentralized twitter will spend millions reading tweets
2) ethereum mining will be done only by very high end dedicated computers, having the same centralization issue as ASICs
3) both of those.
@avsa: yes, but there is very little reason to actually put a twitter in ethereum.
I think quite a lot can be turned into distributed storage, it is a matter of putting the processing on the side of the user. And it doesnt take any setting up of servers, so it would probably be more convenient. But i dont know how a twitter would work. Actually i think it is better to try conceive how a forum would work, less bagage.
As per Gav Wood comments in a discussion we had with him on skype, we're just not going to know how much computation we can do without some decent modeling and/or empirical studies on a yet-to-be-implemented optimized VM.
Why not start a brainstorming session to see which ideas have merit for scalability and which don't? Here's what I garnered recently:
-) Maidsafe, proof of resource (will it work?)
-) Proof of Location and Connectivity (http://forum.ethereum.org/discussion/744/proof-of-location-connectivity-decentralized-utilitarian-scalable-global-resilience-network , my immature brainchild)
-) Sidechains and hence blockchain interoperability with difficulty arms races driving specialized ETH spin-offs, (merged mining requirements would need to lessen though)
-) Proof of Transaction (http://bitcoinmagazine.com/12296/transaction-rights/)
-) SCIP Proof of Execution (far off from practicability afaik)
The winner of crypto 2.0 will offer superb utility and one factor of that is scalability. If there ought to be something as 'winner' in a space of simultaneous cooperation and competition of course.
block.prevhash
, wherescore = sha3(sha3(tx.data[1] xor contract.address xor block.prevhash))
. Dont know how to make the contract check if the block was actually submitted, and if it contains valid/useful transactions, so i just put in votes that can take away the block reward and stake the miner has.Lots of problems as is, including stupid mistakes. Staked mining would probably be better. Point is, maybe contracts can be made that do a little merged mining to a (possibly non-currency)blockchain,(like for creating an ordered tree of posts) pay out in ethers and have a method to stop useless blocks. Of course, for posts, for instance, how do miners know what to include..
Maybe the top hash of a Merkele tree can provide a claim about what transactions are in there, that could be challenged. For instance if transactions cost ethers, but to keep the usefulness of the second chain, users are only periodically charged. The charges themselves are just claims, nothing stopping incorrect charging at that point. However users could challenge it, the 'casheer' then has to provide a (transaction, merkele path to top) each part of the costs. This would be expensive on the ethereum blockchain. Casheers would have to put a lot of stake at risk. Still, it is a matter of computation to charge the correct amounts, cant be much risk to do it wrong..