Skip to content

v0.9.4 — play rewards + fingerprint matcher + node.hello connectivity gate

Choose a tag to compare

@knobcore knobcore released this 26 Jun 02:56

MusicChain v0.9.4

Android APK (arm64-v8a) attached — sideload musicchain-player-v0.9.4-arm64.apk.

Play rewards fixed

A buggy container/ID3 tag could register a garbage song duration (e.g. 184 h). Because the play-reward gate needs 50% of the registered duration, such songs were permanently un-rewardable — every real play scored "below_threshold". Now sanity-gated on both sides:

  • player: reject implausible durations at registration (prefer tag, fall back to PCM math, else 0)
  • node: treat an implausible on-chain duration as unreliable and fall back to the fixed legacy listen threshold — so songs already registered with a bad duration reward again on a genuine play

Fingerprint matcher fixed (false positives + slow validation)

  • offset-alignment bug in similarity() (mixed match-count from one offset with overlap-length from another — inflated different-song scores AND deflated same-song transcodes)
  • minimum-overlap guard (kills silence-tail flukes)
  • same-song threshold 0.55 → 0.70, hoisted to one shared constant used by both the consensus dup-check and the swarm-join probe
  • swarm-join probe early-exits on first match (perf)
  • player: only count a scan as "matched" when the node names a chain song with a real swarm

Network / consensus (Model 1)

  • node.hello full-node identity handshake + connectivity-gated propagation (an isolated node holds INV/DHT fan-out and flushes when a full-node peer appears; minting is never gated)
  • retired the validator_enabled producer/follower gate — every node mints on content (song blocks + tx-carrying heartbeat blocks), converging on the heaviest valid chain
  • discovery: the library re-announces on every network change (songs no longer go undiscoverable while still online)

Runs against a freshly re-bootstrapped genesis (the fingerprint/threshold change is consensus-affecting). Build full/mini nodes from source.