The docs.
A directory of Bitcoin solo-mining dens. Find one, point your hardware at it, and chase blocks together. Payouts land directly in the coinbase, so there's no platform balance to trust.
In a nutshell
A directory of Bitcoin solo-mining groups — we call them dens. Operators run a den, miners point their hardware at it, and when the den finds a block, payouts land in each member's BTC address directly through the coinbase transaction.
No platform balance. No operator IOU. No opaque ledger. Identity is Nostr (NIP-07 sign-in). Custody is on-chain. Operators pick their own fee. The platform takes 0.5% on top, written into every coinbase.
Mining in a den
Four steps from "I want to mine" to "I'm mining". You need a Nostr signer and any stratum-compatible hardware.
- 1
- 2Pick a den you likeBrowse the dens directory and find one whose payout rule, fee, and operator you trust.
- 3RegisterClick
Join this denand sign a kind-30078 registration with your BTC address (where your share of any coinbase lands) and a Lightning address (used when your share is too small to send on-chain). - 4Point your hardwarePlug these into your Bitaxe (or whatever stratum client you use):
Stratum URL: stratum.hashden.app Stratum port: 3333 Stratum user: <slug>.<your-npub>.<worker-name> Stratum pass: x (anything; not validated)
Yournpub1…is the bech32 public key shown in any Nostr client (also accepted in 64-char hex form). Shares show up live on the den's page.
Running a den
Operators run the den, set the rules, and decide where the block templates come from. Members join, mine, and get paid through the coinbase. No funds touch you.
- 1Sign in and create the denSign in with NIP-07 and open Create a den. You pick a slug, a fee (basis points, so 200 = 2%), and a payout rule (solo-showcase or PPLNS, see below). Your BTC address gets the operator fee and the dust-bucket outputs, so use one you control. Ideally a hardware wallet.
- 2Pick a template sourceLeave
PLATFORM_DEFAULTon (Hashden's Bitcoin Knots node) unless you want to run your own policy. Switch toOPERATOR_RPCfor DATUM, Libre Relay, a custom Knots config, whatever. Paste an RPC URL and auth. We encrypt the credential at rest. - 3Add a Lightning wallet (optional)Recommended for PPLNS dens. Members whose share is too small to send on-chain get paid in Lightning from your wallet. Paste an LNbits admin key or an NWC connection string. Encrypted at rest.
- 4Invite minersShare your den's URL. Miners onboard through the steps above.
Payout rules
Two flavours. Pick one when you create the den. You can change it later in settings.
Either way, the on-chain coinbase is the source of truth. Anyone can check who got what on-chain, and there's no platform-side ledger to trust.
What happens after a block
- 1Coinbase gets builtThe stratum routes the winning share and builds the coinbase with the right outputs: winner, PPLNS members, operator fee, platform fee, and the dust bucket.
- 2Block is broadcastHashden records it as
FOUND. The celebration banner appears on the den page. - 3It maturesAfter 100 confirmations (~16h on average), the maturity watcher flips status to
MATURED. On-chain outputs are now spendable by their recipients. Nothing else needs to happen. - 4Dust gets fanned outFor PPLNS dens, the dust-fanout worker pays each below-dust member via the operator's Lightning wallet. Hashden writes a NIP-57 zap receipt for every payment as a public audit trail.
- 5(Rarely) reorgIf the block gets reorged out before maturity, status flips to
ORPHANED. No payouts happen for that block. The block at the same height on the new mainchain is the one that paid (probably another pool).
What it costs
What's private and what isn't
Hashden tries to expose the bare minimum needed to make a mining pool work. Here's what other members, operators, and random visitors can and can't see about you.
What the operator sees: exactly the same things any other visitor sees. There's no privileged "operator dashboard" that reveals member IPs, hardware, or lightning addresses — the den operator queries the same public API as everyone else.
What the platform sees: the platform stores rows in Postgres for membership, shares, blocks, and payouts. The platform admin can read those rows directly (e.g. to debug a failed payout). This is a structural property of any hosted service. Plans to make this verifiable (operator-run stratum, members-as-relays) are on the roadmap, not in the alpha.
What Nostr relays see: joining a den publishes a kind-30078 signed event with your pubkey and the den's slug. Anyone scanning relays can enumerate members of public dens regardless of what this site shows. Unlisted dens still publish the same event; "unlisted" only hides them from this site's directory.
When things go wrong
- Bitcoin node outage: if the platform's Bitcoin node goes unreachable, the stratum's circuit breaker kicks in and templates pause. Mining keeps queueing and picks back up once the node is reachable again.
- Operator's LN wallet down: dust fan-out for that operator's dens stalls. Reconcile-on-restart catches partial payments. No double-pays.
- Block reorged: very rare. The block goes
ORPHANEDand payouts skip. Nobody got paid for that height because the chain reorganized them out. - Lightning address dead: dust payments fail and stay
FAILEDin the audit trail. The member can fix their address by re-running the join flow. - Knots policy divergence: the platform's default template comes from Knots. If Knots changes its tx filters in a way you disagree with, switch your den to
OPERATOR_RPCand run your own node policy.
Get in touch
Bugs, ideas, weird edge cases, or just want to say hi: DM me on Nostr at @icaruswings or open an issue on GitHub. It's open alpha and a one-person project, so replies may take a day or two.