Skip to content

impl/bridge_rpc_watcher.hpp

Header file for the bridge RPC watcher. More...

Namespaces

Name
sgns
sgns::evmwatcher

Classes

Name
class sgns::evmwatcher::BridgeRpcWatcher
RPC-based bridge event watcher that polls eth_getLogs, verifies receipts, and produces normalized BridgeEventClaim objects.
struct sgns::evmwatcher::BridgeRpcWatcher::Config
Configuration structure for BridgeRpcWatcher.

Detailed Description

Header file for the bridge RPC watcher.

Date: 2026-06-03 SuperGenius ([email protected]) Copyright 2026 Genius Ventures, Inc. SPDX-License-Identifier: MIT

Source code

#pragma once

#include <watcher/messaging_watcher.hpp>

#include <eth/bridge_event.hpp>
#include <eth/rpc_http_transport.hpp>

#include <chrono>
#include <cstdint>
#include <functional>
#include <string>
#include <vector>

namespace sgns::evmwatcher
{

    class BridgeRpcWatcher final : public watcher::MessagingWatcher
    {
    public:
        using BridgeClaimCallback = std::function<void( const eth::BridgeEventClaim & )>;

        struct Config
        {
            std::string rpc_url;                 
            uint64_t    chain_id      = 0;       
            uint64_t    dest_chain_id = 0;       
            std::string contract_address;        
            std::string event_signature;         
            uint64_t    confirmation_depth = 12; 
            std::chrono::seconds poll_interval{ 4 };   
            uint64_t             max_log_range = 1000; 
        };

        BridgeRpcWatcher( const Config &config, MessageCallback message_callback, BridgeClaimCallback claim_callback );

        void startWatching() override;
        void stopWatching() override;

        [[nodiscard]] const Config &GetConfig() const noexcept
        {
            return config_;
        }

        [[nodiscard]] uint64_t GetLastProcessedBlock() const noexcept
        {
            return last_block_;
        }

    protected:
        void watch() override;

    private:
        void poll_once();

        Config                     config_;         
        BridgeClaimCallback        claim_callback_; 
        eth::rpc::RpcHttpTransport transport_;      
        uint64_t                   last_block_ = 0; 
    };

} // namespace sgns::evmwatcher

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