Skip to content

account/ChainRpcEndpointProvider.hpp

Loads RPC endpoints from the evmrelay ChainList provider and wires them into PublicChainInputValidator with weighted consensus support. More...

Namespaces

Name
sgns

Classes

Name
struct sgns::ChainRpcProviderConfig
Platform-agnostic configuration passed to ChainRpcEndpointProvider.
class sgns::ChainRpcEndpointProvider
Encapsulates ChainList RPC endpoint loading and validator wiring.

Detailed Description

Loads RPC endpoints from the evmrelay ChainList provider and wires them into PublicChainInputValidator with weighted consensus support.

Date: 2026-05-27 SuperGenius

Source code

#ifndef _CHAIN_RPC_ENDPOINT_PROVIDER_HPP_
#define _CHAIN_RPC_ENDPOINT_PROVIDER_HPP_

#include <cstdint>
#include <filesystem>
#include <string>
#include <unordered_map>
#include <vector>

#include "account/PublicChainInputValidator.hpp"
#include "base/logger.hpp"

namespace sgns
{
    struct ChainRpcProviderConfig
    {
        std::filesystem::path chains_json_path;

        std::unordered_map<std::string, std::vector<WeightedRpcEndpoint>> direct_endpoints;
    };

    class ChainRpcEndpointProvider
    {
    public:
        using ChainIdMap = std::unordered_map<std::string, uint64_t>;

        explicit ChainRpcEndpointProvider( ChainIdMap chain_id_map );

        bool Initialize( PublicChainInputValidator  &validator,
                         const ChainRpcProviderConfig &config,
                         const base::Logger          &logger ) const;

    private:
        ChainIdMap chain_id_map_;
    };
} // namespace sgns

#endif

Updated on 2026-06-05 at 17:22:19 -0700