Sharding phase 1 spec (RETIRED)

Thanks for this, it has lots of interesting ideas as always! If it weren’t for working on developing an implementation myself I would be looking to help with research!

I like the reward for collators, it contrasts to no reward for full nodes at the moment. It’s good that the entry cost for participation as a proposer is only 0.1 ETH, and that collators do not have to be a full node. Unfortunately and understandably, collators still need to deposit 1000 ETH (otherwise too many collators would reduce throughput, increase overhead or increase latency). But the proposer deposit is low enough for an average individual to participate.

What mechanism are you going to use for pseudo random selection, is it perhaps BLS random beacons, RANDAO, pure private randomness, hybrid RANDO/private or NEXT RNG? Looks like it’s going to be random beacons.

It’s interesting that you say a blockchain is analogous to a shard, which is true. However what shall we then call the whole network of shards? A shardnet, perhaps?

Similarly, how does this function work, what’s the code? What’s the hash function, keccak256? AIUI there’s not much benefit in abstracting this.

You have:

But earlier:

So shouldn’t it be something like Proposer balance: proposer_registry[proposer_address][shard_id].balance?

For those who want to learn more about various topics such as those listed in the roadmap, it would be helpful to link to them (perhaps as more information is developed, as the case may be), e.g.:

And a lot more: Sharding - Ethereum Research.

And here’s the above in code to make it easy to copy and paste:

* Phase 2: EVM state transition function

   * Full nodes only
   * Asynchronous cross-contract calls only
   * [Account abstraction](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-101.md)
   * [eWASM](https://github.com/ewasm/design)
   * Archive accumulators: https://ethresear.ch/t/history-state-and-asynchronous-accumulators-in-the-stateless-model/287 and https://ethresear.ch/t/batching-and-cyclic-partitioning-of-logs/536 and https://ethresear.ch/t/double-batched-merkle-log-accumulator/571
Storage rent

* Phase 3: Light client state protocol

   * Executors
   * [Stateless clients](https://ethresear.ch/t/the-stateless-client-concept/172)

* Phase 4: [Cross-shard transactions](http://notes.ethereum.org/s/BJc_eGVFM#cross-shard-communication)

   * Internally-synchronous zones: [mind map including architectures](https://www.mindomo.com/zh/mindmap/sharding-d7cf8b6dee714d01a77388cb5d9d2a01)

* Phase 5: Tight coupling with main chain security

   * Data availability proofs: [A note on data availability and erasure coding](https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding), https://ethresear.ch/t/sharding-and-data-forgetfulness/61, 
   * Casper integration: [Alpha testnet](http://notes.ethereum.org/MYEwhswJwMzAtADgCwEYBM9kAYBGJ4wBTETKdGZdXAVmRvUQDYg=?view=), [papers](https://github.com/ethereum/research/tree/master/papers), [wiki post (probably outdated)](https://github.com/ethereum/research/wiki/Casper-Version-1-Implementation-Guide).
   * Internally fork-free sharding
   * Manager shard

* Phase 6: Super-quadratic sharding

   * Recursively, shards within shards within shards...
   * Load balancing: [Wikipedia](https://en.wikipedia.org/wiki/Load_balancing_(computing)), [search results](https://duckduckgo.com/?q=load+balancing&t=canonical&ia=web). Related: https://ethresear.ch/t/history-state-and-asynchronous-accumulators-in-the-stateless-model/287, https://ethresear.ch/t/state-minimized-implementation-on-current-evm/1255

And a lot more: https://ethresear.ch/c/sharding.

Add a link to the sharding research compendium.

It would also be helpful for those who may be interested in actually working on an implementation to link to the Ethereum wiki list of implementations that are under development or planned.