Skip to content

src/blockchain/block_storage.hpp

Namespaces

Name
sgns
sgns::blockchain

Classes

Name
class sgns::blockchain::BlockStorage

Source code

#ifndef SUPERGENIUS_SRC_BLOCK_STORAGE_HPP
#define SUPERGENIUS_SRC_BLOCK_STORAGE_HPP

#include "primitives/block.hpp"
#include "primitives/block_data.hpp"
#include "primitives/block_id.hpp"
#include "primitives/justification.hpp"
#include "singleton/IComponent.hpp"

namespace sgns::blockchain {

  class BlockStorage : public IComponent {
   public:
       ~BlockStorage() override = default;

    virtual outcome::result<primitives::BlockHash> getGenesisBlockHash()
        const = 0;

    virtual outcome::result<primitives::BlockHash> getLastFinalizedBlockHash()
        const = 0;
    virtual outcome::result<void> setLastFinalizedBlockHash(
        const primitives::BlockHash &) = 0;

    virtual outcome::result<primitives::BlockHeader> getBlockHeader(
        const primitives::BlockId &id) const = 0;
    virtual outcome::result<primitives::BlockBody> getBlockBody(
        const primitives::BlockId &id) const = 0;
    virtual outcome::result<primitives::BlockData> getBlockData(
        const primitives::BlockId &id) const = 0;
    virtual outcome::result<primitives::Justification> getJustification(
        const primitives::BlockId &block) const = 0;

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

    virtual outcome::result<void> putBlockData(
        primitives::BlockNumber, const primitives::BlockData &block_data) = 0;

    virtual outcome::result<primitives::BlockHash> putBlock(
        const primitives::Block &block) = 0;

    virtual outcome::result<void> putJustification(
        const primitives::Justification &j,
        const primitives::BlockHash &hash,
        const primitives::BlockNumber &number) = 0;

    virtual outcome::result<void> removeBlock(
        const primitives::BlockHash &hash,
        const primitives::BlockNumber &number) = 0;
  };

}  // namespace sgns::blockchain

#endif  // SUPERGENIUS_SRC_BLOCK_STORAGE_HPP

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