Line data Source code
1 : #include "ag_epoch_info.h" 2 : 3 : FD_FN_CONST static int 4 : fraction_is_met( ulong stake, 5 : ulong total, 6 : ulong numer, 7 0 : ulong denom ) { 8 0 : return (uint128)stake*(uint128)denom >= (uint128)total*(uint128)numer; 9 0 : } 10 : 11 : FD_FN_PURE int 12 0 : ag_epoch_info_is_weakest_quorum( ag_epoch_info_t const * self, ulong stake ) { 13 0 : return fraction_is_met( stake, self->total_stake, AG_WEAKEST_QUORUM_THRESHOLD_NUMER, AG_QUORUM_THRESHOLD_DENOM ); 14 0 : } 15 : 16 : FD_FN_PURE int 17 0 : ag_epoch_info_is_weak_quorum( ag_epoch_info_t const * self, ulong stake ) { 18 0 : return fraction_is_met( stake, self->total_stake, AG_WEAK_QUORUM_THRESHOLD_NUMER, AG_QUORUM_THRESHOLD_DENOM ); 19 0 : } 20 : 21 : FD_FN_PURE int 22 0 : ag_epoch_info_is_quorum( ag_epoch_info_t const * self, ulong stake ) { 23 0 : return fraction_is_met( stake, self->total_stake, AG_QUORUM_THRESHOLD_NUMER, AG_QUORUM_THRESHOLD_DENOM ); 24 0 : } 25 : 26 : FD_FN_PURE int 27 0 : ag_epoch_info_is_strong_quorum( ag_epoch_info_t const * self, ulong stake ) { 28 0 : return fraction_is_met( stake, self->total_stake, AG_STRONG_QUORUM_THRESHOLD_NUMER, AG_QUORUM_THRESHOLD_DENOM ); 29 0 : }