Skip to content

sgns::blockchain::ValidatorRegistry

#include <ValidatorRegistry.hpp>

Inherits from std::enable_shared_from_this< ValidatorRegistry >

Public Classes

Name
struct WeightConfig

Public Types

Name
using validator::ValidatorEntry ValidatorEntry
using validator::Registry Registry
using validator::SignatureEntry SignatureEntry
using validator::RegistryUpdate RegistryUpdate
using validator::Role Role
using validator::Status Status
using std::function< void(bool)> InitCallback
using std::function< void(const std::string &, std::function< void(outcome::result< std::string >)>)> BlockRequestMethod

Public Functions

Name
std::shared_ptr< ValidatorRegistry > New(std::shared_ptr< crdt::GlobalDB > db, uint64_t quorum_numerator, uint64_t quorum_denominator, WeightConfig weight_config, std::string genesis_authority, BlockRequestMethod block_request_method, InitCallback init_callback =nullptr)
std::string_view RegistryKey()
std::string_view ValidatorTopic()
std::string_view RegistryCidKey()
uint64_t ComputeWeight(Role role) const
uint64_t TotalWeight(const Registry & registry) const
uint64_t QuorumThreshold(uint64_t total_weight) const
bool IsQuorum(uint64_t accumulated_weight, uint64_t total_weight) const
Registry CreateGenesisRegistry(const std::string & genesis_validator_id) const
outcome::result< void > StoreGenesisRegistry(const std::string & genesis_validator_id, std::function< std::vector< uint8_t >(std::vector< uint8_t >)> sign)
outcome::result< Registry > LoadRegistry() const
outcome::result< RegistryUpdate > LoadRegistryUpdate() const
bool RegisterFilter()
outcome::result< std::vector< uint8_t > > SerializeRegistry(const Registry & registry) const
outcome::result< Registry > DeserializeRegistry(const std::vector< uint8_t > & buffer) const
outcome::result< std::vector< uint8_t > > SerializeRegistryUpdate(const RegistryUpdate & update) const
outcome::result< RegistryUpdate > DeserializeRegistryUpdate(const std::vector< uint8_t > & buffer) const

Protected Functions

Name
outcome::result< void > MigrateCids(const std::shared_ptr< crdt::GlobalDB > & old_db, const std::shared_ptr< crdt::GlobalDB > & new_db)

Friends

Name
class sgns::Migration3_5_1To3_6_0

Public Types Documentation

using ValidatorEntry

using sgns::blockchain::ValidatorRegistry::ValidatorEntry = validator::ValidatorEntry;

using Registry

using sgns::blockchain::ValidatorRegistry::Registry = validator::Registry;

using SignatureEntry

using sgns::blockchain::ValidatorRegistry::SignatureEntry = validator::SignatureEntry;

using RegistryUpdate

using sgns::blockchain::ValidatorRegistry::RegistryUpdate = validator::RegistryUpdate;

using Role

using sgns::blockchain::ValidatorRegistry::Role = validator::Role;

using Status

using sgns::blockchain::ValidatorRegistry::Status = validator::Status;

using InitCallback

using sgns::blockchain::ValidatorRegistry::InitCallback = std::function<void( bool )>;

using BlockRequestMethod

using sgns::blockchain::ValidatorRegistry::BlockRequestMethod = 
std::function<void( const std::string &, std::function<void( outcome::result<std::string> )> )>;

Public Functions Documentation

function New

static std::shared_ptr< ValidatorRegistry > New(
    std::shared_ptr< crdt::GlobalDB > db,
    uint64_t quorum_numerator,
    uint64_t quorum_denominator,
    WeightConfig weight_config,
    std::string genesis_authority,
    BlockRequestMethod block_request_method,
    InitCallback init_callback =nullptr
)

function RegistryKey

static inline std::string_view RegistryKey()

function ValidatorTopic

static inline std::string_view ValidatorTopic()

function RegistryCidKey

static inline std::string_view RegistryCidKey()

function ComputeWeight

uint64_t ComputeWeight(
    Role role
) const

function TotalWeight

uint64_t TotalWeight(
    const Registry & registry
) const

function QuorumThreshold

uint64_t QuorumThreshold(
    uint64_t total_weight
) const

function IsQuorum

bool IsQuorum(
    uint64_t accumulated_weight,
    uint64_t total_weight
) const

function CreateGenesisRegistry

Registry CreateGenesisRegistry(
    const std::string & genesis_validator_id
) const

function StoreGenesisRegistry

outcome::result< void > StoreGenesisRegistry(
    const std::string & genesis_validator_id,
    std::function< std::vector< uint8_t >(std::vector< uint8_t >)> sign
)

function LoadRegistry

outcome::result< Registry > LoadRegistry() const

function LoadRegistryUpdate

outcome::result< RegistryUpdate > LoadRegistryUpdate() const

function RegisterFilter

bool RegisterFilter()

function SerializeRegistry

outcome::result< std::vector< uint8_t > > SerializeRegistry(
    const Registry & registry
) const

function DeserializeRegistry

outcome::result< Registry > DeserializeRegistry(
    const std::vector< uint8_t > & buffer
) const

function SerializeRegistryUpdate

outcome::result< std::vector< uint8_t > > SerializeRegistryUpdate(
    const RegistryUpdate & update
) const

function DeserializeRegistryUpdate

outcome::result< RegistryUpdate > DeserializeRegistryUpdate(
    const std::vector< uint8_t > & buffer
) const

Protected Functions Documentation

function MigrateCids

static outcome::result< void > MigrateCids(
    const std::shared_ptr< crdt::GlobalDB > & old_db,
    const std::shared_ptr< crdt::GlobalDB > & new_db
)

Friends

friend sgns::Migration3_5_1To3_6_0

friend class sgns::Migration3_5_1To3_6_0(
    sgns::Migration3_5_1To3_6_0 
);

Updated on 2026-03-04 at 13:10:43 -0800