Mining memory harndess removed?

I am trying to understand is this true or not?
Code says that after block 38000 memory hardness will be removed.
So that practically would mean that its not needed to have a lot of gpu memory to mine NPT?

Source: neptune-cash v0.10.2 (tag neptune-cash-v0.10.2, commit add24b67)**


1. Block height constant

src/protocol/consensus/consensus_rule_set.rs, lines 29–31:

/// Height of 1st block changing PoW algorithm to drop memory hardness
pub const BLOCK_HEIGHT_HARDFORK_BETA_MAIN_NET: BlockHeight =
    BlockHeight::new(BFieldElement::new(38_000u64));

2. memory_hard_pow() explicitly returns false for HardforkBeta

Same file, lines 123–130:

pub(crate) fn memory_hard_pow(&self) -> bool {
    match self {
        ConsensusRuleSet::Reboot          => true,
        ConsensusRuleSet::HardforkAlpha   => true,
        ConsensusRuleSet::TvmProofVersion1 => true,
        ConsensusRuleSet::HardforkBeta    => false,
    }
}

Every rule set before HardforkBeta returns true. HardforkBeta is the only one that doesn’t.


3. validate() skips all tree-path checks for HardforkBeta

src/protocol/consensus/block/pow.rs, lines 624–643:

pub(super) fn validate(
    self,
    auth_paths: PowMastPaths,
    target: Digest,
    consensus_rule_set: ConsensusRuleSet,
    parent_digest: Digest,
) -> Result<(), PowValidationError> {
    let pow_digest = auth_paths.fast_mast_hash(self);
    let meets_threshold = pow_digest <= target;
    let leaf_prefix = match consensus_rule_set {
        ConsensusRuleSet::Reboot => auth_paths.commit(),
        ConsensusRuleSet::HardforkAlpha | ConsensusRuleSet::TvmProofVersion1 => parent_digest,
        ConsensusRuleSet::HardforkBeta => {
            if !meets_threshold {
                return Err(PowValidationError::ThresholdNotMet);
            }
            return Ok(());  // ← early return, no MTree::verify() calls
        }
    };
    // ... MTree::verify(path_a), MTree::verify(path_b) β€” only reached pre-Beta

The HardforkBeta arm returns Ok(()) immediately after the threshold check. The 42 GB GuesserBuffer (two 2^29-entry Merkle trees) and the 63-index Tip5 path derivation are completely bypassed. Post-Beta mining is a pure hash preimage search with no memory requirement.

Post-Beta mining is a pure hash preimage search with no memory requirement.

That is correct. There are a few reasons:

  • We don’t want to compete with AI hardware.
  • It makes programming succintness easier. Succinctness is the feature that you only have to download one block to be fully synced.
  • We believe that lowering the barrier to entry to participate in mining works towards making reorganizations harder.
1 Like

I would completely agree. In fact 40 GB is so prohibitive, that practically cut 95% of ppl who could be interested in proof mining. I recently tried to sync the thing one more time and came to the conclusion that the way it works now is completely unbearable for the average bro. I would needed to make 8 patches in the codebase to reach to top. I think part of this probelm is a weak network caused by 40GB limit.

What is you plan for recursive block validation? I think that would be kinda game changer, if combined with some really smart way to filter out outputs.