Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SMC Changes for a minimal sharding protocol #89

Closed
3 tasks done
prestonvanloon opened this issue Apr 8, 2018 · 9 comments
Closed
3 tasks done

SMC Changes for a minimal sharding protocol #89

prestonvanloon opened this issue Apr 8, 2018 · 9 comments

Comments

@prestonvanloon
Copy link
Member

prestonvanloon commented Apr 8, 2018

The research team has identified a few new changes in "spec 1.1" that they are confident will not be removed in a future specification.

High level requirements (please check off these as PRs are merged):

  • Anyone can call addHeader(period_id, shard_id, chunks_root) at any time. The first header to get included for a given shard in a given period gets in, all others don’t. This function just emits a log.

  • For every combination of shard and period, N collators (now called “notaries”) are sampled. They try to download the collation body corresponding to any header that was submitted. They can call a function submitVote(period_id, shard_id, chunks_root). This function just emits a log.

  • Clients read logs. If a client sees that in some shard, for some period, a chunk has been included and >= 2N/3 notaries voted for it, it accepts it as part of the canonical chain.

Assigning to SMC expert @enriquefynn for now.
We should consider writing smaller tasks to achieve the above requirements unless this can be completed in 1 or 2 medium sized pull requests.

References:

@terencechain
Copy link
Member

terencechain commented Apr 10, 2018

Adding new requirements after latest research thread:

  • SMC initializes proposer_registry per shard which keeps track of proposer deposits
  • proposer client calls get_eligible_proposer to sample per shard per period
  • shard uses main chain block hashes delayed by 20 mins

Reference:
Expanding on proposer/notary seperation

@enriquefynn
Copy link
Contributor

enriquefynn commented Apr 10, 2018

We shouldn't use "minutes" when talking about causal time dependencies, since we don't have a real time clock.

@rauljordan
Copy link
Contributor

@terenc3t thoughts on integrating the changes from the proposer/notary separation into the minimal sharding protocol? We need something we can start implementing asap.

@terencechain
Copy link
Member

@rauljordan We have enough information to start making changes on the SMC. I prefer we make incremental changes and open small/medium sized PR in parallel with the progress of the research side.

Besides p2p, what we can start implementing now:

  • Proposer client can sample for getEligibleProposer() and call addHeader()
  • Notary client can call submitVote()
  • SMC emits logs for addHeader() and submitVotes()
  • Client can listen to the logs

@terencechain
Copy link
Member

Check out pyevm team's PR for notary registration. Excellent reference to follow along:

ethereum/sharding#77

@prestonvanloon
Copy link
Member Author

prestonvanloon commented Apr 11, 2018

Some hints in py-evm ethereum/py-evm#539

@rauljordan
Copy link
Contributor

Being worked on in #93 already

@rauljordan
Copy link
Contributor

@terenc3t and @prestonvanloon can we close this?

@terencechain
Copy link
Member

Let's close this after #97. We are almost there

Sharding Manager Contract automation moved this from To do to Done May 10, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Development

No branches or pull requests

4 participants