Skip to content
Satoshi Gazette
Data DeskDated snapshot

Nodes & Releases

Which software the reachable nodes in one research monitor say they run, and whether bitcoincore.org still maintains it.

Which software the reachable clearnet nodes KIT was connected to run

87.2%

of the 8,946 peers KIT’s monitor was connected to at advertised Bitcoin Core: about, because a node can advertise any user agent

Share of peers by the software they advertise: all connected peers, and those whose connection opened within 24 hours
SoftwareAll8,946Within 24 h2,045
Bitcoin Core87.2%7,79887.5%1,789
Bitcoin Knots11.2%1,00311.5%235
btcd0.2%190.0%0
Other software0.8%730.8%16
Unknown user agent0.6%530.2%5

Bitcoin Knots peers, by the service flags they announce

Knots peers · 1,003

Bitcoin Knots peers, and all connected peers, by the Knots service flags they announced
Flags announcedKnots1,003All peers8,946
BLAKE2b flag40.7%4084.6%410
Reduced-data flag only13.3%1331.6%142
Neither flag46.1%46293.2%8,341
Flags not readable0.0%00.6%53

Knots’ source defines the BLAKE2b flag as its BLAKE2b hard-fork rules, reduced-data rules included, so a peer announcing both flags counts as BLAKE2b. Flags are self-announced: a node can set any bit, and the desk cannot see which chain a peer follows. The chain the desk’s figures describe →

Most reachable nodes in the snapshot say they run Bitcoin Core. Bitcoin Knots is the next largest. Since 29.3.knots20260508 its releases include the BIP 110 soft fork, and since 29.4.1 a hard fork to BLAKE2b proof of work; Bitcoin Core includes neither.

Clearnet only: no Tor, I2P or non-listening nodes. “Within 24 h” keeps connections begun in the prior day and over-weights nodes that reconnect often.

Calculation + Heuristic · rules: self-reported user agents ·KIT KASTEL DSN Bitcoin Network Monitor (CC BY 4.0 ↗), aggregated by Satoshi Gazette ·snapshot , not yet a daily series ·KIT snapshot ↗

Dates, sources & limits

Dataset sg-node-software, method 1.1.0. Headline population, set on 1 Oct 2026: all connected peers, with the subset whose connection opened within 24 hours beside it.

Each KIT snapshot lists the peers its monitor was connected to when the snapshot was taken, over IPv4 and IPv6 only (no Tor or I2P). KIT documents lastConnect as the beginning of the last connection to the peer, so an old lastConnect marks a long-held connection, not a stale record: peers leave the snapshot when their connection ends, and the protocol latency and relay counts of long-held connections keep changing from one daily snapshot to the next. The connected population is every peer in the snapshot. The opened_24h population keeps only peers whose current connection began within 24 hours of the snapshot; it is recorded beside the connected population, not instead of it, because it over-weights peers that reconnect often.

Each peer is classified by the user agent it advertised, using the rules in ua_rules, first match wins. User agents are self-reported and a node can advertise any string, so the shares count what nodes say they run.

  1. unknown: No user agent, or one not in the BIP 14 form /name:version/.
  2. btcd: A btcd:<version> token anywhere, e.g. /btcwire:0.5.0/btcd:0.26.2/.
  3. knots: First token Satoshi:<version> with a Knots:<version> token after it, e.g. /Satoshi:29.4.2/Knots:20260508/. Comments in parentheses and later tokens are ignored.
  4. core: Satoshi:<version> as the only name:version token. Comments in parentheses, which Core's -uacomment option adds, are ignored.
  5. other: Any other well-formed user agent: Satoshi-led strings with a further name:version token (modified builds such as /Satoshi:29.4/Purity:1.0.0/), look-alikes such as /OracleKnots:29.4.2/, and other software.

Each connected peer is also sorted by two service flags in the version message it sent, which KIT records as one services number: NODE_BLAKE2B (bit 28), which Bitcoin Knots' source defines as a node enforcing its BLAKE2b hard-fork rules (BLAKE2b proof of work and the reduced-data rules), and NODE_REDUCED_DATA (bit 27), a node enforcing the reduced-data rules of BIP 110 (src/protocol.h at tag v29.4.2.knots20260508). Bitcoin Core's protocol.h defines neither bit. A peer announces the BLAKE2b flag only, the reduced-data flag only, both or neither; a peer whose services number is missing or unreadable is unknown, never neither. The split is counted over all connected peers and over the Knots peers among them. A flag, like a user agent, is the node's own claim: a node can set any bit, and KIT's file records no chain tip for a peer, so the split counts what peers announce, not which chain they follow. A row recorded before this rule (method 1.1.0) carries the split only when the same KIT snapshot, re-read, matches the row's sha256 and re-derives every count the row holds; otherwise its service_flags is null.

Rows store counts only. A share is printed to one decimal place when its population holds at least 1,000 nodes and to a whole percent below that, so the last printed digit never stands for less than one node.

