This repository was archived by the owner on Nov 15, 2023. It is now read-only.
BABE Randomness using PreRuntime digests#2929
Merged
Conversation
This provides the primitive API, as well as exposing it from BABE.
This includes both code to expose them from `srml_system`, as well as using it in (currently dead) code in `srml_babe`.
Otherwise, it errors out at compile-time.
The schnorrkel crate does not work on `#![no_std]`, but the runtime only needs constants from it. This adds our own definitions of those constants, and checks them for correctness at compile-time.
for processing VRF outputs.
It just XORs the VRF outputs together.
Blake2b is used for hashing.
Contributor
|
Does this close #2918 ? It should say so in the PR description if so. Then GitHub can automatically close it. |
1 task
Contributor
Author
It does not, to my understanding ― it makes pre-runtime digests accessible to the SRML modules, but not to authorship. |
3 tasks
rphmeier
reviewed
Jun 26, 2019
rphmeier
reviewed
Jun 26, 2019
There were merge conflicts that needed fixing.
rphmeier
reviewed
Jun 27, 2019
rphmeier
reviewed
Jun 27, 2019
bkchr
reviewed
Jun 28, 2019
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com> Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
* Store an authority index, not the authority itself. * Avoid unnecessary decoding. * Implement relative slots and BABE randomness fully and correctly.
The epoch index will not overflow. Panic if it does.
Member
rphmeier
approved these changes
Jul 2, 2019
rphmeier
reviewed
Jul 2, 2019
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
Bump `spec_version`
MTDK1
pushed a commit
to bdevux/substrate
that referenced
this pull request
Jul 10, 2019
* Initial work on exposing pre-runtime digests
This provides the primitive API, as well as exposing it from BABE.
* Initial work on using pre-digests in runtimes
This includes both code to expose them from `srml_system`, as well as
using it in (currently dead) code in `srml_babe`.
* Bump `{spec,impl}_version`
* Add `u64_backend` feature to curve25519-dalek
Otherwise, it errors out at compile-time.
* Bump `Cargo.lock`
* Do not depend on the schnorrkel crate in the runtime
The schnorrkel crate does not work on `#![no_std]`, but the runtime only
needs constants from it. This adds our own definitions of those
constants, and checks them for correctness at compile-time.
* Actually implement storage of VRF outputs
* Trivial formatting change
* Provide a `hash_randomness` function in BABE
for processing VRF outputs.
* Implement a basic randomness generating function
It just XORs the VRF outputs together.
* Actually implement on-chain randomness
Blake2b is used for hashing.
* Update dependencies
* Run `cargo update` where needed
* Re-add a newline at EOF
* Remove broken and unsafe code
XOR is not a hash function, and must not be used as such. The
implementation was also needlessly unsafe.
* Run `cargo update` where needed
* Remove spurious dependency
* Document security guarantees of BABE randomness
* Add a `RandomnessBeacon` trait
* Document `RandomnessBeacon::random`
* Fix silly compile error (unexpected type arguments)
* Fix BABE randomness
* Implement `FindAuthor` for `babe::Module`
* Apply suggestions from code review
Co-Authored-By: Bastian Köcher <bkchr@users.noreply.github.com>
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
* Respond to suggestions from code review and fix bugs
* Store an authority index, not the authority itself.
* Avoid unnecessary decoding.
* Implement relative slots and BABE randomness fully and correctly.
* Remove spurious dependency
* Fix error reported by rust-analyzer
* Update Cargo.lock files
* `wrapping_add` → `checked_add`
The epoch index will not overflow. Panic if it does.
* Move randomness documentation to trait
* Fix compile error in test suite
* Explain 2^64 limit
Co-Authored-By: Robert Habermeier <rphmeier@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The pre-runtime digests have been available to the runtime since #2466, but they have not been used yet. This PR begins the use of them in the runtime, starting with that of BABE.