pub struct QuadraticVotingParams<G: Group> { /* private fields */ }
Expand description
Quadratic voting parameters prepared for a certain Group
.
The parameters are:
- Receiver key using which votes in
QuadraticVotingBallot
s are encrypted - Number of options in the ballot
- Number of credits per ballot
- Maximum number of votes per option
See QuadraticVotingBallot
for a detailed description of parameters.
§Examples
let (receiver, _) = Keypair::<Ristretto>::generate(&mut thread_rng())
.into_tuple();
let mut params = QuadraticVotingParams::new(receiver, 5, 20);
// 5 options, 20 credits.
assert_eq!(params.options_count(), 5);
assert_eq!(params.credits(), 20);
// By default, max votes per option are determined based on credits
assert_eq!(params.max_votes(), 4); // 4 < sqrt(20) < 5
// It is possible to reduce max votes per ballot.
params.set_max_votes(3);
assert_eq!(params.max_votes(), 3);
Implementations§
Source§impl<G: Group> QuadraticVotingParams<G>
impl<G: Group> QuadraticVotingParams<G>
Sourcepub fn new(receiver: PublicKey<G>, options: usize, credits: u64) -> Self
pub fn new(receiver: PublicKey<G>, options: usize, credits: u64) -> Self
Creates new parameters for the specified number of credits
allocated per voter.
The maximum number of votes per option is automatically set as floor(sqrt(credits))
;
it can be changed via Self::set_max_votes()
.
§Panics
Panics if the number of options or credits is zero.
Sourcepub fn receiver(&self) -> &PublicKey<G>
pub fn receiver(&self) -> &PublicKey<G>
Returns the public key for which the QuadraticVotingBallot
s are encrypted.
Sourcepub fn options_count(&self) -> usize
pub fn options_count(&self) -> usize
Returns the number of options.
Sourcepub fn set_max_votes(&mut self, max_votes: u64)
pub fn set_max_votes(&mut self, max_votes: u64)
Sets the maximum number of votes per option.
§Panics
Panics if max_votes * max_votes
exceeds credits
; in this case, this number of votes
cannot be cast for a single option.
Trait Implementations§
Source§impl<G: Clone + Group> Clone for QuadraticVotingParams<G>
impl<G: Clone + Group> Clone for QuadraticVotingParams<G>
Source§fn clone(&self) -> QuadraticVotingParams<G>
fn clone(&self) -> QuadraticVotingParams<G>
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl<G> Freeze for QuadraticVotingParams<G>
impl<G> RefUnwindSafe for QuadraticVotingParams<G>
impl<G> Send for QuadraticVotingParams<G>
impl<G> Sync for QuadraticVotingParams<G>
impl<G> Unpin for QuadraticVotingParams<G>
impl<G> UnwindSafe for QuadraticVotingParams<G>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)