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.