Snapshot 20260930_121329, KIT’s clock read at UTC+2. File sha256 c73cbef5c4c2a6300f249151c1929aa5f4fd6b534d3418fd68437599c80e3234, so the row can be checked against KIT’s copy.

Per-peer records reduced to daily counts by implementation, IP version, Bitcoin Core release line and two announced service flags, and aggregated by Satoshi Gazette; the opened_24h population is additionally filtered to connections that began within 24 hours of the snapshot. No per-peer data is republished. Cite as: Neudecker, Till; Grundmann, Matthias; Hartenstein, Hannes. Bitcoin Peer-To-Peer Network Monitoring. Zenodo. doi:10.5281/zenodo.14627525.

Snapshots recorded so far

One row per KIT snapshot day recorded, kept as filed; a day not recorded is listed in its place with the reason. The series is in a seven-day trial before it updates daily, so this page shows the newest recorded snapshot, not a live reading.

KIT snapshots recorded: peers in each population and the Core and Knots shares
Snapshot (UTC)ConnectedWithin 24 hCoreKnots
8,9462,04587.2%11.2%
9,0002,00486.9%11.5%
KIT's file held exactly 9,000 peers; this may be a cap, asked of KIT
8,9511,87987.0%11.3%

Shares are of all connected peers. A day is held and nothing is written when: the newest snapshot is more than 48 hours old by KIT's clock; the file is under 1 MB or is not JSON; any record lacks a readable lastConnect or has one after the snapshot; the clock offset cannot be derived; the snapshot holds fewer than 1,000 peers; a population's count is outside ±25% of the median of the previous seven rows (once three rows exist); or peers with no identifiable user agent are 2% or more of either population.

Is it maintained? Bitcoin Core among KIT’s connected peers

56.4%

of the 7,798 Bitcoin Core peers ran a release line bitcoincore.org still maintains

All connected Core peers · 7,798

Bitcoin Core peers by the status of their release line: all connected, and those whose connection opened within 24 hours
Release lineAll Core7,798Within 24 h1,789
Maintained56.4%4,39844.9%804
Past end of life41.8%3,25754.4%973
Not yet released1.8%1390.7%12
Not in the table0.1%40.0%0

41.8% ran a line past its end of life, which gets no further fixes, security fixes included; among connections opened within 24 hours, 54.4%.

The version is the one a node says it runs; the lifecycle covers Bitcoin Core only, so Knots is not classified.

Calculation + Heuristic · rules: self-reported user agents ·KIT snapshot , not yet a daily series ·lifecycle table read  ·lifecycle table ↗

Dates, sources & limits

Core peers are counted by release line and classified against content/data/core-lifecycle.json (bitcoincore.org/en/lifecycle) as at the snapshot date: maintained, end of life, unreleased (a line not yet released on that date, or an x.99 development build) or not listed (a line the table does not carry, or a version that does not parse). Knots and other implementations are not classified, because bitcoincore.org's lifecycle covers Bitcoin Core only.

This snapshot was classified with the table as read on 1 Oct 2026. KIT’s data is CC BY 4.0, aggregated by Satoshi Gazette.

Core release lines among KIT’s connected peers

3release lines maintained

31.x, 30.x and 29.x, by the lifecycle table read ; 32.x not yet released

Tables, with every advisory
Bitcoin Core release lines: release, end of life, status and peers in the snapshot
LineReleasedEnd of lifeStatusPeers
32.xTBAafter v35.0Not released10
31.x19 Apr 2026after v34.0Maintained3,000
30.x10 Oct 2025after v33.0Maintained748
29.x14 Apr 2025after v32.0Maintained650
28.x2 Oct 202419 Apr 2026Ended1,045
27.x16 Apr 202410 Oct 2025Ended513
26.x6 Dec 202314 Apr 2025Ended184
25.x18 May 20232 Oct 2024Ended951
24.x24 Nov 20222 Apr 2024Ended99
23.x25 Apr 20221 Dec 2023Ended53
22.x13 Sep 20211 Apr 2023Ended156
0.21.x15 Jan 20211 Oct 2022Ended71
0.20.x3 Jun 20201 Feb 2022Ended96
0.19.x24 Nov 20191 Aug 2021Ended11
0.18.x2 May 20191 Feb 2021Ended30
0.17.x3 Oct 20181 Aug 2020Ended18
0.16.x26 Feb 20181 Feb 2020Ended6
0.15.x15 Sep 20171 Aug 2019Ended4
0.14.x8 Mar 20171 Feb 2019Ended5
0.13.x23 Aug 20161 Aug 2018Ended5
0.12.x23 Feb 201628 Feb 2018Ended5
0.11.x12 Jul 20151 Aug 2017Ended3
0.10.x16 Feb 201528 Feb 2017Ended0
0.9.x19 Mar 201428 Feb 2016Ended0
0.8.x19 Feb 201331 Dec 2015Ended2

