Skip to content

v0.9.5 — DB2: gossip-replicated libraries + playlists (off-chain, wallet-keyed)

Choose a tag to compare

@knobcore knobcore released this 27 Jun 00:05
· 40 commits to main since this release

v0.9.5 — DB2: gossip-replicated libraries + playlists (off-chain, wallet-keyed)

A new off-chain store ("DB2") that propagates each wallet's library and playlists across every node the way the chain propagates blocks — but outside consensus. A player just says hi to the network; the node already holds the list. Groundwork laid in this release; built from main @ d310dd7.

Gossip-replicated libraries (off-chain, wallet-keyed)

  • Each wallet's library is a compressed Roaring bitmap of song content-hashes (~2–4 bytes/song), in a separate leveldb keyspace outside the chain.
  • The wallet is the sole writer of its own record → eventually-consistent gossip (wallet-signed deltas), no block ordering or quorum.
  • The wire speaks 32-byte content-hashes, so nodes need no agreement on id numbering — ids are local intern handles.
  • A reverse index (song → who-has-it) powers discovery; the player publishes its wallet-signed library on (re)connect.

Ordered playlists — same mechanism

  • Wallet-signed, gossip-replicated ordered playlists (mcpls1 canonical bytes).
  • Player UI: playlists are the third facet — Artist / Genre / Playlists — in both the Discover and My Library tabs. Selecting a playlist fills the same track pane an album opens into; long-press / right-click a playlist chip to Add songs / Rename / Delete, and a "New playlist" chip creates one. Discover resolves a playlist's hashes to discoverable chain songs; My Library resolves them to your local files — each in the playlist's own order.

Anti-entropy (offline-node catch-up)

  • The flood covers the online mesh; this converges a node that was offline during an edit. On peer connect each side exchanges a {key→version} summary and pushes back every record the other is behind on (mirrors the mod.sync_since pattern).
  • Libraries now replace by version snapshot, so removals propagate — not just additive deltas.
  • Idempotent re-publish on reconnect: edits made while the home node was unreachable still converge, without re-flooding unchanged records.

Artifacts

  • musicchain-player-v0.9.5-arm64.apk — Android (arm64-v8a, signed)
  • musicchain-player-v0.9.5-windows-x64.zip — Windows desktop player (x64)

DB2 is entirely off-chain and additive — consensus, blocks, and the existing chain are unchanged.