Origin story
Kaspa's fair launch was the path left after the other paths failed
Kaspa's launch structure wasn't chosen; it's what was left after research into faster proof-of-work ordering moved through DAGLabs, an April 2021 testnet, a hardware plan, a presale, and a DeFi pitch, each of which failed. Fair launch took the premine, pre-sale, and insider table off the starting line before mainnet existed.
See it
Kaspa's zero, plotted against three other launches
Hide the chartShow the chart
Drag the year marker to compare launch ownership over time.
Genesis allocations and later ownership evidence
Kaspa: No genesis premine or genesis founder/company/foundation allocation is shown in rusty-kaspa's genesis.rs. Separate post-launch estimates put DAGLabs/core-developer mining around 2.5-3%; that is mining after launch, not a genesis allocation, and it does not establish later wallet ownership.
Solid: documented. Kaspa appears at genesis only; later holdings are unestablished. Dashed: modeled projection, not measured.
| Chain | Genesis / modeled share | Public / open | Status at this year |
|---|
What a premineCoins held before launch, before anyone else could mine or buy them. buys Founder, company, and foundation shares only; full sourcing below.
Launch history and sources
Runs entirely in your browser.
Research first
The problem came before the coin
Bitcoin at high block rates has one weak point: two honest miners solving blocks seconds apart, with the single-chain rule discarding one. Kaspa's research line starts there: a blockDAG keeps both blocks, then a rule like GHOSTDAG orders the graph into one shared history.
| Paper | Authors and year | What it put on the record |
|---|---|---|
| SPECTRE | Described by Zohar and Sompolinsky Epicenter, July 2017 |
Dropped the blockchain data structure so blocks can be made all the time and merged afterward. Nobody races for one slot. |
| PHANTOM: A Scalable BlockDAG Protocol | Sompolinsky and Zohar 2018 |
DBLP lists it as an IACR ePrint paper, on the same blockDAG research line as SPECTRE. |
DAGLabs and testnet
DAGLabs came first, then the fair launch
DAGLabs, co-founded by Yonatan Sompolinsky and Guy Corem, paid for and ran part of the pre-mainnet path: a Golang build of Phantom/GHOSTDAG, then an April 2021 public testnet. No token premine, but a VC-funded backstory that shaped the hardware, mining, and fair-launch debate before mainnet existed.
Founding date dispute, testnet bundle, and the code's real origin
Sources disagree on founding: Investing.com (April 26, 2021) says 2017, $8 million from Polychain and Accomplice; HackerNoon says 2018. Yonatan's HashdagSompolinsky's research writing site. archive says the original Kaspad was built from Bitcoin's btcd client, in Golang; the unsourced "Bitcoin Core 0.19" claim doesn't hold up.
Could-have-been paths
Failed plans are part of the story
An ASICA chip built to run kHeavyHash fast; it can't be reprogrammed like a CPU or GPU.-and-presale plan, a DeFi-sequencing pitch, and a flawed gamenet came before the fair launch. None worked out.
| Path | What it was, and how it ended |
|---|---|
| ASIC and presale | Hashdag's 2020 archive promised no premine and no founder rewards, then described DAGLabs as a for-profit miner tuning ASICs before launch. Yonatan later said the optical chips were never ready. |
| DeFi sequencing | The April 2021 launch article framed Kaspa as faster ordering rails for Ethereum DeFi, and the Uphold recap agrees. Neither says Kaspa ever shipped as an Ethereum layer 2. |
| Gamenet | Yonatan later called the gamenet attempt flawed: closer to a testnet with rewards bolted on than a real mainnet. |
| Venture-backed fair launch | In the HackerNoon interview, Yonatan called DAGLabs a failed attempt to square venture backing with a fair launch, and agreed that both Polychain and Gadi pushed him to launch. |
"Solana-like," from the same interviews, isn't a failed path: developer experience, not a claim about copying Solana's execution model.
Launch
Mainnet launched without a premine
Mainnet launched without a genesis premine; rusty-kaspa's genesis.rs, which records an empty genesis UTXOCoins spent whole and replaced by new ones. set, shows no genesis founder/company/foundation allocation. Post-launch mining, funding, and later holdings require separate evidence; Yonatan's archive calls the launch messy.
| Question | The number | Where it comes from |
|---|---|---|
| Was there a premine? | None. | No coins existed before the first mined block. This is the claim the chart at the top of this page plots against three other launches. |
| What did the core developers mine? | About 2.5% of total supply. | Yonatan's own later estimate, for mining after launch. |
| What did DAGLabs and Polychain end up with? | Under 3%, roughly 840 million KAS, tightening to nearer 2.5% and under 850 million. | The Kaspa Wiki prehistory page. Early-miner context, which is a different question from whether there was a premine. |
Early stress
Kaspa had to survive real failure
On November 23, 2021, Yonatan published "Kaspa (Black Tuesday)" after a memory-problem crash: developers rebuilt against a known-valid UTXO commitment, not a preferred rollback. That's the sourced version of the "two-week bug" story; the genesis rusty-kaspa ships is dated November 22, the day before, putting the outage at days, not weeks.
| Incident | What happened | What fixed it |
|---|---|---|
| Black Tuesday November 2021 |
A memory problem crashed the network. Developers rebuilt against a known-valid UTXO commitment rather than rolling back to a state they preferred. | Kaspad's November 2021 hard-fork commit, titled "new genesis with the utxo set of the last block." Mainnet genesis carries DAA score 1,312,860 and the same commitment hash. |
| Dust attack September 2023 |
Each attack transaction spent one coin and created 238, adding roughly 100 KB of permanent state per block, about 5 GB a day. Shai Wyborski counted 57 million attacker coins. | KIPKaspa Improvement Proposal: the process that specifies, reviews, and merges a protocol change. Nothing on this site counts as shipped without a merged KIP and a release tag.-9's extended mass formula, which prices state growth into transaction mass. The attacker now pays for the state they create. |
Rust, Crescendo, Toccata
Golang was not the final version
Hashdag's 2022 archive says Michael Sutton pushed for a Rust rewrite, Golang's old debt made it hard for new coders. Rusty-kaspa, a drop-in replacement, puts Crescendo at May 5, 2025, one block a second to ten at DAA score 110,165,000 (v1.0.0 notes). "Toccata" often gets pinned on that rate; they're two forks, a year apart.
| Fork | What it changed | Activated at |
|---|---|---|
| Crescendo May 2025 |
Moved mainnet from 1 block per second to 10. | DAA score 110,165,000, named in the rusty-kaspa v1.0.0 release notes. |
| Toccata June 2026 |
Base-layer code support: covenants, Silverscript, ZKZero-knowledge: a proof that a statement is true without revealing the data behind it, so a script can accept a claim about work done elsewhere without seeing that work.-facing proof checks, sequencing commitments, and native-asset groundwork. Nothing to do with block rate. | DAA score 474,165,565. Rusty Kaspa v2.0.0 shipped the switch and v2.0.1 followed as the Toccata release. |
Wallet, indexer, and app use are still building on Toccata: check status for where each stands.
Hide the converterShow the converter
Drag the slider to convert a DAA score to a real date.
1. Read a DAA score
A DAA score rises about one per accepted block: 1/second before Crescendo (5 May 2025), 10/second after.
Kaspa dates its own changes by this counter, never the calendar.
Anchored on genesis and Toccata's activation; dates after Toccata assume today's rate holds.
A separate demo: catch a lying block timestamp
Catch a lying timestamp
A backdated block can look slower than it is and cheapen mining by lowering difficulty, so every timestamp must land after the middle time of the block's last 11 ancestors and no more than 132 seconds ahead of the checking node's clock.
Bitcoin checks time almost the same way
Bitcoin uses the same 11-block median floor but allows a timestamp up to 2 hours ahead; Kaspa allows only 132 seconds, since it expects a new block every tenth of a second, not every 10 minutes.
How this date conversion is anchored
| Topic | Explanation |
|---|---|
| DAA score is a block count, not a timer | Each block adds new merge-set blocks to its parent's DAA score, in kaspanet/rusty-kaspa. A flat 10-per-second rate only held after Crescendo (table below); applied earlier it overstates elapsed time roughly tenfold, so the converter interpolates between three exact anchors: genesis, Crescendo, and Toccata, landing about 0.06% off target across the 421 days between the latter two. |
Where the timestamp check's constants come from
| Topic | Explanation |
|---|---|
| Timestamp rules used above | A timestamp must exceed the median of 11 sampled ancestor timestamps (KIP-0004) and land no more than 132 seconds ahead of the validating node's clock. Bitcoin uses the same median-of-11 floor, sampled rather than walked since Kaspa's DAG mines many blocks in parallel, with a future ceiling roughly 55 times looser: it expects a block every 10 minutes, not every tenth of a second. |
Constants used, and where they live
| Constant | Value | Source |
|---|---|---|
| Mainnet genesis | DAA score 0, timestamp 1,637,609,671,037 ms (22 November 2021, UTC) | consensus/core/src/config/genesis.rs, GENESIS.timestamp |
| Target block time, pre-Crescendo | pre_crescendo_target_time_per_block = 1000 ms (1 block/second) | consensus/core/src/config/params.rs, mainnet MAINNET_PARAMS |
| Crescendo activation | DAA score 110,165,000, projected 5 May 2025, 15:00 UTC | consensus/core/src/config/params.rs, crescendo_activation; date from Kaspa's own activation announcement |
| Target block time, post-Crescendo | target_time_per_block = 100 ms (10 blocks/second) | consensus/core/src/config/bps.rs, BlockrateParams::new::<10>() in MAINNET_PARAMS |
| Toccata mainnet activation | DAA score 474,165,565, roughly 30 June 2026, 16:15 UTC | rusty-kaspa v2.0.0 release notes; see this site's claim fact-check |
| Past-median-time averaging frame, Kaspa | AVERAGE_FRAME_SIZE = 11 timestamps | consensus/src/processes/past_median_time.rs |
| Timestamp deviation tolerance, Kaspa | TIMESTAMP_DEVIATION_TOLERANCE = 132 seconds | consensus/core/src/config/constants.rs |
| Median-time window, Bitcoin | nMedianTimeSpan = 11 blocks | bitcoin/bitcoin, src/chain.h |
| Future-block tolerance, Bitcoin | MAX_FUTURE_BLOCK_TIME = 7,200 seconds (2 hours) | bitcoin/bitcoin, src/chain.h |
Sources
- kaspanet/rusty-kaspa, consensus crate.
- KIP-0004, Sparse Difficulty Windows.
- rusty-kaspa v2.0.0 release notes.
- Kaspa's Crescendo activation announcement.
- bitcoin/bitcoin,
src/chain.h,src/validation.cpp.
Models the rules above; does not read a live node. A real explorer or node is always the authority.
Get it right
The careful version holds up better
Six topics, the sourced phrasing and the wrong version to avoid
| Topic | Use | Avoid |
|---|---|---|
| Code origin | Original Kaspad was Golang and source-backed as an adaptation of btcd. | Bitcoin Core 0.19, unless a durable source is added. |
| DAGLabs | DAGLabs paid for and ran pre-mainnet work; public sources differ on 2017 versus 2018 dating. | A single exact founding date with no caveat. |
| Polychain | Polychain belongs in the VC-funded DAGLabs backstory. Premine and pre-sale claims need their own evidence on token allocation. | Ignoring Polychain context or treating it as proof of a premine. |
| Fair launch | No genesis premine or genesis founder/company/foundation allocation is shown in genesis.rs. Initial supply was emitted through mining, including the separate DAGLabs/core-developer post-launch estimate. | Treating genesis code as proof about presales, funding, later holdings, a perfect spread of coins, or no early contributor mining. |
| Business failure | Hardware, presale, and startup paths all fell through before the plain fair launch. | Bankruptcy language unless a stronger source says bankruptcy. |
| Black Tuesday | A November 2021 crash, repaired by a hard fork whose new genesis carried the UTXO set of the last valid block. | A two-week halt. The commit, the genesis timestamp, and the post itself all put the outage in days. |
Sources, with what each backs
- Polychain Capital
- Investing.com April 2021 launch article
- Guy Corem testnet note
- Epicenter episode 192, July 2017
- Rethink Trust 2018 interview
- Uphold Institutional interview recap
- Hashdag raw archive
- Kaspa launch plan: responding to reality
- Kaspa (Black Tuesday)
- Hackernoon interview with Yonatan Sompolinsky
- Kaspa Wiki prehistory page
- Bitcoin Takeover S16 E41
- Kaspad hard-fork commit #1856
- rusty-kaspa genesis.rs
- DBLP: PHANTOM: A Scalable BlockDAG Protocol
- rusty-kaspa GitHub
- Rusty Kaspa v1.0.0 release
- Shai Wyborski's dust-attack post-mortem
- KIP-9 raw file