src/primitives/production_configuration.hpp¶
Namespaces¶
| Name |
|---|
| sgns |
| sgns::primitives |
Classes¶
| Name | |
|---|---|
| struct | sgns::primitives::ProductionConfiguration Configuration data used by the PRODUCTION verification engine. |
Types¶
| Name | |
|---|---|
| using uint64_t | ProductionSlotNumber |
| using clock::SystemClock | ProductionClock |
| using ProductionClock::Duration | ProductionDuration |
| using base::Blob< crypto::constants::sr25519::vrf::OUTPUT_SIZE > | Randomness |
Functions¶
| Name | |
|---|---|
| template <class Stream ,typename =std::enable_if_t Stream & |
operator<<(Stream & s, const ProductionConfiguration & config) |
| template <class Stream ,typename =std::enable_if_t Stream & |
operator>>(Stream & s, ProductionConfiguration & config) |
Types Documentation¶
using ProductionSlotNumber¶
using ProductionClock¶
using ProductionDuration¶
using Randomness¶
Functions Documentation¶
function operator<<¶
template <class Stream ,
typename =std::enable_if_t<Stream::is_encoder_stream>>
Stream & operator<<(
Stream & s,
const ProductionConfiguration & config
)
function operator>>¶
template <class Stream ,
typename =std::enable_if_t<Stream::is_decoder_stream>>
Stream & operator>>(
Stream & s,
ProductionConfiguration & config
)
Source code¶
#ifndef SUPERGENIUS_CORE_PRIMITIVES_PRODUCTION_CONFIGURATION_HPP
#define SUPERGENIUS_CORE_PRIMITIVES_PRODUCTION_CONFIGURATION_HPP
#include "base/blob.hpp"
#include "primitives/authority.hpp"
#include "singleton/IComponent.hpp"
#include "verification/production/common.hpp"
namespace sgns::primitives {
using ProductionSlotNumber = uint64_t;
using ProductionClock = clock::SystemClock;
using ProductionDuration = ProductionClock::Duration;
using Randomness = base::Blob<crypto::constants::sr25519::vrf::OUTPUT_SIZE>;
struct ProductionConfiguration : public IComponent {
ProductionDuration slot_duration{};
ProductionSlotNumber epoch_length{};
std::pair<uint64_t, uint64_t> leadership_rate;
primitives::AuthorityList genesis_authorities;
Randomness randomness;
std::string GetName() override
{
return "ProductionConfiguration";
}
};
template <class Stream,
typename = std::enable_if_t<Stream::is_encoder_stream>>
Stream &operator<<(Stream &s, const ProductionConfiguration &config) {
size_t slot_duration_u64 =
std::chrono::duration_cast<std::chrono::milliseconds>(
config.slot_duration)
.count();
return s << slot_duration_u64 << config.epoch_length
<< config.leadership_rate << config.genesis_authorities
<< config.randomness;
}
template <class Stream,
typename = std::enable_if_t<Stream::is_decoder_stream>>
Stream &operator>>(Stream &s, ProductionConfiguration &config) {
size_t slot_duration_u64{};
s >> slot_duration_u64 >> config.epoch_length >> config.leadership_rate
>> config.genesis_authorities >> config.randomness;
config.slot_duration = std::chrono::milliseconds(slot_duration_u64);
return s;
}
} // namespace sgns::primitives
#endif // SUPERGENIUS_CORE_PRIMITIVES_PRODUCTION_CONFIGURATION_HPP
Updated on 2026-03-04 at 13:10:44 -0800