Dash Core Source Documentation (0.16.0.1)
Find detailed information regarding the Dash Core source code.
#include <deterministicmns.h>
Public Types | |
typedef immer::map< uint256, CDeterministicMNCPtr > | MnMap |
typedef immer::map< uint64_t, uint256 > | MnInternalIdMap |
typedef immer::map< uint256, std::pair< uint256, uint32_t > > | MnUniquePropertyMap |
Public Member Functions | |
CDeterministicMNList () | |
CDeterministicMNList (const uint256 &_blockHash, int _height, uint32_t _totalRegisteredCount) | |
template<typename Stream , typename Operation > | |
void | SerializationOpBase (Stream &s, Operation ser_action) |
template<typename Stream > | |
void | Serialize (Stream &s) const |
template<typename Stream > | |
void | Unserialize (Stream &s) |
size_t | GetAllMNsCount () const |
size_t | GetValidMNsCount () const |
template<typename Callback > | |
void | ForEachMN (bool onlyValid, Callback &&cb) const |
const uint256 & | GetBlockHash () const |
void | SetBlockHash (const uint256 &_blockHash) |
int | GetHeight () const |
void | SetHeight (int _height) |
uint32_t | GetTotalRegisteredCount () const |
bool | IsMNValid (const uint256 &proTxHash) const |
bool | IsMNPoSeBanned (const uint256 &proTxHash) const |
bool | IsMNValid (const CDeterministicMNCPtr &dmn) const |
bool | IsMNPoSeBanned (const CDeterministicMNCPtr &dmn) const |
bool | HasMN (const uint256 &proTxHash) const |
bool | HasMNByCollateral (const COutPoint &collateralOutpoint) const |
bool | HasValidMNByCollateral (const COutPoint &collateralOutpoint) const |
CDeterministicMNCPtr | GetMN (const uint256 &proTxHash) const |
CDeterministicMNCPtr | GetValidMN (const uint256 &proTxHash) const |
CDeterministicMNCPtr | GetMNByOperatorKey (const CBLSPublicKey &pubKey) |
CDeterministicMNCPtr | GetMNByCollateral (const COutPoint &collateralOutpoint) const |
CDeterministicMNCPtr | GetValidMNByCollateral (const COutPoint &collateralOutpoint) const |
CDeterministicMNCPtr | GetMNByService (const CService &service) const |
CDeterministicMNCPtr | GetMNByInternalId (uint64_t internalId) const |
CDeterministicMNCPtr | GetMNPayee () const |
std::vector< CDeterministicMNCPtr > | GetProjectedMNPayees (int nCount) const |
Calculates the projected MN payees for the next count blocks. More... | |
std::vector< CDeterministicMNCPtr > | CalculateQuorum (size_t maxSize, const uint256 &modifier) const |
Calculate a quorum based on the modifier. More... | |
std::vector< std::pair< arith_uint256, CDeterministicMNCPtr > > | CalculateScores (const uint256 &modifier) const |
int | CalcMaxPoSePenalty () const |
Calculates the maximum penalty which is allowed at the height of this MN list. More... | |
int | CalcPenalty (int percent) const |
Returns a the given percentage from the max penalty for this MN list. More... | |
void | PoSePunish (const uint256 &proTxHash, int penalty, bool debugLogs) |
Punishes a MN for misbehavior. More... | |
void | PoSeDecrease (const uint256 &proTxHash) |
Decrease penalty score of MN by 1. More... | |
CDeterministicMNListDiff | BuildDiff (const CDeterministicMNList &to) const |
CSimplifiedMNListDiff | BuildSimplifiedDiff (const CDeterministicMNList &to) const |
CDeterministicMNList | ApplyDiff (const CBlockIndex *pindex, const CDeterministicMNListDiff &diff) const |
void | AddMN (const CDeterministicMNCPtr &dmn, bool fBumpTotalCount=true) |
void | UpdateMN (const CDeterministicMNCPtr &oldDmn, const CDeterministicMNStateCPtr &pdmnState) |
void | UpdateMN (const uint256 &proTxHash, const CDeterministicMNStateCPtr &pdmnState) |
void | UpdateMN (const CDeterministicMNCPtr &oldDmn, const CDeterministicMNStateDiff &stateDiff) |
void | RemoveMN (const uint256 &proTxHash) |
template<typename T > | |
bool | HasUniqueProperty (const T &v) const |
template<typename T > | |
CDeterministicMNCPtr | GetUniquePropertyMN (const T &v) const |
Private Member Functions | |
template<typename T > | |
void | AddUniqueProperty (const CDeterministicMNCPtr &dmn, const T &v) |
template<typename T > | |
void | DeleteUniqueProperty (const CDeterministicMNCPtr &dmn, const T &oldValue) |
template<typename T > | |
void | UpdateUniqueProperty (const CDeterministicMNCPtr &dmn, const T &oldValue, const T &newValue) |
Private Attributes | |
uint256 | blockHash |
int | nHeight {-1} |
uint32_t | nTotalRegisteredCount {0} |
MnMap | mnMap |
MnInternalIdMap | mnInternalIdMap |
MnUniquePropertyMap | mnUniquePropertyMap |
Detailed Description
Definition at line 288 of file deterministicmns.h.
Member Typedef Documentation
◆ MnInternalIdMap
typedef immer::map<uint64_t, uint256> CDeterministicMNList::MnInternalIdMap |
Definition at line 292 of file deterministicmns.h.
◆ MnMap
Definition at line 291 of file deterministicmns.h.
◆ MnUniquePropertyMap
typedef immer::map<uint256, std::pair<uint256, uint32_t> > CDeterministicMNList::MnUniquePropertyMap |
Definition at line 293 of file deterministicmns.h.
Constructor & Destructor Documentation
◆ CDeterministicMNList() [1/2]
|
inline |
Definition at line 307 of file deterministicmns.h.
◆ CDeterministicMNList() [2/2]
|
inlineexplicit |
Definition at line 308 of file deterministicmns.h.
Member Function Documentation
◆ AddMN()
void CDeterministicMNList::AddMN | ( | const CDeterministicMNCPtr & | dmn, |
bool | fBumpTotalCount = true |
||
) |
Definition at line 441 of file deterministicmns.cpp.
References AddUniqueProperty(), EncodeDestination(), immer::map< K, T, Hash, Equal, MemoryPolicy, B >::find(), HasUniqueProperty(), mnInternalIdMap, mnMap, nTotalRegisteredCount, immer::map< K, T, Hash, Equal, MemoryPolicy, B >::set(), and strprintf.
Referenced by ApplyDiff(), CDeterministicMNManager::BuildNewListFromBlock(), and Unserialize().
◆ AddUniqueProperty()
|
inlineprivate |
Definition at line 500 of file deterministicmns.h.
References immer::map< K, T, Hash, Equal, MemoryPolicy, B >::find(), mnUniquePropertyMap, SerializeHash(), and immer::map< K, T, Hash, Equal, MemoryPolicy, B >::set().
Referenced by AddMN(), and UpdateUniqueProperty().
◆ ApplyDiff()
CDeterministicMNList CDeterministicMNList::ApplyDiff | ( | const CBlockIndex * | pindex, |
const CDeterministicMNListDiff & | diff | ||
) | const |
Definition at line 417 of file deterministicmns.cpp.
References CDeterministicMNListDiff::addedMNs, AddMN(), blockHash, CBlockIndex::GetBlockHash(), GetMNByInternalId(), CBlockIndex::nHeight, nHeight, CDeterministicMNListDiff::removedMns, RemoveMN(), strprintf, CDeterministicMNListDiff::updatedMNs, and UpdateMN().
Referenced by CDeterministicMNManager::GetListForBlock(), and CDeterministicMNManager::UpgradeDiff().
◆ BuildDiff()
CDeterministicMNListDiff CDeterministicMNList::BuildDiff | ( | const CDeterministicMNList & | to | ) | const |
Definition at line 358 of file deterministicmns.cpp.
References CDeterministicMNListDiff::addedMNs, CDeterministicMNStateDiff::fields, ForEachMN(), GetMN(), CDeterministicMNListDiff::removedMns, and CDeterministicMNListDiff::updatedMNs.
Referenced by CDeterministicMNManager::ProcessBlock(), CGovernanceManager::RemoveInvalidVotes(), and CDeterministicMNManager::UndoBlock().
◆ BuildSimplifiedDiff()
CSimplifiedMNListDiff CDeterministicMNList::BuildSimplifiedDiff | ( | const CDeterministicMNList & | to | ) | const |
Definition at line 389 of file deterministicmns.cpp.
References CSimplifiedMNListDiff::baseBlockHash, CSimplifiedMNListDiff::blockHash, blockHash, CSimplifiedMNListDiff::deletedMNs, ForEachMN(), GetMN(), and CSimplifiedMNListDiff::mnList.
◆ CalcMaxPoSePenalty()
int CDeterministicMNList::CalcMaxPoSePenalty | ( | ) | const |
Calculates the maximum penalty which is allowed at the height of this MN list.
It is dynamic and might change for every block.
- Returns
Definition at line 301 of file deterministicmns.cpp.
References GetAllMNsCount().
Referenced by CalcPenalty(), and PoSePunish().
◆ CalcPenalty()
int CDeterministicMNList::CalcPenalty | ( | int | percent | ) | const |
Returns a the given percentage from the max penalty for this MN list.
Always use this method to calculate the value later passed to PoSePunish. The percentage should be high enough to take per-block penalty decreasing for MNs into account. This means, if you want to accept 2 failures per payment cycle, you should choose a percentage that is higher then 50%, e.g. 66%.
- Parameters
-
percent
- Returns
Definition at line 309 of file deterministicmns.cpp.
References CalcMaxPoSePenalty().
Referenced by CDeterministicMNManager::HandleQuorumCommitment().
◆ CalculateQuorum()
std::vector< CDeterministicMNCPtr > CDeterministicMNList::CalculateQuorum | ( | size_t | maxSize, |
const uint256 & | modifier | ||
) | const |
Calculate a quorum based on the modifier.
The resulting list is deterministically sorted by score
- Parameters
-
maxSize modifier
- Returns
Definition at line 253 of file deterministicmns.cpp.
References CalculateScores().
◆ CalculateScores()
std::vector< std::pair< arith_uint256, CDeterministicMNCPtr > > CDeterministicMNList::CalculateScores | ( | const uint256 & | modifier | ) | const |
Definition at line 275 of file deterministicmns.cpp.
References base_blob< BITS >::begin(), ForEachMN(), GetAllMNsCount(), base_blob< BITS >::size(), and UintToArith256().
Referenced by CalculateQuorum().
◆ DeleteUniqueProperty()
|
inlineprivate |
Definition at line 515 of file deterministicmns.h.
References immer::map< K, T, Hash, Equal, MemoryPolicy, B >::erase(), immer::map< K, T, Hash, Equal, MemoryPolicy, B >::find(), mnUniquePropertyMap, SerializeHash(), and immer::map< K, T, Hash, Equal, MemoryPolicy, B >::set().
Referenced by RemoveMN(), and UpdateUniqueProperty().
◆ ForEachMN()
|
inline |
Definition at line 366 of file deterministicmns.h.
References IsMNValid(), and mnMap.
Referenced by BuildDiff(), CDeterministicMNManager::BuildNewListFromBlock(), BuildSimplifiedDiff(), CalculateScores(), CSimplifiedMNList::CSimplifiedMNList(), CDeterministicMNManager::DecreasePoSePenalties(), GetMNPayee(), GetProjectedMNPayees(), and protx_list().
◆ GetAllMNsCount()
|
inline |
Definition at line 349 of file deterministicmns.h.
References mnMap, and immer::map< K, T, Hash, Equal, MemoryPolicy, B >::size().
Referenced by CDeterministicMNManager::BuildNewListFromBlock(), CalcMaxPoSePenalty(), CalculateScores(), CSimplifiedMNList::CSimplifiedMNList(), and CDeterministicMNManager::ProcessBlock().
◆ GetBlockHash()
|
inline |
Definition at line 376 of file deterministicmns.h.
References blockHash.
Referenced by CDeterministicMNManager::GetListForBlock(), CDeterministicMNManager::ProcessBlock(), and ClientModel::setMasternodeList().
◆ GetHeight()
|
inline |
Definition at line 384 of file deterministicmns.h.
References nHeight.
Referenced by CDeterministicMNManager::GetListForBlock(), and CDeterministicMNManager::ProcessBlock().
◆ GetMN()
CDeterministicMNCPtr CDeterministicMNList::GetMN | ( | const uint256 & | proTxHash | ) | const |
Definition at line 134 of file deterministicmns.cpp.
References immer::map< K, T, Hash, Equal, MemoryPolicy, B >::find(), and mnMap.
Referenced by BuildDiff(), CDeterministicMNManager::BuildNewListFromBlock(), BuildSimplifiedDiff(), GetMNByInternalId(), MasternodeList::GetSelectedDIP3MN(), GetUniquePropertyMN(), GetValidMN(), HasMN(), CMNAuth::NotifyMasternodeListChanged(), PoSeDecrease(), PoSePunish(), RemoveMN(), and CDeterministicMNManager::UpgradeDiff().
◆ GetMNByCollateral()
CDeterministicMNCPtr CDeterministicMNList::GetMNByCollateral | ( | const COutPoint & | collateralOutpoint | ) | const |
Definition at line 162 of file deterministicmns.cpp.
References GetUniquePropertyMN().
Referenced by CDeterministicMNManager::BuildNewListFromBlock(), GetValidMNByCollateral(), and HasMNByCollateral().
◆ GetMNByInternalId()
CDeterministicMNCPtr CDeterministicMNList::GetMNByInternalId | ( | uint64_t | internalId | ) | const |
Definition at line 181 of file deterministicmns.cpp.
References immer::map< K, T, Hash, Equal, MemoryPolicy, B >::find(), GetMN(), and mnInternalIdMap.
Referenced by ApplyDiff(), and CGovernanceManager::RemoveInvalidVotes().
◆ GetMNByOperatorKey()
CDeterministicMNCPtr CDeterministicMNList::GetMNByOperatorKey | ( | const CBLSPublicKey & | pubKey | ) |
Definition at line 152 of file deterministicmns.cpp.
References mnMap.
Referenced by CActiveMasternodeManager::Init().
◆ GetMNByService()
CDeterministicMNCPtr CDeterministicMNList::GetMNByService | ( | const CService & | service | ) | const |
Definition at line 176 of file deterministicmns.cpp.
References GetUniquePropertyMN().
◆ GetMNPayee()
CDeterministicMNCPtr CDeterministicMNList::GetMNPayee | ( | ) | const |
Definition at line 216 of file deterministicmns.cpp.
References CompareByLastPaid(), ForEachMN(), mnMap, and immer::map< K, T, Hash, Equal, MemoryPolicy, B >::size().
Referenced by CDeterministicMNManager::BuildNewListFromBlock().
◆ GetProjectedMNPayees()
std::vector< CDeterministicMNCPtr > CDeterministicMNList::GetProjectedMNPayees | ( | int | nCount | ) | const |
Calculates the projected MN payees for the next count blocks.
The result is not guaranteed to be correct as PoSe banning might occur later
- Parameters
-
count
- Returns
Definition at line 232 of file deterministicmns.cpp.
References CompareByLastPaid(), ForEachMN(), and GetValidMNsCount().
◆ GetTotalRegisteredCount()
|
inline |
Definition at line 392 of file deterministicmns.h.
References nTotalRegisteredCount.
Referenced by CDeterministicMNManager::BuildNewListFromBlock(), and CDeterministicMNManager::UpgradeDiff().
◆ GetUniquePropertyMN()
|
inline |
Definition at line 489 of file deterministicmns.h.
References immer::map< K, T, Hash, Equal, MemoryPolicy, B >::find(), GetMN(), mnUniquePropertyMap, and SerializeHash().
Referenced by CDeterministicMNManager::BuildNewListFromBlock(), GetMNByCollateral(), GetMNByService(), and UpdateMN().
◆ GetValidMN()
CDeterministicMNCPtr CDeterministicMNList::GetValidMN | ( | const uint256 & | proTxHash | ) | const |
Definition at line 143 of file deterministicmns.cpp.
References GetMN(), and IsMNValid().
◆ GetValidMNByCollateral()
CDeterministicMNCPtr CDeterministicMNList::GetValidMNByCollateral | ( | const COutPoint & | collateralOutpoint | ) | const |
Definition at line 167 of file deterministicmns.cpp.
References GetMNByCollateral(), and IsMNValid().
Referenced by HasValidMNByCollateral().
◆ GetValidMNsCount()
|
inline |
Definition at line 354 of file deterministicmns.h.
References count, IsMNValid(), and mnMap.
Referenced by CDeterministicMNManager::DecreasePoSePenalties(), and GetProjectedMNPayees().
◆ HasMN()
|
inline |
Definition at line 402 of file deterministicmns.h.
References GetMN().
Referenced by CDeterministicMNManager::BuildNewListFromBlock(), and CDeterministicMNManager::HandleQuorumCommitment().
◆ HasMNByCollateral()
|
inline |
Definition at line 406 of file deterministicmns.h.
References GetMNByCollateral().
◆ HasUniqueProperty()
|
inline |
Definition at line 484 of file deterministicmns.h.
References immer::map< K, T, Hash, Equal, MemoryPolicy, B >::count(), mnUniquePropertyMap, and SerializeHash().
Referenced by AddMN(), CDeterministicMNManager::BuildNewListFromBlock(), and UpdateMN().
◆ HasValidMNByCollateral()
|
inline |
Definition at line 410 of file deterministicmns.h.
References GetValidMNByCollateral().
◆ IsMNPoSeBanned() [1/2]
bool CDeterministicMNList::IsMNPoSeBanned | ( | const uint256 & | proTxHash | ) | const |
Definition at line 113 of file deterministicmns.cpp.
References immer::map< K, T, Hash, Equal, MemoryPolicy, B >::find(), and mnMap.
Referenced by CActiveMasternodeManager::Init(), and IsMNValid().
◆ IsMNPoSeBanned() [2/2]
bool CDeterministicMNList::IsMNPoSeBanned | ( | const CDeterministicMNCPtr & | dmn | ) | const |
Definition at line 127 of file deterministicmns.cpp.
References CDeterministicMNState::nPoSeBanHeight.
◆ IsMNValid() [1/2]
bool CDeterministicMNList::IsMNValid | ( | const uint256 & | proTxHash | ) | const |
Definition at line 104 of file deterministicmns.cpp.
References immer::map< K, T, Hash, Equal, MemoryPolicy, B >::find(), and mnMap.
Referenced by ForEachMN(), GetValidMN(), GetValidMNByCollateral(), GetValidMNsCount(), and CActiveMasternodeManager::Init().
◆ IsMNValid() [2/2]
bool CDeterministicMNList::IsMNValid | ( | const CDeterministicMNCPtr & | dmn | ) | const |
Definition at line 122 of file deterministicmns.cpp.
References IsMNPoSeBanned().
◆ PoSeDecrease()
void CDeterministicMNList::PoSeDecrease | ( | const uint256 & | proTxHash | ) |
Decrease penalty score of MN by 1.
Only allowed on non-banned MNs.
- Parameters
-
proTxHash
Definition at line 345 of file deterministicmns.cpp.
References GetMN(), strprintf, base_blob< BITS >::ToString(), and UpdateMN().
Referenced by CDeterministicMNManager::DecreasePoSePenalties().
◆ PoSePunish()
void CDeterministicMNList::PoSePunish | ( | const uint256 & | proTxHash, |
int | penalty, | ||
bool | debugLogs | ||
) |
Punishes a MN for misbehavior.
If the resulting penalty score of the MN reaches the max penalty, it is banned. Penalty scores are only increased when the MN is not already banned, which means that after banning the penalty might appear lower then the current max penalty, while the MN is still banned.
- Parameters
-
proTxHash penalty
Definition at line 315 of file deterministicmns.cpp.
References CalcMaxPoSePenalty(), GetMN(), LogPrintf, nHeight, strprintf, base_blob< BITS >::ToString(), and UpdateMN().
Referenced by CDeterministicMNManager::HandleQuorumCommitment().
◆ RemoveMN()
void CDeterministicMNList::RemoveMN | ( | const uint256 & | proTxHash | ) |
Definition at line 510 of file deterministicmns.cpp.
References DeleteUniqueProperty(), immer::map< K, T, Hash, Equal, MemoryPolicy, B >::erase(), GetMN(), mnInternalIdMap, mnMap, strprintf, and base_blob< BITS >::ToString().
Referenced by ApplyDiff(), and CDeterministicMNManager::BuildNewListFromBlock().
◆ SerializationOpBase()
|
inline |
Definition at line 316 of file deterministicmns.h.
References blockHash, nHeight, nTotalRegisteredCount, and READWRITE.
Referenced by Unserialize().
◆ Serialize()
|
inline |
Definition at line 324 of file deterministicmns.h.
References mnMap, NCONST_PTR(), immer::map< K, T, Hash, Equal, MemoryPolicy, B >::size(), and WriteCompactSize().
◆ SetBlockHash()
|
inline |
Definition at line 380 of file deterministicmns.h.
References blockHash.
Referenced by CDeterministicMNManager::BuildNewListFromBlock(), CDeterministicMNManager::GetListForBlock(), CDeterministicMNManager::ProcessBlock(), and CDeterministicMNManager::UpgradeDiff().
◆ SetHeight()
|
inline |
Definition at line 388 of file deterministicmns.h.
References nHeight.
Referenced by CDeterministicMNManager::BuildNewListFromBlock(), CDeterministicMNManager::GetListForBlock(), CDeterministicMNManager::ProcessBlock(), and CDeterministicMNManager::UpgradeDBIfNeeded().
◆ Unserialize()
|
inline |
Definition at line 335 of file deterministicmns.h.
References AddMN(), deserialize, mnInternalIdMap, mnMap, mnUniquePropertyMap, ReadCompactSize(), and SerializationOpBase().
◆ UpdateMN() [1/3]
void CDeterministicMNList::UpdateMN | ( | const CDeterministicMNCPtr & | oldDmn, |
const CDeterministicMNStateCPtr & | pdmnState | ||
) |
Definition at line 474 of file deterministicmns.cpp.
References GetUniquePropertyMN(), HasUniqueProperty(), mnMap, immer::map< K, T, Hash, Equal, MemoryPolicy, B >::set(), strprintf, and UpdateUniqueProperty().
Referenced by ApplyDiff(), CDeterministicMNManager::BuildNewListFromBlock(), PoSeDecrease(), PoSePunish(), UpdateMN(), and CDeterministicMNManager::UpgradeDiff().
◆ UpdateMN() [2/3]
void CDeterministicMNList::UpdateMN | ( | const uint256 & | proTxHash, |
const CDeterministicMNStateCPtr & | pdmnState | ||
) |
Definition at line 492 of file deterministicmns.cpp.
References immer::map< K, T, Hash, Equal, MemoryPolicy, B >::find(), mnMap, strprintf, base_blob< BITS >::ToString(), and UpdateMN().
◆ UpdateMN() [3/3]
void CDeterministicMNList::UpdateMN | ( | const CDeterministicMNCPtr & | oldDmn, |
const CDeterministicMNStateDiff & | stateDiff | ||
) |
Definition at line 501 of file deterministicmns.cpp.
References CDeterministicMNStateDiff::ApplyToState(), and UpdateMN().
◆ UpdateUniqueProperty()
|
inlineprivate |
Definition at line 530 of file deterministicmns.h.
References AddUniqueProperty(), and DeleteUniqueProperty().
Referenced by UpdateMN().
Member Data Documentation
◆ blockHash
|
private |
Definition at line 296 of file deterministicmns.h.
Referenced by ApplyDiff(), BuildSimplifiedDiff(), GetBlockHash(), SerializationOpBase(), and SetBlockHash().
◆ mnInternalIdMap
|
private |
Definition at line 300 of file deterministicmns.h.
Referenced by AddMN(), GetMNByInternalId(), RemoveMN(), and Unserialize().
◆ mnMap
|
private |
Definition at line 299 of file deterministicmns.h.
Referenced by AddMN(), ForEachMN(), GetAllMNsCount(), GetMN(), GetMNByOperatorKey(), GetMNPayee(), GetValidMNsCount(), IsMNPoSeBanned(), IsMNValid(), RemoveMN(), Serialize(), Unserialize(), and UpdateMN().
◆ mnUniquePropertyMap
|
private |
Definition at line 304 of file deterministicmns.h.
Referenced by AddUniqueProperty(), DeleteUniqueProperty(), GetUniquePropertyMN(), HasUniqueProperty(), and Unserialize().
◆ nHeight
|
private |
Definition at line 297 of file deterministicmns.h.
Referenced by ApplyDiff(), GetHeight(), PoSePunish(), SerializationOpBase(), and SetHeight().
◆ nTotalRegisteredCount
|
private |
Definition at line 298 of file deterministicmns.h.
Referenced by AddMN(), GetTotalRegisteredCount(), and SerializationOpBase().
The documentation for this class was generated from the following files:
- src/evo/deterministicmns.h
- src/evo/deterministicmns.cpp