Skip to content

src/blockchain/block_header_repository.hpp

Namespaces

Name
sgns
sgns::blockchain

Classes

Name
class sgns::blockchain::BlockHeaderRepository

Types

Name
enum class BlockStatus

Types Documentation

enum BlockStatus

Enumerator Value Description
InChain
Unknown

Status of a block

Source code

#ifndef SUPERGENIUS_CORE_BLOCKCHAIN_BLOCK_HEADER_REPOSITORY_HPP
#define SUPERGENIUS_CORE_BLOCKCHAIN_BLOCK_HEADER_REPOSITORY_HPP

#include "outcome/outcome.hpp"
#include "base/blob.hpp"
#include "primitives/block_header.hpp"
#include "primitives/block_id.hpp"
#include "singleton/IComponent.hpp"

namespace sgns::blockchain
{
    enum class BlockStatus
    {
        InChain,
        Unknown
    };

    class BlockHeaderRepository : public IComponent
    {
    public:
        [[nodiscard]] virtual outcome::result<primitives::BlockNumber> getNumberByHash(
            const base::Hash256 &hash ) const = 0;

        [[nodiscard]] virtual outcome::result<base::Hash256> getHashByNumber(
            const primitives::BlockNumber &number ) const = 0;

        [[nodiscard]] virtual outcome::result<primitives::BlockHeader> getBlockHeader(
            const primitives::BlockId &id ) const = 0;

        virtual outcome::result<primitives::BlockHash> putBlockHeader( const primitives::BlockHeader &header ) = 0;

        virtual outcome::result<void> removeBlockHeader( const primitives::BlockId &id ) = 0;

        [[nodiscard]] virtual outcome::result<sgns::blockchain::BlockStatus> getBlockStatus(
            const primitives::BlockId &id ) const = 0;

        [[nodiscard]] outcome::result<primitives::BlockNumber> getNumberById( const primitives::BlockId &id ) const;

        [[nodiscard]] outcome::result<base::Hash256> getHashById( const primitives::BlockId &id ) const;
    };
}

#endif

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