LCOV - code coverage report
Current view: top level - choreo/votor - fd_epoch_info.h (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 17 0.0 %
Date: 2026-11-11 12:40:43 Functions: 0 220 0.0 %

          Line data    Source code
       1             : #ifndef HEADER_fd_src_choreo_votor_fd_epoch_info_h
       2             : #define HEADER_fd_src_choreo_votor_fd_epoch_info_h
       3             : 
       4             : #include "fd_votor_base.h"
       5             : #include "../../ballet/bls/fd_bls.h"
       6             : 
       7             : FD_STATIC_ASSERT( FD_BLS_SET_MAX==FD_VOTOR_VAT_MAX, fd_bls_set_max );
       8             : 
       9             : struct fd_validator_info {
      10             :   ulong id;
      11             :   ulong stake;
      12             :   uchar id_key  [ 32 ];                       /* identity public key */
      13             :   uchar vote_key[ 32 ];                       /* vote account address */
      14             :   uchar bls_key [ FD_BLS_PUB_COMPRESSED_SZ ]; /* compressed BLS public key */
      15             : };
      16             : typedef struct fd_validator_info fd_validator_info_t;
      17             : 
      18             : struct fd_epoch_info {
      19             :   ulong               validator_cnt;
      20             :   ulong               total_stake;
      21             :   fd_validator_info_t validators[ FD_VOTOR_VAT_MAX ]; /* indexed by rank; validator_cnt live */
      22             :   fd_bls_pub_t        pubkeys   [ FD_VOTOR_VAT_MAX ]; /* validated keys, indexed by rank */
      23             : };
      24             : typedef struct fd_epoch_info fd_epoch_info_t;
      25             : 
      26             : FD_PROTOTYPES_BEGIN
      27             : 
      28             : /* EpochInfo::validators */
      29             : 
      30             : FD_FN_CONST static inline fd_validator_info_t const *
      31           0 : fd_epoch_info_validators( fd_epoch_info_t const * self ) {
      32           0 :   return self->validators;
      33           0 : }
      34             : 
      35             : /* EpochInfo::validator */
      36             : 
      37             : FD_FN_PURE static inline fd_validator_info_t const *
      38             : fd_epoch_info_validator( fd_epoch_info_t const * self,
      39           0 :                          ulong                   rank ) {
      40           0 :   FD_TEST( rank<self->validator_cnt );
      41           0 :   return fd_epoch_info_validators( self ) + rank;
      42           0 : }
      43             : 
      44             : /* Deserialized fd_epoch_info_validator( self, rank )->bls_key */
      45             : 
      46             : FD_FN_PURE static inline fd_bls_pub_t const *
      47             : fd_epoch_info_pubkey( fd_epoch_info_t const * self,
      48           0 :                       ulong                   rank ) {
      49           0 :   FD_TEST( rank<self->validator_cnt );
      50           0 :   return self->pubkeys + rank;
      51           0 : }
      52             : 
      53             : /* EpochInfo::leader */
      54             : 
      55             : FD_FN_PURE static inline fd_validator_info_t const *
      56             : fd_epoch_info_leader( fd_epoch_info_t const * self,
      57           0 :                       ulong                   slot ) {
      58           0 :   ulong window    = slot / FD_VOTOR_SLOTS_PER_WINDOW;
      59           0 :   ulong leader_id = window % self->validator_cnt;
      60           0 :   return fd_epoch_info_validator( self, leader_id );
      61           0 : }
      62             : 
      63             : /* EpochInfo::total_stake */
      64             : 
      65             : FD_FN_PURE static inline ulong
      66           0 : fd_epoch_info_total_stake( fd_epoch_info_t const * self ) { return self->total_stake; }
      67             : 
      68             : /* Definition 13. EpochInfo::is_weakest_quorum, is_weak_quorum, is_quorum, is_strong_quorum */
      69             : 
      70             : FD_FN_PURE int fd_epoch_info_is_weakest_quorum( fd_epoch_info_t const * self, ulong stake );
      71             : FD_FN_PURE int fd_epoch_info_is_weak_quorum   ( fd_epoch_info_t const * self, ulong stake );
      72             : FD_FN_PURE int fd_epoch_info_is_quorum        ( fd_epoch_info_t const * self, ulong stake );
      73             : FD_FN_PURE int fd_epoch_info_is_strong_quorum ( fd_epoch_info_t const * self, ulong stake );
      74             : 
      75             : FD_PROTOTYPES_END
      76             : 
      77             : #endif

Generated by: LCOV version 1.14