bitcoincore.org's table lists release and end-of-life dates only. Under the page's policy the latest three majors are maintained, and a line leaves maintenance when it reaches end of life; no separate maintenance-end date is published, so none is recorded. Where the table gives a condition instead of a date ('after v34.0'), the line stays maintained until the table dates that major's release. The date is never projected. No maintenance-end mark is drawn.

Security advisories

The past advisories as bitcoincore.org's index lists them, newest first. The date is the post's, from its URL; severity and fixed-in versions live in each post and are not parsed here.

Bitcoin Knots releases

Releases in the Bitcoin Knots GitHub releases feed, which carries only the most recent entries; releases that have left the feed stay as last recorded. The feed date is GitHub's time for the entry's last update, which can be later than the day the release was published. The date inside a Knots tag is its version date, not a release date.

A release line past its end of life gets no further fixes, security fixes included.

A maintained line ends open and hatched: its end of life waits on a later release, never projected. Not drawn: 129 peers on development builds and 4 on unlisted versions.

Issuer · bitcoincore.org, read  ·Knots feed, read  ·peers: KIT snapshot  ·lifecycle table ↗

Reproduce this page2 datasets: 2 committed files, 2 checksums and 2 builders

The builders are files in the Gazette’s repository, which is not public, so a reader cannot run the commands under Rebuild today. Each is printed so the builder is named beside the rule it applies and the sources it reads.

A dry run reads the sources as they stand, checks the result with the site’s own loader and prints one line of JSON saying whether the committed file would change. It leaves the committed file as it is; without --dry-run the same command writes it. Not every run builds the file again from nothing: some builders keep what the committed file holds and read only what is new, and each such entry says so under its command.

Downloads carries the same data: each file there is built from the committed file named here, and each dataset below says what its file holds. Download one, take its sha256 and set it against the one printed below and in the dataset’s metadata file.shasum -a 256 <file>

  • Node software on reachable nodes

    Dataset ID sg-node-software · method 1.1.0

    Committed file
    content/data/series/node-software.json
    Dated

    Latest record 30 Sep 2026, 12:13 UTC

    Dated snapshot · KIT snapshot of 30 Sep 2026

    On Downloads

    Node software on reachable nodes, sg-node-software.json · 10 kB

    It holds the contents of content/data/series/node-software.json.

    Its sha256 is 101b3a0812424abf62b67c4ea29ab56bc7a60f6355378a1fe67b18c7c3efc53b

    sg-node-software.metadata.json carries the same checksum.

    Node software on reachable nodes: Its entry on Downloads →

    Rebuild

    Builder scripts/build-node-software.mjs

    node scripts/build-node-software.mjs --dry-run

    The run adds the snapshot days the file does not hold yet, at most three a run. A day already recorded is not read again.

    Refreshed by

    By hand so far, with the desk’s own builder and validator. The data job’s dry run files what it would write and publishes nothing

    Its rule

    The headline counts every reachable clearnet peer KIT’s monitor was connected to when the snapshot was taken; the peers whose connection began within 24 hours sit beside it, not instead of it, because they over-weight nodes that reconnect often. User agents are self-reported and sorted by published rules, first match wins, so the shares count what nodes say they run. The two Knots service flags are counted the same way, as peers announce them: a missing or unreadable services number is unknown, never neither, and no flag says which chain a peer follows. A day is held and nothing is written when the newest snapshot is more than 48 hours old, holds fewer than 1,000 peers or moves more than 25% from the median of the rows before it, or when 2% or more of peers announce no readable software. Rows hold counts only, and a share is printed to one decimal only for 1,000 nodes or more.

    Node software on reachable nodes: Its entry in the method →

  • Bitcoin Core release lifecycle

    Dataset ID sg-core-lifecycle · method 1.0.0

    Committed file
    content/data/core-lifecycle.json
    Dated

    Latest record 1 Oct 2026, 09:44 UTC

    Dated snapshot · read 1 Oct 2026

    On Downloads

    Bitcoin Core release lifecycle, sg-core-lifecycle.json · 18 kB

    It holds the contents of content/data/core-lifecycle.json.

    Its sha256 is e8f2aa76c821012288f89bebcff0e64aca64c0abec680506c3624dcf42388bd4

    sg-core-lifecycle.metadata.json carries the same checksum.

    Bitcoin Core release lifecycle: Its entry on Downloads →

    Rebuild

    Builder scripts/build-core-lifecycle.mjs

    node scripts/build-core-lifecycle.mjs --dry-run

    The run reads the three sources again. A Knots release that has left GitHub’s feed, which carries only the newest entries, is kept as last recorded.

    Refreshed by

    By hand so far, with the desk’s own builder and validator. The data job’s dry run files what it would write and publishes nothing

    Its rule

    Release lines must run newest first with their dates in order, and no advisory or Knots tag may repeat. A date the table does not publish stays blank: a line it marks “after v34.0” stays maintained until that release is dated, never projected. The date in a Knots tag is its version date, not a release date, and GitHub’s feed time is kept apart from it.

    Bitcoin Core release lifecycle: Its entry in the method →