pub struct RandomnessBeaconObject {Show 15 fields
pub id: SharedObjectId,
pub validators: HashMap<String, BeaconValidator>,
pub rounds: HashMap<u64, BeaconRound>,
pub current_round: u64,
pub round_duration_secs: u64,
pub last_round_time: DateTime<Utc>,
pub pending_vrf_proofs: HashMap<u64, Vec<VrfProof>>,
pub pending_partial_sigs: HashMap<u64, HashMap<String, String>>,
pub threshold: u64,
pub my_validator_address: String,
pub signer: ECDSASigner,
pub verifier: ECDSAVerifier,
pub messages: Vec<BeaconMessageType>,
pub bias_resistance_enabled: bool,
pub challenges: HashMap<u64, Vec<BeaconMessageType>>,
}
Expand description
Randomness beacon implementation
Fields§
§id: SharedObjectId
§validators: HashMap<String, BeaconValidator>
§rounds: HashMap<u64, BeaconRound>
§current_round: u64
§round_duration_secs: u64
§last_round_time: DateTime<Utc>
§pending_vrf_proofs: HashMap<u64, Vec<VrfProof>>
§pending_partial_sigs: HashMap<u64, HashMap<String, String>>
§threshold: u64
§my_validator_address: String
§signer: ECDSASigner
§verifier: ECDSAVerifier
§messages: Vec<BeaconMessageType>
§bias_resistance_enabled: bool
§challenges: HashMap<u64, Vec<BeaconMessageType>>
Implementations§
Source§impl RandomnessBeaconObject
impl RandomnessBeaconObject
pub fn new(round_duration_secs: u64, threshold: u64) -> Result<Self>
Sourcepub fn register_validator(&mut self, validator: BeaconValidator) -> Result<()>
pub fn register_validator(&mut self, validator: BeaconValidator) -> Result<()>
Register a validator for beacon participation
Sourcepub fn should_advance_round(&self) -> bool
pub fn should_advance_round(&self) -> bool
Check if enough time has passed to advance to next round
Sourcepub fn generate_vrf_proof(&self, input: &str) -> Result<VrfProof>
pub fn generate_vrf_proof(&self, input: &str) -> Result<VrfProof>
Generate VRF proof for current round
Sourcepub fn process_vrf_proof(&mut self, msg: BeaconMessageType) -> Result<bool>
pub fn process_vrf_proof(&mut self, msg: BeaconMessageType) -> Result<bool>
Process VRF proof submission
Sourcepub fn process_partial_signature(
&mut self,
msg: BeaconMessageType,
) -> Result<bool>
pub fn process_partial_signature( &mut self, msg: BeaconMessageType, ) -> Result<bool>
Process partial signature
Sourcepub fn can_finalize_round(&self) -> bool
pub fn can_finalize_round(&self) -> bool
Check if we can finalize the current round
Sourcepub fn finalize_round(&mut self) -> Result<String>
pub fn finalize_round(&mut self) -> Result<String>
Finalize the current round and generate randomness
Sourcepub fn process_bias_challenge(&mut self, msg: BeaconMessageType) -> Result<bool>
pub fn process_bias_challenge(&mut self, msg: BeaconMessageType) -> Result<bool>
Process bias challenge
Sourcepub fn get_beacon_stats(&self) -> Value
pub fn get_beacon_stats(&self) -> Value
Get beacon statistics
Sourcepub fn get_latest_randomness(&self) -> Option<String>
pub fn get_latest_randomness(&self) -> Option<String>
Get latest randomness
Trait Implementations§
Source§impl ApplicationObject for RandomnessBeaconObject
impl ApplicationObject for RandomnessBeaconObject
Source§fn id(&self) -> &SharedObjectId
fn id(&self) -> &SharedObjectId
Get the object’s unique identifier
Source§fn is_valid<'life0, 'life1, 'async_trait>(
&'life0 self,
message: &'life1 SharedMessage,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn is_valid<'life0, 'life1, 'async_trait>(
&'life0 self,
message: &'life1 SharedMessage,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Validate if a message is valid for this object
Source§fn add_message<'life0, 'async_trait>(
&'life0 mut self,
message: SharedMessage,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn add_message<'life0, 'async_trait>(
&'life0 mut self,
message: SharedMessage,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Add a validated message to the object
Source§fn is_merkleized(&self) -> bool
fn is_merkleized(&self) -> bool
Check if this object supports merkleized synchronization
Source§fn get_latest_digest<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_latest_digest<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the latest state digest
Source§fn has_digest<'life0, 'life1, 'async_trait>(
&'life0 self,
digest: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn has_digest<'life0, 'life1, 'async_trait>(
&'life0 self,
digest: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Check if object has a specific digest
Source§fn is_valid_digest<'life0, 'life1, 'async_trait>(
&'life0 self,
_digest: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn is_valid_digest<'life0, 'life1, 'async_trait>(
&'life0 self,
_digest: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Validate if a digest is valid
Source§fn add_digest<'life0, 'async_trait>(
&'life0 mut self,
_digest: String,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn add_digest<'life0, 'async_trait>(
&'life0 mut self,
_digest: String,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Add a digest to the object
Source§fn gossip_messages<'life0, 'life1, 'async_trait>(
&'life0 self,
_digest: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<Vec<SharedMessage>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn gossip_messages<'life0, 'life1, 'async_trait>(
&'life0 self,
_digest: Option<&'life1 str>,
) -> Pin<Box<dyn Future<Output = Result<Vec<SharedMessage>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get messages for gossip protocol
Source§fn get_messages_since_digest<'life0, 'life1, 'async_trait>(
&'life0 self,
_digest: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<SharedMessage>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_messages_since_digest<'life0, 'life1, 'async_trait>(
&'life0 self,
_digest: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<SharedMessage>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get messages since a specific digest
Source§fn get_state<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Value>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_state<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Value>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the current state as JSON
Source§fn reset<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn reset<'life0, 'async_trait>(
&'life0 mut self,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Reset the object to initial state
Source§fn clone_box(&self) -> Box<dyn ApplicationObject>
fn clone_box(&self) -> Box<dyn ApplicationObject>
Clone the object
Source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
Get mutable reference as Any for downcasting
Auto Trait Implementations§
impl Freeze for RandomnessBeaconObject
impl RefUnwindSafe for RandomnessBeaconObject
impl Send for RandomnessBeaconObject
impl Sync for RandomnessBeaconObject
impl Unpin for RandomnessBeaconObject
impl UnwindSafe for RandomnessBeaconObject
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