github HoosatNetwork/HTND v2.18.1

5 hours ago

HTND v2.18.1 [OPTIONAL]

All users are recommended to upgrade to v2.18.1, however it is not necessary to do so.

It should now be possible to run HTND with a normal workload in 8GB of RAM.
Unofficial chains/splits/forks have not been compatible since the release of v2.18.0, however this version more strictly enforces and enhances the defence mechanisms against rogue chains.

The explorer is now available at both
https://explorer-eu.hoosat.network/ and https://explorer-nz.hoosat.network/

We also welcome and will include all valid contributions to the codebase through well formed PullRequests as documented in CONTRIBUTING.md and README.md. Several fixes in this release came from suggestions from community members for which we are grateful. Contributions which do not follow the guidelines are almost certain to be rejected.

This Github Repo remains the official distribution point for HTND. Others have forked or threaten to deploy non compatible chains. The OWLs who represent the largest holders of HTN have unanimously announced their support for this version, which makes it the de-facto successor post the departure of the founder.

Detail

A) Consensus and UTXO validation

  1. Missing-input path removed (calculate_past_utxo.go): transactions with unresolved inputs are now always rejected as missing-input. The previous path that accepted them for blocks inheriting a UTXO commitment offset is gone.
  2. Coinbase tolerance removed (verify_and_build_utxo.go): a coinbase mismatch is no longer excused by the offset baseline. Under strict coinbase rules enforced at block version 11 (now active) it is never tolerated.
  3. Pruning-point checkpoint checks reworked (pruningmanager.go): the checkpoint header and multiset are checked against the pinned values. Lineage is proven by walking the node's pruning-point list from the checkpoint up to the top, with blue scores required to increase. VerifyPruningPointCheckpointOnDisk now uses this same check.
  4. UTXO set verification on advancement: updatePruningPoint checks that the served UTXO set matches its commitment and logs HALTING on mismatch. The diff is released before the check, and debug.FreeOSMemory() is called to reduce memory use.
  5. Mismatch reporting refactored: reportPruningPointCommitmentMismatch takes sizes and a lazy rederiveDiff function instead of holding the diff in memory.

None of the above conditions have been observed in their "tolerant" forms on mainnet for a week. The risk of consensus split is therefore essentially zero, and thus these changes are NOT gated behind a HF.

It would in idle world of course be desirable to proove the PP's lineage back to genesis. Due to the tolerate conditions introduced to keep the chain moving in the summer of 26 this is no longer possible to cryptographically proove. Therefore a checkpoint validated as being present on mainnet was inserted in v2.18.0. As a self contained PP that meets muHash on it's own commitment, since when zero non compliant transcations have occured, it provides a strong anchor replacing genesis ONLY in terms of PP lineage and authenticity. The UTXO set itself meets it's own commitment, and thus is a complete and self contained representation of the state of the DAG and all the coins held within it at that point in time.

    var mainnetPruningPointCheckpoint = &Checkpoint{
    Hash:           mustHash("27c1163f701f881ed90560e63031156c29d99100acc40ad019e0fadc61fb43b5"),
    BlueScore:      221022005,
    DAAScore:       233742961,
    UTXOCommitment: mustHash("f5072e6ddf17067bb05a5a99ee095fac922d285c0d0318f42275989b55b9ffff"),
    }
 

B) Peer banning

  1. Forced bans: ProtocolError gains a ForceBan flag, with WrapForcedBan and ConvertToForcedBanIfRuleError helpers. protocol.go bans when ShouldBan && (EnableBanning || ForceBan).
  2. IBD error handling (ibd_with_headers_proof.go): pruning-point finality violations, bad pruning-point UTXO sets, and missing pruning-point outputs now produce ban-eligible errors instead of plain disconnects. Log levels were raised to Warn.
  3. Hardcoded IP bans (addressmanager.go): seven IPs are permanently banned due to self confessed forking, and never expire. connmanager.IsBanned applies this even to permanent --connect/--addpeer peers.

C) Network configuration

  1. Mainnet DNS seeds :
"hoosat.seed-eu.evern00b.com",
"hoosat.seed-in.evern00b.com",
"htn-mainnet-seed.htn.foztor.net",
"htn-mainnet-seed.qbawr.eu",
"htn-mainnet-seed.hoosatworld.net"
  1. Minimum and default protocol version bumped to 11 to further isolate rogue nodes.

  2. testnet DNS seeds are temporarily disabled

We thank all who volunteer to run trustworthy DNS seeders.

Don't miss a new HTND release

NewReleases is sending notifications on new releases.