* Introduce consensus code for Whisk
* polish, simplify, clean up (~100 fewer lines)
@asn-d6: As discussed, I fixed a few bugs along the way but likely also introduced some bugs :)
* minor cleanups and fixes
* simplify is_k_commitment_unique
* Update beacon-chain.md
* Update beacon-chain.md
* Initialize `k` in `get_validator_from_deposit()`
* minor cleanups
* Update beacon-chain.md
* Create beacon-chain.md
This PR changes the Whisk tracker format to be of the form `(r * pubkey, r * BLS_GT_GENERATOR)` instead of `(r * k * BLS_G1_GENERATOR, r * BLS_G1_GENERATOR)`. This allows for non-interactive tracker registrations from validator pubkeys, removing ~50 lines the code. It also significantly reduces the amount of state overhead. This PR also removes permutation commitments, though those can be easily readded if deemed necessary.
* A couple of fixes to the no-registration simplification
@asn-d6: Readded a consistency check for `IsValidWhiskOpeningProof` (involving `pubkey` instead of `k_commitment`).
* remove unused helpers
* use Mary's suggested tracker
* Update beacon-chain.md
* Revert G_t element optimization
This needs its own ethresearch post, and some additional analysis to see if we can do the shuffle ZKP in the allowed
timeframe.
This reverts commit 8517acabfc1dbb1a35789e6170b5db0bb2c19c9a.
* Implement new shuffling strategy
Ditch the Feistel logic and instead have each shuffler pick the row they shuffle using their RANDAO reveal.
* Curdleproofs edits
* working whisk eth2spec
* working whisk dummy test
* add more boilerplate set up code
* rebase constants
* Implement even newer and simplified shuffling strategy
This commit further simplifies 0faef30fc131d1b471b63a7f16772eeeef548ef8 by removing the entire squareshuffle.
The latest version of https://eprint.iacr.org/2022/560 proposes that each shuffler picks random indices from the entire
candidate set instead of organizing validators into a square.
* Move to _features
* remove dummy test
* Run doctoc
* Change Whisk's previous fork to Capella instead of Bellatrix. Make linter happier.
* Fix lint
* Fix pylint
* Fix mypy issues
* Clean-up get_beacon_proposer_index
* Fix doc headers
* Fix capella link
* Update apply_deposit
* Rename process_shuffled_trackers
---------
Co-authored-by: George Kadianakis <desnacked@riseup.net>
Co-authored-by: Justin <drakefjustin@gmail.com>
Co-authored-by: Nalin Bhardwaj <nalinbhardwaj@nibnalin.me>
Co-authored-by: Hsiao-Wei Wang <hsiaowei.eth@gmail.com>
Previously the number of subnets is equal to MAX_BLOBS_PER_BLOCK which
specifies the number of blobs per block. This commit now makes the
number of subnets equal to BLOB_SIDECAR_SUBNET_COUNT instead.
The advantage of doing this is that we can change MAX_BLOBS_PER_BLOCK
without worrying about the p2p network structure and the number of subnets.