Eth2.0-specs: Miscellaneous beacon chain changes鈥攖ake 4

Created on 22 Feb 2019  路  7Comments  路  Source: ethereum/eth2.0-specs

(See #128, #218, #322 for takes 1, 2, 3.)

Below is a list of miscellaneous suggestions for phase 0, most of which were discussed on the researcher's call on Feb 19. This issue keeps track of some of the phase 0 work remaining.

  • [x] 1. Friendlier GENESIS_SLOT: Implemented in #655.
  • [x] 2. Granular state roots: Expose state roots at every slot. Implemented in #649.
  • [x] 3. Previous block root reconstruction: Provide enough information in state to reconstruct the current block's previous_block_root. Implemented in #649.
  • [x] 4. Define genesis Eth1 data: Implemented in #649.
  • [x] 5. Mandatory deposits: Mandatory processing of pending deposits.
  • [x] 6. Transfers during pre-activation: Allow not-yet-activated validators to make transfers.
  • [x] 7. LMD GHOST tie breaker: Compare block hashes to tie-break LMD GHOST.
  • [ ] 8. Maximum reversions: Enshrine dynamic weak subjectivity revert period. See #577.
  • [x] 9. Double justifications: Specify fork choice rule when there are two justified blocks at the same height. (Possible solution: ignore both and fallback to the previous highest justified block.)
  • [x] 10. Move to SHA256: See #612.
  • [ ] 11. Standardise BLS12-381: See #605.
  • [ ] 12. Performance parameters tuning: Fine-tune SECONDS_PER_SLOT, SHARD_COUNT, etc. based on benchmarks.
  • [ ] 13a. Increase proposer rewards: See #621. Need to check incentive compatibility with inclusion distance reward.
  • [x] 13b. Incentive-compatible proposer rewards: Make proposer rewards proportional to balance.
  • [ ] 14. Increase rewards in general: Calculate theoretical max issuance rate and work backwards to expected issuance.
  • [x] 15. Reduce SSZ_CHUNK_SIZE to 32: See #603 and #696.
  • [x] 16. SSZ tuples: See #665 and #696.
  • [x] 17. Immediately withdrawable if bad proof of possession: See #657.
  • [x] 18. 4-byte working balance: See #685.
  • [x] 19. Merkleisation-friendly pending attestations: See #697.
  • [ ] 20. Fine-tune container field ordering: To do with constants fine-tuning.
  • [x] 21. Minimum activation period: See here and here.
  • [x] 22. Milder ejections: Replace exit_validator by initiate_validator_exit in process_ejections.
  • [x] 23. Improved rate limiting: Change the rate limiting logic (for entry/exit/withdrawal) based on this Ethresear.ch post.
  • [x] 24. Epoch transitions at start of epoch: Instead of at the very end of the epoch.
  • [x] 25. Epoch-based proposer slashing: As opposed to slot-based.
  • [x] 26. Genesis epochs: Use GENESIS_EPOCH - 1 for previous_shuffling_epoch and maybe previous_shuffling_epoch.
  • [x] 27. No backfilling of latest_active_index_roots: Only set the active index root for the first slot.
  • [x] 28. start_shard offsets: For fairer crosslinking latency across shards.
  • [x] 29. Remove deposit timestamps and DepositData: See #760.
  • [x] 30. Fair proposer sampling: See #733.
  • [ ] 31. Slashed validators and LMD GHOST: Should attestations from slashed validators be ignored in LMD GHOST?
  • [x] 32. Incentives simplification: Simplification of the rewards and penalties.
  • [ ] 33. Exit fee: See here.
  • [x] 34. GENESIS_SLOT == 0: From Danny.
  • [ ] 35. Incentive-compatible crosslink rewards: Proportional to amount of crosslink data.
  • [ ] 36. No phase 0 transfers: Push transfers to phase 1 so that no economically meaningful activity happens during phase 0. This allows for phase 0 (a "testnet") to be rebooted if things go horribly wrong.
  • [ ] 37. Explicit genesis deposits: Put genesis deposits in block.body.deposits.
  • [x] 38. Remove serialization from consensus: See #924.
  • [ ] 39. Do not store withdrawal credentials: See #937.
  • [ ] 40. Increase SECONDS_PER_SLOT and remove MIN_ATTESTATION_INCLUSION_DELAY: The idea is to set different SECONDS_PER_BEACON_SLOTand SECONDS_PER_SHARD_SLOT, e.g. to 8/4, 12/3 or 16/4.
  • [ ] 41. The slotering: Remove various unnecessary slots and replace by epochs where appropriate. (Justin surprise cleanup.)
  • [x] 42. Graffiti: 32-byte arbitrary data in blocks
  • [ ] 43. Merge historical stats: In particular, merge constants under "State list lengths".
  • [ ] 44. Improve epoch processing: See #1043.

Most helpful comment

  1. Improved rate limiting: Change the rate limiting logic (for entry/exit/withdrawal) based on this Ethresear.ch post.

I asked econoar to study more to make sure this is a good idea.

All 7 comments

  1. Immediately withdrawable if bad proof of possession: See #657.

We decided during the call to not do that, correct?

  1. Increase proposer rewards: See #621. Need to check incentive compatibility with inclusion distance reward.

If we are going to do this, then making proposer rewards proportional to balance should arguably be in there as well. But it's not yet clear to be that we should do this; as I mentioned in the call, proposer rewards are already an expected 1/9 of validator's total revenue, and expected to increase in phase 1 due to minor rewards from the various custody objects.

Also, did we want to add a mandatory minimum time that a validator must have been deposited before they can exit? This would (i) ensure stability of persistent committees and (ii) help put a cap on validator registry modification events.

  1. Improved rate limiting: Change the rate limiting logic (for entry/exit/withdrawal) based on this Ethresear.ch post.

I asked econoar to study more to make sure this is a good idea.

13a and 13b

735

  1. No backfilling of latest_active_index_roots: Only set the active index root for the first slot.

Why? In the light client spec, I use the latest_active_index_roots as a way of getting the historical proposal committee, and removing the backfilling would require me to add extra special case logic there for the near-genesis case.

  1. Double justifications: Specify fork choice rule when there are two justified blocks at the same height. (Possible solution: ignore both and fallback to the previous highest justified block.)

I'd say we just use the same rule we do in other contexts and sort lexicographically by hash.

Closing in favour of #1053 and #1054 馃帀

Was this page helpful?
0 / 5 - 0 ratings

Related issues

spble picture spble  路  28Comments

protolambda picture protolambda  路  18Comments

JustinDrake picture JustinDrake  路  24Comments

vbuterin picture vbuterin  路  13Comments

JustinDrake picture JustinDrake  路  15Comments