account/PublicChainInputValidator.hpp¶
Input validation strategy for public-chain source proofs. More...
Namespaces¶
| Name |
|---|
| sgns |
Classes¶
| Name | |
|---|---|
| struct | sgns::WeightedRpcEndpoint Weighted RPC endpoint used for multi-provider consensus verification. |
| class | sgns::PublicChainInputValidator Validator for transactions that reference external public-chain proofs. |
Detailed Description¶
Input validation strategy for public-chain source proofs.
Date: 2026-06-02 Henrique A. Klein ([email protected])
Source code¶
#pragma once
#include <cstdint>
#include <memory>
#include <string>
#include <unordered_map>
#include <vector>
#include "account/InputValidators.hpp"
namespace sgns
{
struct WeightedRpcEndpoint
{
std::string url;
uint8_t consensus_weight = 25;
std::string bridge_contract_address;
std::string event_topic0;
};
class PublicChainInputValidator final : public IInputValidator
{
public:
void SetRpcEndpoints( const std::string &chain_id, std::vector<WeightedRpcEndpoint> endpoints );
bool ValidateUTXOParameters( const UTXOTxParameters ¶ms,
const std::string &address,
const UTXOManager &utxo_manager ) const override;
bool ValidateWitness( const ConsensusSubject &subject,
const std::shared_ptr<GeniusTransaction> &tx,
const UTXOTxParameters ¶ms,
const std::shared_ptr<Blockchain> &blockchain ) const override;
bool RequiresConsensusUTXOData() const override
{
return false;
}
private:
bool VerifyPublicChainSmartContract( const std::shared_ptr<GeniusTransaction> &tx,
const std::string &source_reference ) const;
std::unordered_map<std::string, std::vector<WeightedRpcEndpoint>> rpc_endpoints_;
};
} // namespace sgns
Updated on 2026-06-05 at 17:22:19 -0700