account/MigrationAllowList.hpp¶
Persistent allow-list used to track balances eligible for migration claims. More...
Namespaces¶
| Name |
|---|
| sgns |
Classes¶
| Name | |
|---|---|
| class | sgns::MigrationAllowList Stores observed legacy balances and validates migration claim eligibility. |
Detailed Description¶
Persistent allow-list used to track balances eligible for migration claims.
Date: 2026-05-01 Henrique A. Klein ([email protected])
Source code¶
#pragma once
#include "base/buffer.hpp"
#include "base/logger.hpp"
#include "outcome/outcome.hpp"
#include "storage/rocksdb/rocksdb.hpp"
#include <cstdint>
#include <memory>
#include <optional>
#include <string>
#include <utility>
#include <vector>
class MigrationParamTest;
namespace sgns
{
class MigrationAllowList
{
public:
using AddressBalance = std::pair<std::string, uint64_t>;
MigrationAllowList( std::shared_ptr<storage::rocksdb> db, std::string migration_version );
outcome::result<void> StoreObservedBalance( const std::string &address, uint64_t balance );
outcome::result<void> StoreObservedBalances( const std::vector<AddressBalance> &balances );
outcome::result<std::optional<uint64_t>> LoadObservedBalance( const std::string &address ) const;
outcome::result<bool> IsEligible( const std::string &address, uint64_t claimed_balance ) const;
outcome::result<std::vector<AddressBalance>> ListObservedBalances() const;
static std::string BuildPrefix( std::string_view migration_version );
static std::string BuildKey( std::string_view migration_version, std::string_view address );
private:
friend class ::MigrationParamTest;
static void SetEligibilityCheckEnabledForTests( bool enabled );
static bool IsEligibilityCheckEnabledForTests();
static outcome::result<uint64_t> DecodeBalance( const base::Buffer &buffer );
std::shared_ptr<storage::rocksdb> db_;
std::string migration_version_;
std::string prefix_;
base::Logger logger_ = base::createLogger( "MigrationAllowList" );
};
}
Updated on 2026-06-05 at 17:22:19 -0700