Comments (2)
This would be great! I've been thinking about something like this as well. Maybe the trait could look like this:
pub trait RandomCoin {
type BaseField: StarkField;
type Hasher: Hasher;
// REQUIRED METHODS
// --------------------------------------------------------------------------------------------
fn new(seed: &[Self::BaseField]) -> Self;
fn reseed(&mut self, data: <Self::Hasher as Hasher>::Digest);
fn reseed_with_int(&mut self, value: u64);
fn check_leading_zeros(&self, value: u64) -> u32;
fn leading_zeros(&self) -> u32;
fn draw<E: FieldElement<BaseField = Self::BaseField>>(&mut self) -> Result<E, RandomCoinError>;
// PROVIDED METHODS
// --------------------------------------------------------------------------------------------
fn draw_pair<E>(&mut self) -> Result<(E, E), RandomCoinError>
where
E: FieldElement<BaseField = Self::BaseField>,
{
Ok((self.draw()?, self.draw()?))
}
fn draw_triple<E>(&mut self) -> Result<(E, E, E), RandomCoinError>
where
E: FieldElement<BaseField = Self::BaseField>,
{
Ok((self.draw()?, self.draw()?, self.draw()?))
}
fn draw_integers(
&mut self,
num_values: usize,
domain_size: usize,
) -> Result<Vec<usize>, RandomCoinError> {
todo!()
}
}
from winterfell.
Closed by #176.
from winterfell.
Related Issues (20)
- RandomCoin trait simplification HOT 1
- Will it be made into zkvm in the future? HOT 1
- Remove duplicate query check in FRI HOT 3
- Implementing Keccak256 HOT 4
- mulfib8 example circuit is underconstrained
- `f64` field: `BaseElement` should not be convertible from `u64` or `u128` without error HOT 1
- Add serialization/deserialization for `usize` type HOT 1
- Accomodating more expressive transition constraints HOT 3
- `TraceTable::with_meta()` should be marked `unsafe`
- Suggestion: Remove outdated griffin hash implementation HOT 1
- Generalize auxiliary trace building logic HOT 2
- Simplify 2-d matrix types
- Generalize `TransitionConstraints` and `BoundaryConstraints` HOT 1
- Consider using the standard benchmark harness instead of criterion HOT 1
- DEEP polynomial with Lagrange kernel HOT 1
- `Deserializable` should have an associated type error
- `Proof::security_leve()` should take into account auxiliary proof
- `group_vector_elements` panics during account code compilation HOT 2
- Verify GKR proof in `Trace::validate()`
- FFT-based division to improve DEEP composition polynomial computation
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from winterfell.