Data dictionary
What every field in the desk’s files holds: its type, its unit, what it means, and what it means when it is empty.
Empty values
An empty value is never 0
An empty value is a JSON null, a key a row leaves out, an empty text, an empty list or an empty CSV cell. None of them is ever written as 0: a 0 in a file is a counted or a stated zero, and the desk reads it as one.
Every field below names one of these five and says what it means in that field, or says the field is never empty.
- not disclosed
- The source could have stated it and did not. The gap is the source’s.
- not read
- The desk has not read it, or did not record it. The gap is the desk’s, and a later read may fill it.
- not applicable
- The field has no meaning for this row, so there is nothing to state.
- not in this dataset
- Left out of this file on purpose: another dataset holds it, or it is outside what the file covers.
- none listed
- A list with nothing in it: the record was read and names none. That is a known nothing, not an unknown.
- never empty
- A JSON field holds a value wherever the group or the list item it sits in is present; a group or a list that can itself be empty has a row of its own, which says when. A CSV column holds a value in every row. The desk’s tests check both against the committed data.
Reading a row
Paths, types, units and marks
A JSON field is named by its path. rows[].day is day in each item of rows; [] is every item of a list, [2] the third place in a row written as a list, and a part in braces, {line}, a key that is itself data. A group of fields has a row of its own only where the whole group can be empty.
A CSV column carries the note the downloads page prints for it, and names the JSON field it is taken from.
Types
- text
- Text.
- whole number
- A whole number.
- decimal text
- An exact decimal written as text, so no digit passes through a float.
- true/false
- true or false.
- list
- A list. Its unit is the unit of each item; a list of groups or of rows has none.
- group
- A group of named fields. A group has a row of its own only where it can be empty.
Units
- BTC
- Bitcoin, to at most eight places.
- sats
- Satoshis: 100,000,000 to the bitcoin.
- blocks
- A number of blocks.
- height
- A block height, counted from the genesis block at 0.
- count
- A number of the things the field names. 0 is a count of none.
- index
- A place in an order, counted from 0 or from 1 as the field says.
- percent
- A percentage.
- ratio
- A number with no unit: a difficulty, or one target over another.
- minutes
- Minutes.
- Unix seconds
- Seconds since 1 January 1970, UTC.
- ISO date
- A day, as YYYY-MM-DD.
- ISO date-time
- A moment in UTC, as YYYY-MM-DDTHH:MM:SSZ.
- hash
- A digest in lowercase hex: a block hash, a sha256 or a git commit.
- hex
- A number in lowercase hexadecimal digits.
- URL
- A web address. A part in braces, such as {height}, stands for a value.
- identifier
- A name, number or code that picks out one thing: an accession number, a ticker, a version.
- set value
- One of a short list of words the file’s loader allows; the meaning names them.
- none
- No unit: words, true or false, a group, or a list of groups or of rows.
Marks on a figure
- lower bound
- A floor on disclosed positions, never an estimate: only what a holder disclosed is counted, each as of its own date, and what nobody disclosed is left out.
- cut
- Cut to the places shown, never rounded, so it is never above the exact value.
- approximate
- The filing’s own “approximately”. The number is kept as filed, and the row’s approximate field says when the filing used the word.
- as stated
- Rests on a holder’s or an issuer’s own statement, as of the date that statement gives. The desk did not check it against the chain.
- heuristic
- Rests on a labelling rule, not a record: a pool label, or what a node says it runs.
- one source
- Chain data read from one operator and not matched on a second. Where that is so of some rows only, the field says which.
Datasets
Every field, dataset by dataset
Node software on reachable nodes
Every peer in KIT’s network snapshot, by the software it announces.
- Node software on reachable nodes: Files, licence and a line to cite →
- Node software on reachable nodes: Sources, checks and terms →
- Node software on reachable nodes: Where the desk prints it →
JSON fieldssg-node-software.json
| Field | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| schema_ | text | identifier | The name and version of the file’s layout; the site’s loader refuses any other. | Never empty |
| dataset | text | identifier | The dataset’s ID in the register. | Never empty |
| methodology_ | text | identifier | The version of the method the file was built with. | Never empty |
| headline_ | text | set value | The population the pages lead with: connected or opened_24h. | Never empty |
| populations. | text | no unit | What the connected population counts, in the file’s own words. | Never empty |
| populations. | text | no unit | What the opened_24h population counts, in the file’s own words. | Never empty |
| source. | text | no unit | The name of KIT’s monitor, the one source of the counts. | Never empty |
| source. | text | no unit | The research group that runs the monitor. | Never empty |
| source. | text | URL | KIT’s page describing its data. | Never empty |
| source. | text | URL | KIT’s listing of its snapshot files. | Never empty |
| source. | text | URL | The address of one snapshot file; {snapshot} stands for a row’s snapshot. | Never empty |
| source. | text | no unit | The licence KIT publishes its snapshots under. | Never empty |
| source. | text | URL | Address of the licence KIT publishes its snapshots under. | Never empty |
| source. | text | identifier | The DOI of KIT’s dataset. | Never empty |
| source. | text | no unit | How KIT’s dataset is cited, the credit its licence asks for. | Never empty |
| source. | text | no unit | What the desk changed in KIT’s records, which the licence asks it to say. | Never empty |
| lifecycle_ | text | identifier | The Gazette file the Core release lines are classified against: the sg-core-lifecycle dataset. | Never empty |
| ua_ | list | no unit | The rules that sort a user agent into an implementation, in order; the first match wins. | Never empty |
| ua_ | text | set value | What the rule sorts a peer as: core, knots, btcd, other, unknown. | Never empty |
| ua_ | text | no unit | The rule, in words. | Never empty |
| method. | text | no unit | The file’s own note on which peers each population holds. | Never empty |
| method. | text | no unit | The file’s own note on how KIT’s local clock is turned into UTC. | Never empty |
| method. | text | no unit | The file’s own note on sorting peers by the user agent they announce. | Never empty |
| method. | text | no unit | The file’s own note on classifying Core release lines as maintained or end of life. | Never empty |
| method. | text | no unit | The file’s own note on counting the two Knots service flags. | Never empty |
| method. | text | no unit | The file’s own note on how a share is printed from the counts. | Never empty |
| method. | text | no unit | The file’s own note on which population the headline uses, and since when. | Never empty |
| method. | text | no unit | The file’s own note on when a day is held and nothing is written. | Never empty |
| gaps | list | no unit | The days since the first row that hold no row, oldest first, each with why. | not applicable Every day since the first row is recorded. The key is then left out. |
| gaps[] | text | ISO date | A UTC date the series holds no row for. | Never empty |
| gaps[] | text | no unit | Why: no KIT snapshot that day, or the editor’s reason for releasing a day that stayed held. | Never empty |
| gaps[] | text | ISO date-time | When the day was written down as not recorded. | Never empty |
| rows | list | no unit | One item per KIT snapshot day recorded, oldest first. | Never empty |
| rows[] | text | ISO date | The snapshot’s UTC date. | Never empty |
| rows[] | text | identifier | KIT’s name for the snapshot file: its time in UTC, as YYYYMMDD_HHMMSS. | Never empty |
| rows[] | text | ISO date-time | The snapshot’s time in UTC, as a timestamp. | Never empty |
| rows[] | whole number | minutes | Minutes KIT’s lastConnect clock ran ahead of UTC, derived from the file. | Never empty |
| rows[] | text | ISO date | The day of the Core lifecycle table the row was classified with. | Never empty |
| rows[] | text | hash | sha256 of KIT’s snapshot file as served, so the row can be checked against KIT’s copy. | Never empty |
| rows[] | whole number | count | All connected peers: peers counted. | Never empty |
| rows[] | whole number | count | All connected peers: reached over IPv4. | Never empty |
| rows[] | whole number | count | All connected peers: reached over IPv6. | Never empty |
| rows[] | whole number | count | All connected peers: KIT recorded no IP version. | Never empty |
| rows[] | whole number | count | All connected peers: user agent sorted as core by ua_rules.heuristic | Never empty |
| rows[] | whole number | count | All connected peers: user agent sorted as knots by ua_rules.heuristic | Never empty |
| rows[] | whole number | count | All connected peers: user agent sorted as btcd by ua_rules.heuristic | Never empty |
| rows[] | whole number | count | All connected peers: user agent sorted as other by ua_rules.heuristic | Never empty |
| rows[] | whole number | count | All connected peers: no user agent the rules can read.heuristic | Never empty |
| rows[] | whole number | count | All connected peers: Core peers on a release line that was maintained on the snapshot day.heuristic | Never empty |
| rows[] | whole number | count | All connected peers: Core peers on a release line that was end of life on the snapshot day.heuristic | Never empty |
| rows[] | whole number | count | All connected peers: Core peers on a release line not yet released on the snapshot day, or on an x.99 development build.heuristic | Never empty |
| rows[] | whole number | count | All connected peers: Core peers on a release line the life cycle table does not carry, or announcing a version that does not parse.heuristic | Never empty |
| rows[] | whole number | count | Core peers announcing a version on the release line the key names, such as 31.x; development counts x.99 builds and unparsed counts versions that do not parse.heuristic | Never empty |
| rows[] | whole number | count | Peers whose connection began within 24 hours of the snapshot: peers counted. | Never empty |
| rows[] | whole number | count | Peers whose connection began within 24 hours of the snapshot: reached over IPv4. | Never empty |
| rows[] | whole number | count | Peers whose connection began within 24 hours of the snapshot: reached over IPv6. | Never empty |
| rows[] | whole number | count | Peers whose connection began within 24 hours of the snapshot: KIT recorded no IP version. | Never empty |
| rows[] | whole number | count | Peers whose connection began within 24 hours of the snapshot: user agent sorted as core by ua_rules.heuristic | Never empty |
| rows[] | whole number | count | Peers whose connection began within 24 hours of the snapshot: user agent sorted as knots by ua_rules.heuristic | Never empty |
| rows[] | whole number | count | Peers whose connection began within 24 hours of the snapshot: user agent sorted as btcd by ua_rules.heuristic | Never empty |
| rows[] | whole number | count | Peers whose connection began within 24 hours of the snapshot: user agent sorted as other by ua_rules.heuristic | Never empty |
| rows[] | whole number | count | Peers whose connection began within 24 hours of the snapshot: no user agent the rules can read.heuristic | Never empty |
| rows[] | whole number | count | Peers whose connection began within 24 hours of the snapshot: Core peers on a release line that was maintained on the snapshot day.heuristic | Never empty |
| rows[] | whole number | count | Peers whose connection began within 24 hours of the snapshot: Core peers on a release line that was end of life on the snapshot day.heuristic | Never empty |
| rows[] | whole number | count | Peers whose connection began within 24 hours of the snapshot: Core peers on a release line not yet released on the snapshot day, or on an x.99 development build.heuristic | Never empty |
| rows[] | whole number | count | Peers whose connection began within 24 hours of the snapshot: Core peers on a release line the life cycle table does not carry, or announcing a version that does not parse.heuristic | Never empty |
| rows[] | group | no unit | The peers sorted by the two service flags Bitcoin Knots defines, as each peer announced them.heuristic | not read The row was recorded before the flags were counted, and its snapshot has not been read again under the proof the method asks for. |
| rows[] | whole number | count | All connected peers announcing the BLAKE2b flag only.heuristic | Never empty |
| rows[] | whole number | count | All connected peers announcing the reduced-data flag only.heuristic | Never empty |
| rows[] | whole number | count | All connected peers announcing both flags.heuristic | Never empty |
| rows[] | whole number | count | All connected peers announcing neither flag.heuristic | Never empty |
| rows[] | whole number | count | All connected peers whose services number was missing or unreadable: unknown, never neither.heuristic | Never empty |
| rows[] | whole number | count | Knots peers announcing the BLAKE2b flag only.heuristic | Never empty |
| rows[] | whole number | count | Knots peers announcing the reduced-data flag only.heuristic | Never empty |
| rows[] | whole number | count | Knots peers announcing both flags.heuristic | Never empty |
| rows[] | whole number | count | Knots peers announcing neither flag.heuristic | Never empty |
| rows[] | whole number | count | Knots peers whose services number was missing or unreadable: unknown, never neither.heuristic | Never empty |
| rows[] | true/false | no unit | true when the snapshot held exactly 9,000 peers, which may be a cap on KIT’s file rather than a count of the network. | not applicable The snapshot held another number of peers, so no cap is in question. The key is then left out, which reads as false: the JSON never writes false, and the CSV does. |
CSV columnssg-node-software.csv
One row per KIT snapshot day recorded. Core peers by release line vary by day and are in the JSON only.
| Column | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| dayJSON: rows[] | text | ISO date | The snapshot’s UTC date. | Never empty |
| snapshotJSON: rows[] | text | identifier | KIT’s name for the snapshot file, its time in UTC. | Never empty |
| snapshot_ | text | ISO date-time | The same time as an ISO 8601 timestamp. | Never empty |
| clock_ | whole number | minutes | Minutes KIT’s lastConnect clock ran ahead of UTC, derived from the file. | Never empty |
| lifecycle_ | text | ISO date | The day of the Core lifecycle table the row was classified with. | Never empty |
| sha256JSON: rows[] | text | hash | sha256 of KIT’s snapshot file as served. | Never empty |
| possible_ | true/false | no unit | true when the snapshot held exactly 9,000 peers, which may be a cap on KIT’s file. | Never empty |
| connected_ | whole number | count | All connected peers: peers counted. | Never empty |
| connected_ | whole number | count | All connected peers: reached over IPv4. | Never empty |
| connected_ | whole number | count | All connected peers: reached over IPv6. | Never empty |
| connected_ | whole number | count | All connected peers: IP version not recorded. | Never empty |
| connected_ | whole number | count | All connected peers: user agent sorted as core by the rules in the JSON.heuristic | Never empty |
| connected_ | whole number | count | All connected peers: user agent sorted as knots by the rules in the JSON.heuristic | Never empty |
| connected_ | whole number | count | All connected peers: user agent sorted as btcd by the rules in the JSON.heuristic | Never empty |
| connected_ | whole number | count | All connected peers: user agent sorted as other by the rules in the JSON.heuristic | Never empty |
| connected_ | whole number | count | All connected peers: user agent sorted as unknown by the rules in the JSON.heuristic | Never empty |
| connected_ | whole number | count | All connected peers: Core peers on a release line that was maintained on the snapshot day.heuristic | Never empty |
| connected_ | whole number | count | All connected peers: Core peers on a release line that was end of life on the snapshot day.heuristic | Never empty |
| connected_ | whole number | count | All connected peers: Core peers on a release line not yet released on the snapshot day, or on an x.99 development build.heuristic | Never empty |
| connected_ | whole number | count | All connected peers: Core peers on a release line the life cycle table does not carry, or announcing a version that does not parse.heuristic | Never empty |
| opened_ | whole number | count | Peers whose connection began within 24 hours: peers counted. | Never empty |
| opened_ | whole number | count | Peers whose connection began within 24 hours: reached over IPv4. | Never empty |
| opened_ | whole number | count | Peers whose connection began within 24 hours: reached over IPv6. | Never empty |
| opened_ | whole number | count | Peers whose connection began within 24 hours: IP version not recorded. | Never empty |
| opened_ | whole number | count | Peers whose connection began within 24 hours: user agent sorted as core by the rules in the JSON.heuristic | Never empty |
| opened_ | whole number | count | Peers whose connection began within 24 hours: user agent sorted as knots by the rules in the JSON.heuristic | Never empty |
| opened_ | whole number | count | Peers whose connection began within 24 hours: user agent sorted as btcd by the rules in the JSON.heuristic | Never empty |
| opened_ | whole number | count | Peers whose connection began within 24 hours: user agent sorted as other by the rules in the JSON.heuristic | Never empty |
| opened_ | whole number | count | Peers whose connection began within 24 hours: user agent sorted as unknown by the rules in the JSON.heuristic | Never empty |
| opened_ | whole number | count | Peers whose connection began within 24 hours: Core peers on a release line that was maintained on the snapshot day.heuristic | Never empty |
| opened_ | whole number | count | Peers whose connection began within 24 hours: Core peers on a release line that was end of life on the snapshot day.heuristic | Never empty |
| opened_ | whole number | count | Peers whose connection began within 24 hours: Core peers on a release line not yet released on the snapshot day, or on an x.99 development build.heuristic | Never empty |
| opened_ | whole number | count | Peers whose connection began within 24 hours: Core peers on a release line the life cycle table does not carry, or announcing a version that does not parse.heuristic | Never empty |
| flags_ | whole number | count | All connected peers announcing the BLAKE2b flag only; empty when the split was not counted.heuristic | not read The row was recorded before the flags were counted, and its snapshot has not been read again under the proof the method asks for. |
| flags_ | whole number | count | All connected peers announcing the reduced-data flag only; empty when the split was not counted.heuristic | not read The row was recorded before the flags were counted, and its snapshot has not been read again under the proof the method asks for. |
| flags_ | whole number | count | All connected peers announcing both flags; empty when the split was not counted.heuristic | not read The row was recorded before the flags were counted, and its snapshot has not been read again under the proof the method asks for. |
| flags_ | whole number | count | All connected peers announcing neither flag; empty when the split was not counted.heuristic | not read The row was recorded before the flags were counted, and its snapshot has not been read again under the proof the method asks for. |
| flags_ | whole number | count | All connected peers whose services number was missing or unreadable: unknown, never neither; empty when the split was not counted.heuristic | not read The row was recorded before the flags were counted, and its snapshot has not been read again under the proof the method asks for. |
| flags_ | whole number | count | Knots peers announcing the BLAKE2b flag only; empty when the split was not counted.heuristic | not read The row was recorded before the flags were counted, and its snapshot has not been read again under the proof the method asks for. |
| flags_ | whole number | count | Knots peers announcing the reduced-data flag only; empty when the split was not counted.heuristic | not read The row was recorded before the flags were counted, and its snapshot has not been read again under the proof the method asks for. |
| flags_ | whole number | count | Knots peers announcing both flags; empty when the split was not counted.heuristic | not read The row was recorded before the flags were counted, and its snapshot has not been read again under the proof the method asks for. |
| flags_ | whole number | count | Knots peers announcing neither flag; empty when the split was not counted.heuristic | not read The row was recorded before the flags were counted, and its snapshot has not been read again under the proof the method asks for. |
| flags_ | whole number | count | Knots peers whose services number was missing or unreadable: unknown, never neither; empty when the split was not counted.heuristic | not read The row was recorded before the flags were counted, and its snapshot has not been read again under the proof the method asks for. |
Bitcoin Core release lifecycle
bitcoincore.org’s support windows and advisories, with Knots releases beside them.
- Bitcoin Core release lifecycle: Files, licence and a line to cite →
- Bitcoin Core release lifecycle: Sources, checks and terms →
- Bitcoin Core release lifecycle: Where the desk prints it →
JSON fieldssg-core-lifecycle.json
| Field | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| schema_ | text | identifier | The name and version of the file’s layout; the site’s loader refuses any other. | Never empty |
| dataset | text | identifier | The dataset’s ID in the register. | Never empty |
| methodology_ | text | identifier | The version of the method the file was built with. | Never empty |
| observed_ | text | ISO date-time | When the sources answered: the latest of their three served_at times. | Never empty |
| sources. | text | URL | The address of bitcoincore.org’s life cycle table. | Never empty |
| sources. | text | ISO date-time | The source’s HTTP Date header when it answered: its clock, not the desk’s. | Never empty |
| sources. | text | ISO date-time | The source’s Last-Modified header. | not disclosed The server sent no Last-Modified header. |
| sources. | text | no unit | The licence the source is published under. | Never empty |
| sources. | text | URL | Address of the licence the source is published under. | Never empty |
| sources. | text | URL | The address of bitcoincore.org’s index of security advisories. | Never empty |
| sources. | text | ISO date-time | The source’s HTTP Date header when it answered: its clock, not the desk’s. | Never empty |
| sources. | text | ISO date-time | The source’s Last-Modified header. | not disclosed The server sent no Last-Modified header. |
| sources. | text | no unit | The licence the source is published under. | Never empty |
| sources. | text | URL | Address of the licence the source is published under. | Never empty |
| sources. | text | URL | The address of the Bitcoin Knots releases feed on GitHub. | Never empty |
| sources. | text | ISO date-time | The source’s HTTP Date header when it answered: its clock, not the desk’s. | Never empty |
| sources. | text | ISO date-time | The source’s Last-Modified header. | not disclosed The server sent no Last-Modified header. |
| sources. | text | no unit | The licence the source is published under. | Never empty |
| sources. | text | URL | Address of the licence the source is published under. | Never empty |
| core_ | list | no unit | One item per Bitcoin Core release line in the life cycle table, newest first. | Never empty |
| core_ | text | identifier | The release line as the table writes it: 31.x, 0.21.x. | Never empty |
| core_ | text | identifier | The line’s major version: 31, 0.21. | Never empty |
| core_ | text | ISO date | The day the table gives for the line’s release. | not disclosed The table gives no release date yet; release_note holds its words instead. |
| core_ | text | no unit | The table’s own words where it gives no release date, such as TBA. | not applicable The table gives a release date. |
| core_ | text | ISO date | The day the line leaves maintenance. | not disclosed The table on bitcoincore.org publishes no maintenance-end date, so none is recorded for any line. |
| core_ | text | ISO date | The end-of-life date the table publishes. | not disclosed The table gives a condition instead of a date. The date is never projected. |
| core_ | text | no unit | The table’s condition where it gives no date: after v34.0. | not applicable The table gives a date. |
| core_ | text | identifier | The major version whose release ends the line, read from the condition. | not applicable The table gives a date. |
| security_ | list | no unit | One item per advisory in bitcoincore.org’s index, newest first. | Never empty |
| security_ | text | no unit | The advisory’s title, as the index gives it. | Never empty |
| security_ | text | URL | The advisory’s post on bitcoincore.org. | Never empty |
| security_ | text | ISO date | The post’s date, taken from its address. | Never empty |
| security_ | list | identifier | The CVE identifiers in the advisory’s title. | none listed The title names no CVE identifier. |
| knots_ | list | no unit | One item per release in the Bitcoin Knots releases feed on GitHub, newest first; a release that has left the feed stays as last recorded. | Never empty |
| knots_ | text | identifier | The release’s tag. | Never empty |
| knots_ | text | no unit | The release’s title in the feed. | Never empty |
| knots_ | text | URL | The release on GitHub. | Never empty |
| knots_ | text | ISO date-time | The feed’s time for the release entry: GitHub’s clock, not a publication date. | Never empty |
| knots_ | true/false | no unit | true for a release candidate. | Never empty |
| knots_ | text | identifier | The Bitcoin Core version the release is built on, read from the tag. | not disclosed The tag does not name one in the form the desk reads. |
| knots_ | text | ISO date | The Knots version date inside the tag, which is not a release date. | not disclosed The tag carries no date in the form the desk reads. |
| notes. | text | no unit | The file’s own note on why no maintenance-end date is recorded. | Never empty |
| notes. | text | no unit | The file’s own note on a line whose end of life is a condition, not a date. | Never empty |
| notes. | text | no unit | The file’s own note on what the advisory list holds and leaves out. | Never empty |
| notes. | text | no unit | The file’s own note on what the Knots feed carries and how its dates read. | Never empty |
CSV columns
JSON only: the file holds three lists (release lines, security advisories and Knots releases), not one table.
Bitcoin Improvement Proposals by status
Every BIP’s status in the BIP repository’s own words, and the changes the desk has seen.
- Bitcoin Improvement Proposals by status: Files, licence and a line to cite →
- Bitcoin Improvement Proposals by status: Sources, checks and terms →
- Bitcoin Improvement Proposals by status: Where the desk prints it →
JSON fieldssg-bip-status.json
| Field | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| schema_ | text | identifier | The name and version of the file’s layout; the site’s loader refuses any other. | Never empty |
| dataset | text | identifier | The dataset’s ID in the register. | Never empty |
| methodology_ | text | identifier | The version of the method the file was built with. | Never empty |
| observed_ | text | ISO date-time | GitHub’s HTTP Date header when the repository’s commits feed answered: its clock, not the desk’s. | Never empty |
| repository. | text | URL | The BIP repository. | Never empty |
| repository. | text | identifier | The branch read. | Never empty |
| repository. | text | hash | The commit every row was read at. | Never empty |
| repository. | text | ISO date-time | The feed’s time for that commit: GitHub’s clock for when the repository last changed. | Never empty |
| sources. | text | URL | The repository’s commits feed. | Never empty |
| sources. | text | URL | The repository’s index at a commit; {commit} stands for repository.commit. | Never empty |
| sources. | text | URL | One BIP’s file at a commit; {file} stands for a row’s file. | Never empty |
| sources. | text | URL | BIP 3, which sets the statuses. | Never empty |
| sources. | text | no unit | What the desk keeps from the repository, and under what terms. | Never empty |
| method. | text | no unit | The file’s own note on where each status comes from and what it does not say. | Never empty |
| method. | text | no unit | The file’s own note on how the repository is read. | Never empty |
| method. | text | no unit | The file’s own note on when a status change is recorded, and how it is dated. | Never empty |
| method. | text | no unit | The file’s own note on when a row is held, and when a read writes nothing. | Never empty |
| method. | text | no unit | The file’s own note on what the author count counts. | Never empty |
| method. | text | no unit | The file’s own note on numbers the index lists without a document. | Never empty |
| changes_ | text | ISO date | The day of the desk’s first read; changes holds every status change seen since. | Never empty |
| allocated | list | no unit | Numbers the index lists without a document, kept apart from the BIPs that have a status. | none listed The index lists no number without a document. |
| allocated[] | whole number | identifier | A number the index lists without a document. | Never empty |
| allocated[] | text | no unit | The title the index gives the number. | Never empty |
| allocated[] | text | no unit | The index’s own words in its status column. | Never empty |
| bips | list | no unit | One item per BIP the repository’s index links, by number. | Never empty |
| bips[] | whole number | identifier | The BIP’s number. | Never empty |
| bips[] | text | identifier | The BIP’s own file in the repository. | Never empty |
| bips[] | text | no unit | The Title header of the BIP’s preamble. | not read Only on a held row the desk has never been able to read. |
| bips[] | text | set value | The Layer header: one of BIP 123’s layers, as BIP 3 lists them. | not disclosed The preamble has no Layer header; BIP 3 makes it optional. |
| bips[] | text | set value | The Type header: Specification, Informational or Process. | not read Only on a held row the desk has never been able to read. |
| bips[] | text | set value | The Status header (Draft, Complete, Deployed or Closed): the repository’s label, not an endorsement and not an activation; on a held row, the status last recorded. | not read Only on a held row the desk has never been able to read. |
| bips[] | whole number | count | Lines in the Authors header; one line can name more than one person. | not read Only on a held row the desk has never been able to read. |
| bips[] | text | ISO date | The Assigned header: the date the number was assigned. | not read Only on a held row the desk has never been able to read. |
| bips[] | list | identifier | BIP numbers in the Replaces header. | none listed The preamble has no Replaces header. |
| bips[] | list | identifier | BIP numbers in the Proposed-Replacement header. | none listed The preamble has no Proposed-Replacement header. |
| bips[] | group | no unit | Set when the last read could not read the row; its other fields are then what the desk last recorded. | not applicable The row is not held: the last read took it. |
| bips[] | text | ISO date | The day the hold began. | Never empty |
| bips[] | text | no unit | Why the row is held. | Never empty |
| changes | list | no unit | Every status change the desk has seen, each recorded on the day it was seen and never rewritten. | none listed The desk has seen no status change since changes_since. |
| changes[] | text | ISO date | The day the desk saw the change, not the day the repository made it. | Never empty |
| changes[] | whole number | identifier | The BIP’s number. | Never empty |
| changes[] | text | set value | The status the desk had recorded before. | not applicable The desk had recorded no status for the BIP before: it was newly listed, or its row had been held since it was first listed. |
| changes[] | text | set value | The status the desk read. | Never empty |
| changes[] | text | hash | The commit the desk read when it saw the change. | Never empty |
CSV columnssg-bip-status.csv
One row per BIP the repository’s index links, by number. The recorded status changes and the numbers allocated without a document are in the JSON.
| Column | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| numberJSON: bips[] | whole number | identifier | The BIP’s number. | Never empty |
| fileJSON: bips[] | text | identifier | The BIP’s own file in the repository. | Never empty |
| titleJSON: bips[] | text | no unit | The Title header of the BIP’s preamble. | not read Only on a held row the desk has never been able to read. |
| layerJSON: bips[] | text | set value | The Layer header; empty when the preamble names none. | not disclosed The preamble has no Layer header; BIP 3 makes it optional. |
| typeJSON: bips[] | text | set value | The Type header: Specification, Informational or Process. | not read Only on a held row the desk has never been able to read. |
| statusJSON: bips[] | text | set value | The Status header: Draft, Complete, Deployed or Closed. The repository’s label, not an endorsement and not an activation. | not read Only on a held row the desk has never been able to read. |
| authorsJSON: bips[] | whole number | count | Lines in the Authors header; one line can name more than one person. | not read Only on a held row the desk has never been able to read. |
| assignedJSON: bips[] | text | ISO date | The Assigned header: the date the number was assigned. | not read Only on a held row the desk has never been able to read. |
| replacesJSON: bips[] | text | identifier | BIP numbers in the Replaces header, separated by spaces. | none listed The preamble has no Replaces header. |
| proposed_ | text | identifier | BIP numbers in the Proposed-Replacement header, separated by spaces. | none listed The preamble has no Proposed-Replacement header. |
| heldWorked out by the CSV | true/false | no unit | true when the last read could not read the row; its fields are then what the desk last recorded. | Never empty |
| held_ | text | ISO date | The day the hold began; empty when the row is not held. | not applicable The row is not held: the last read took it. |
| held_ | text | no unit | Why the row is held; empty when it is not. | not applicable The row is not held: the last read took it. |
| commitJSON: repository. | text | hash | The repository commit the rows were read at. | Never empty |
| urlWorked out by the CSV | text | URL | The BIP’s file on GitHub at that commit. | Never empty |
Difficulty by retarget period
Every retarget period since genesis, its difficulty exact from the block header.
- Difficulty by retarget period: Files, licence and a line to cite →
- Difficulty by retarget period: Sources, checks and terms →
- Difficulty by retarget period: Where the desk prints it →
JSON fieldssg-difficulty-ledger.json
| Field | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| schema_ | text | identifier | The name and version of the file’s layout; the site’s loader refuses any other. | Never empty |
| methodology_ | text | identifier | The version of the method the file was built with. | Never empty |
| datasets | list | identifier | The two datasets the period file is built for, sg-difficulty-ledger and sg-block-ledger; this download carries the first alone, as method.download says. | Never empty |
| observed_ | text | ISO date-time | When the chain tip was read: an operator’s HTTP Date header, its clock and not the desk’s. | Never empty |
| through_ | whole number | height | The chain tip the file runs through. | Never empty |
| ledger_ | whole number | height | The first block the reward ledger reads: 628,992, the start of the period that holds the 2020 halving. | Never empty |
| ledger_ | whole number | height | The last block the reward ledger has read. | not in this dataset The reward ledger is its own dataset, sg-block-ledger, and this file leaves it out: not zero, and not unread. |
| ledger_ | text | hash | Hash of the last block the reward ledger has read. | not in this dataset The reward ledger is its own dataset, sg-block-ledger, and this file leaves it out: not zero, and not unread. |
| sources. | text | URL | mempool.space’s blocks from a height; {height} stands for the height. | Never empty |
| sources. | text | URL | mempool.space’s 80-byte header of a block; {hash} stands for its hash. | Never empty |
| sources. | text | URL | mempool.space’s chain tip height. | Never empty |
| sources. | text | URL | Blockstream’s Esplora: the block hash at a height. | Never empty |
| sources. | text | URL | Blockstream’s Esplora: a block’s full list of transaction IDs. | Never empty |
| sources. | text | URL | Blockstream’s Esplora: one transaction in hex, used for the coinbase. | Never empty |
| sources. | text | URL | The public rules that assign pool labels. | Never empty |
| sources. | text | URL | The rules file a period read from the node is labelled with: pools-v2.json at the commit the builder pins. | not read The file was last written under method 1.0.0, which did not record it; a file written under 1.1.0 or later holds it. |
| sources. | text | URL | mempool’s own matching code, at the commit the desk’s matching was copied from. | not read The file was last written under method 1.0.0, which did not record it; a file written under 1.1.0 or later holds it. |
| method. | text | no unit | The file’s own note on how difficulty is computed from nBits. | Never empty |
| method. | text | no unit | The file’s own note on recomputing each retarget by the consensus rule. | Never empty |
| method. | text | no unit | The file’s own note on what the reward ledger reads, and from which block. | Never empty |
| method. | text | no unit | The file’s own note on what fees rest on, and what they cannot see. | Never empty |
| method. | text | no unit | The file’s own note on where pool labels come from. | Never empty |
| method. | text | no unit | The file’s own note on what is checked on each header and each claimed reward. | Never empty |
| method. | text | no unit | The file’s own note on how rows_sha256 is chained. | Never empty |
| method. | text | no unit | The file’s own note on which operators the blocks were read from. | Never empty |
| method. | text | no unit | Why this file leaves the reward ledger out, in the file’s own words. | Never empty |
| periods | list | no unit | One item per 2,016-block retarget period since the genesis block; the last may still be open. | Never empty |
| periods[] | whole number | index | The retarget period, counted from 0. | Never empty |
| periods[] | whole number | height | Height of the period’s first block, the retarget block. | Never empty |
| periods[] | whole number | height | Height of the last block read in the period. | Never empty |
| periods[] | whole number | blocks | Blocks in the period so far; 2,016 when it is complete. | Never empty |
| periods[] | true/false | no unit | true when the period holds all 2,016 blocks. | Never empty |
| periods[] | text | ISO date-time | Header time of the first block. | Never empty |
| periods[] | text | ISO date-time | Header time of the last block read. | Never empty |
| periods[] | text | hash | Hash of the first block. | Never empty |
| periods[] | text | hash | Hash of the last block read. | Never empty |
| periods[] | text | hex | nBits of the first block’s header, the compact form of the target: eight hex digits. | Never empty |
| periods[] | text | ratio | Exact difficulty as a reduced fraction: 0xffff × 2^208 over the target. | Never empty |
| periods[] | decimal text | ratio | The fraction cut to 8 decimals.cut | Never empty |
| periods[] | decimal text | ratio | Bitcoin Core’s double-precision difficulty, written out exactly. | Never empty |
| periods[] | decimal text | ratio | The previous period’s target over this one, cut to 10 decimals.cut | not applicable The genesis period has no period before it. |
| periods[] | whole number | sats | Subsidy of the period’s blocks so far, from the halving schedule. | Never empty |
| periods[] | group | no unit | The period’s rewards, fees and pool labels. | not in this dataset The reward ledger is its own dataset, sg-block-ledger, and this file leaves it out: not zero, and not unread. |
| periods[] | text | set value | Always retarget-window here, the check the difficulty pass gives every period: this file states the weaker check, never a stronger one. | Never empty |
| periods[] | true/false | no unit | true when the first block’s hash was matched on Blockstream’s Esplora. | Never empty |
| periods[] | true/false | no unit | true when the nBits equals what the consensus rule requires from the period before. | not applicable The genesis period has no period before it. |
| periods[] | list | no unit | The block heights whose claimed reward was proved against the full transaction list, as ranges. | not in this dataset The reward ledger is its own dataset, sg-block-ledger, and this file leaves it out: not zero, and not unread. |
CSV columnssg-difficulty-ledger.csv
One row per 2,016-block retarget period since the genesis block; the latest period is still open.
| Column | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| epochJSON: periods[] | whole number | index | The retarget period, counted from 0. | Never empty |
| start_ | whole number | height | Height of the period’s first block, the retarget block. | Never empty |
| end_ | whole number | height | Height of the last block read in the period. | Never empty |
| blocksJSON: periods[] | whole number | blocks | Blocks in the period so far; 2,016 when complete. | Never empty |
| completeJSON: periods[] | true/false | no unit | true when the period holds all 2,016 blocks. | Never empty |
| first_ | text | ISO date-time | Header time of the first block, UTC. | Never empty |
| last_ | text | ISO date-time | Header time of the last block read, UTC. | Never empty |
| retarget_ | text | hash | Hash of the first block. | Never empty |
| last_ | text | hash | Hash of the last block read. | Never empty |
| bitsJSON: periods[] | text | hex | nBits of the first block’s header, eight hex digits. | Never empty |
| difficulty_ | text | ratio | Exact difficulty as a reduced fraction: 0xffff × 2^208 over the target. | Never empty |
| difficulty_ | decimal text | ratio | The fraction cut, never rounded, to 8 decimals.cut | Never empty |
| difficulty_ | decimal text | ratio | Bitcoin Core’s double-precision difficulty, written out exactly. | Never empty |
| ratio_ | decimal text | ratio | The previous period’s target over this one, cut to 10 decimals; empty at genesis.cut | not applicable The genesis period has no period before it. |
| subsidy_ | whole number | sats | Subsidy of the period’s blocks, from the halving schedule, in sats. | Never empty |
| second_ | true/false | no unit | true when the first block’s hash was matched on Blockstream’s Esplora. | Never empty |
| retarget_ | true/false | no unit | true when the nBits equals what the consensus rule requires from the period before; empty at genesis. | not applicable The genesis period has no period before it. |
Blocks by pool label
mempool.space’s pool labels for three windows, read once a week and filed.
- Blocks by pool label: Files, licence and a line to cite →
- Blocks by pool label: Sources, checks and terms →
- Blocks by pool label: Where the desk prints it →
JSON fieldssg-pool-blocks.json
| Field | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| schema_ | text | identifier | The name and version of the file’s layout; the site’s loader refuses any other. | Never empty |
| methodology_ | text | identifier | The version of the method the file was built with. | Never empty |
| observed_ | text | ISO date-time | When mempool.space served the three windows: the latest HTTP Date header among its responses, its clock and not the desk’s. | Never empty |
| published_ | text | URL | The Gazette Story the pool desk began with, which reported from an earlier reading of the sample, not from this one. | Never empty |
| sources. | text | URL | mempool.space’s pools endpoint for one week. | Never empty |
| sources. | text | URL | mempool.space’s pools endpoint for one month. | Never empty |
| sources. | text | URL | mempool.space’s pools endpoint for three months. | Never empty |
| sources. | text | URL | The public rules that assign pool labels. | Never empty |
| windows | list | no unit | One item per window: one week, one month and three months. | Never empty |
| windows[] | text | set value | The window: 1w, 1m or 3m. | Never empty |
| windows[] | text | no unit | The window in words. | Never empty |
| windows[] | whole number | blocks | Blocks in the window. | Never empty |
| windows[] | list | no unit | The window’s pool labels, in the source’s rank order.heuristic | Never empty |
| windows[] | text | no unit | mempool.space’s pool label, a labelling rule and not ownership; Unknown is its row for blocks its rules could not attribute.heuristicone source | Never empty |
| windows[] | whole number | blocks | Blocks carrying the label in the window.heuristicone source | Never empty |
| method. | text | no unit | The file’s own note on how the shares are worked out and how the reading is dated. | Never empty |
| method. | text | no unit | The file’s own note on how mempool.space assigns a label. | Never empty |
| method. | text | no unit | The file’s own note on what a pool label does not reveal. | Never empty |
| method. | text | no unit | The file’s own note on why concentration under few labels matters. | Never empty |
| boundaries. | true/false | no unit | Always true: the file is a saved reading, and nothing in it is live. | Never empty |
| boundaries. | true/false | no unit | Always true: a label says nothing of who owns the machines. | Never empty |
| boundaries. | true/false | no unit | Always true: no hashrate is worked out from the block counts. | Never empty |
| boundaries. | true/false | no unit | Always true: no location is worked out. | Never empty |
| boundaries. | true/false | no unit | Always true: no coordination between operators is inferred. | Never empty |
| boundaries. | true/false | no unit | Always false: building the file acted on nothing outside the desk. | Never empty |
CSV columnssg-pool-blocks.csv
One row per pool label per window, in the source’s rank order. A label is a labelling rule, not ownership.
| Column | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| observed_ | text | ISO date-time | When mempool.space served the three windows, UTC. | Never empty |
| window_ | text | set value | 1w, 1m or 3m. | Never empty |
| window_ | text | no unit | The window in words. | Never empty |
| observed_ | whole number | blocks | Blocks in the window. | Never empty |
| rankWorked out by the CSV | whole number | index | The label’s place in the window by blocks, counted from 1.heuristicone source | Never empty |
| labelJSON: windows[] | text | no unit | mempool.space’s pool label; Unknown is its row for blocks its rules could not attribute.heuristicone source | Never empty |
| blocksJSON: windows[] | whole number | blocks | Blocks carrying the label in the window.heuristicone source | Never empty |
Selected corporate treasuries
One filing per company; Strategy’s row is checked every day.
- Selected corporate treasuries: Files, licence and a line to cite →
- Selected corporate treasuries: Sources, checks and terms →
- Selected corporate treasuries: Where the desk prints it →
JSON fieldssg-treasury-ledger.json
| Field | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| boundaries. | true/false | no unit | Always false: the file ranks a selected set, not every holder. | Never empty |
| boundaries. | true/false | no unit | Always false: building the file acted on nothing outside the desk. | Never empty |
| boundaries. | true/false | no unit | Always false: no market price was fetched for the file. | Never empty |
| boundaries. | true/false | no unit | Always true: the file is a saved reading, and nothing in it is live. | Never empty |
| boundaries. | true/false | no unit | Always false: nothing of the desk’s internal state is in the file. | Never empty |
| boundaries. | true/false | no unit | Always true: the companies are a selected set. | Never empty |
| boundaries. | true/false | no unit | Always true: only holdings verified against a filing or disclosure are in the file. | Never empty |
| calculation. | text | no unit | The file’s own note on how the companies are ordered. | Never empty |
| calculation. | text | no unit | The file’s own note on how the total is summed. | Never empty |
| companies | list | no unit | One item per company, each from one filing or disclosure, largest holding first. | Never empty |
| companies[] | text | ISO date | The date the filing or disclosure states the holding for. | Never empty |
| companies[] | decimal text | BTC | Bitcoin the filing or disclosure states the company held.as stated | Never empty |
| companies[] | group | no unit | How the filing says the bitcoin was funded. | not read The desk has recorded no funding note for the company. |
| companies[] | text | no unit | The change in basic shares the filing reports. | not disclosed The filing reports no figure the desk could take for it. |
| companies[] | text | no unit | How the filing says the bitcoin was funded, with the filing’s own amounts in the currency it reports. | Never empty |
| companies[] | group | no unit | The change in the holding over one reported period. | not read The desk has recorded no change for the company’s row. That is not a statement that the holding did not change. |
| companies[] | decimal text | BTC | The change over the period; negative for a reduction.as stated | Never empty |
| companies[] | text | ISO date | Last day of the change period. | Never empty |
| companies[] | text | ISO date | First day of the change period. | Never empty |
| companies[] | decimal text | BTC | The holding at the start of the change period.as stated | Never empty |
| companies[] | text | set value | The desk’s confidence in the row: high, medium or low. | Never empty |
| companies[] | group | no unit | What the filing establishes about custody and control. | not read The desk has recorded no custody note for the company. |
| companies[] | text | no unit | What the filing establishes about custody and control, in words. | Never empty |
| companies[] | text | set value | public_company or private_company. | Never empty |
| companies[] | text | set value | regulatory_filing, audited_report or company_disclosure. | Never empty |
| companies[] | text | no unit | Where the ticker trades. | not applicable The company has no listed shares. |
| companies[] | text | no unit | Where the company is incorporated. | Never empty |
| companies[] | text | no unit | What the row does not establish; it may repeat a filing’s own amounts in the currency it reports. | Never empty |
| companies[] | text | no unit | The company’s name. | Never empty |
| companies[] | text | no unit | Where in the filing or disclosure the holding is stated. | Never empty |
| companies[] | text | ISO date | The day the filing or disclosure was published. | Never empty |
| companies[] | text | no unit | Title of the filing or disclosure the row rests on. | Never empty |
| companies[] | text | URL | Address of the filing or disclosure the row rests on. | Never empty |
| companies[] | text | identifier | The company’s ticker. | not applicable The company has no listed shares, so no ticker. |
| companies[] | decimal text | BTC | Bitcoin the filing reports as restricted.as stated | not disclosed The filing states no restricted bitcoin. That is not a reported zero. |
| companies[] | decimal text | BTC | Bitcoin the filing reports as loaned.as stated | not disclosed The filing states no loaned bitcoin. That is not a reported zero. |
| companies[] | text | no unit | The change in bitcoin per share, where the filing supports one. | not disclosed The filing supports no figure for it. |
| companies[] | text | no unit | The change in diluted shares the filing reports. | not disclosed The filing reports no figure the desk could take for it. |
| input_ | text | hash | sha256 of the reviewed evidence the file was exported from. | Never empty |
| methodology_ | text | identifier | The version of the method the file was built with. | Never empty |
| schema_ | text | identifier | The name and version of the file’s layout; the site’s loader refuses any other. | Never empty |
| scope. | text | no unit | What the selected set is, in the file’s own words. | Never empty |
| scope. | list | no unit | What the set leaves out. | none listed The file names nothing it leaves out. |
| summary. | text | ISO date | The oldest date any row’s holding is stated for. | Never empty |
| summary. | text | ISO date | The newest date any row’s holding is stated for. | Never empty |
| summary. | decimal text | BTC | The rows’ holdings added up, each as of its own date: a total of the selected set, not of every company.as stated | Never empty |
| summary. | whole number | count | Companies in the file. | Never empty |
CSV columnssg-treasury-ledger.csv
One row per company, each from one filing or disclosure, largest holding first.
| Column | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| nameJSON: companies[] | text | no unit | The company’s name. | Never empty |
| entity_ | text | set value | public_company or private_company. | Never empty |
| tickerJSON: companies[] | text | identifier | Its ticker; empty when it has none. | not applicable The company has no listed shares, so no ticker. |
| exchangeJSON: companies[] | text | no unit | Where the ticker trades; empty when it has none. | not applicable The company has no listed shares. |
| jurisdictionJSON: companies[] | text | no unit | Where the company is incorporated. | Never empty |
| btc_ | decimal text | BTC | Bitcoin the filing states, an exact decimal in BTC.as stated | Never empty |
| as_ | text | ISO date | The date the filing states the holding for. | Never empty |
| evidence_ | text | set value | regulatory_filing, audited_report or company_disclosure. | Never empty |
| source_ | text | URL | Address of the filing or disclosure the row rests on. | Never empty |
| source_ | text | no unit | Title of that filing or disclosure. | Never empty |
| source_ | text | no unit | Where in it the holding is stated. | Never empty |
| source_ | text | ISO date | The day it was published. | Never empty |
| confidenceJSON: companies[] | text | set value | The desk’s confidence in the row: high, medium or low. | Never empty |
| limitationJSON: companies[] | text | no unit | What the row does not establish. | Never empty |
| change_ | decimal text | BTC | The holding at the start of the change period; empty when no change is recorded.as stated | not read The desk has recorded no change for the company’s row. That is not a statement that the holding did not change. |
| change_ | decimal text | BTC | The change over the period in BTC; negative for a reduction.as stated | not read The desk has recorded no change for the company’s row. That is not a statement that the holding did not change. |
| change_ | text | ISO date | First day of the change period. | not read The desk has recorded no change for the company’s row. That is not a statement that the holding did not change. |
| change_ | text | ISO date | Last day of the change period. | not read The desk has recorded no change for the company’s row. That is not a statement that the holding did not change. |
| capital_ | text | no unit | How the filing says the bitcoin was funded, with the filing’s own amounts; empty when not recorded. | not read The desk has recorded no funding note for the company. |
| capital_ | text | no unit | The change in basic shares the filing reports. | not disclosed The filing reports no figure the desk could take for it. Also empty where the desk has recorded no funding note for the company; capital_funding_path is then empty too. |
| capital_ | text | no unit | The change in diluted shares the filing reports. | not disclosed The filing reports no figure the desk could take for it. Also empty where the desk has recorded no funding note for the company; capital_funding_path is then empty too. |
| capital_ | text | no unit | The change in bitcoin per share, where the filing supports one. | not disclosed The filing supports no figure for it. Also empty where the desk has recorded no funding note for the company; capital_funding_path is then empty too. |
| control_ | decimal text | BTC | Bitcoin the filing reports as restricted; empty when it states none.as stated | not disclosed The filing states no restricted bitcoin; not a reported zero. Also empty where the desk has recorded no custody note for the company; control_note is then empty too. |
| control_ | decimal text | BTC | Bitcoin the filing reports as loaned; empty when it states none.as stated | not disclosed The filing states no loaned bitcoin; not a reported zero. Also empty where the desk has recorded no custody note for the company; control_note is then empty too. |
| control_ | text | no unit | What the filing establishes about custody and control. | not read The desk has recorded no custody note for the company. |
Strategy’s filed bitcoin totals
Every bitcoin total Strategy has stated in an 8-K, 10-Q or 10-K since 2020, one row each.
- Strategy’s filed bitcoin totals: Files, licence and a line to cite →
- Strategy’s filed bitcoin totals: Sources, checks and terms →
- Strategy’s filed bitcoin totals: Where the desk prints it →
JSON fieldssg-strategy-filings.json
| Field | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| schema_ | text | identifier | The name and version of the file’s layout; the site’s loader refuses any other. | Never empty |
| dataset | text | identifier | The dataset’s ID in the register. | Never empty |
| methodology_ | text | identifier | The version of the method the file was built with. | Never empty |
| observed_ | text | ISO date-time | EDGAR’s clock when its listing of filings was read. | Never empty |
| issuer. | text | no unit | The company’s name today. | Never empty |
| issuer. | text | no unit | The company’s name when the first filings were made. | Never empty |
| issuer. | text | identifier | The company’s CIK on EDGAR, ten digits. | Never empty |
| coverage. | text | ISO date | The day filings are read from: the first of the month of the company’s first bitcoin purchase. | Never empty |
| coverage. | text | ISO date | The day of the newest filing read. | Never empty |
| coverage. | list | set value | The SEC forms read; no other form is. | Never empty |
| coverage. | whole number | count | Filings read. | Never empty |
| coverage. | whole number | count | Filings that state at least one dated total. | Never empty |
| coverage. | whole number | count | Filings that report a purchase or sale and state no total. | Never empty |
| coverage. | whole number | count | Filings that mention a holding the reader could not take a dated total from. | Never empty |
| coverage. | whole number | count | Filings with no total and no purchase or sale to list. | Never empty |
| source. | text | no unit | Who publishes the filings. | Never empty |
| source. | text | URL | EDGAR’s listing of the company’s filings. | Never empty |
| source. | text | URL | Where the filings’ documents sit on EDGAR. | Never empty |
| source. | text | no unit | The terms the filings are read under. | Never empty |
| source. | text | URL | The SEC’s notice on reading EDGAR. | Never empty |
| wording_ | text | no unit | What a sentence or a table cell must look like to be read as the wording class holds_approximately. | Never empty |
| wording_ | text | no unit | What a sentence or a table cell must look like to be read as the wording class held_an_aggregate_of. | Never empty |
| wording_ | text | no unit | What a sentence or a table cell must look like to be read as the wording class bitcoins_as_of. | Never empty |
| wording_ | text | no unit | What a sentence or a table cell must look like to be read as the wording class digital_assets_comprised. | Never empty |
| wording_ | text | no unit | What a sentence or a table cell must look like to be read as the wording class bitcoin_holdings_as_of. | Never empty |
| wording_ | text | no unit | What a sentence or a table cell must look like to be read as the wording class aggregate_btc_holdings_table. | Never empty |
| method. | text | no unit | The file’s own note on which filings are read and what counts as a total. | Never empty |
| method. | text | no unit | The file’s own note on how filings become rows. | Never empty |
| method. | text | no unit | The file’s own note on two filings that state one date. | Never empty |
| method. | text | no unit | The file’s own note on checking each step against what its filing reports. | Never empty |
| method. | text | no unit | The file’s own note on what a filed total is not. | Never empty |
| rows | list | no unit | One item per total a filing states, by the date it is stated for. | Never empty |
| rows[] | text | ISO date | The date the filing states the total for. | Never empty |
| rows[] | decimal text | BTC | Bitcoin the filing states the company held, as filed: a filed total, not a wallet balance.as statedapproximate | Never empty |
| rows[] | true/false | no unit | true when the filing says approximately. | Never empty |
| rows[] | text | set value | The SEC form: 8-K, 10-Q, 10-K or an amendment of one. | Never empty |
| rows[] | text | identifier | The filing’s SEC accession number. | Never empty |
| rows[] | text | ISO date | The day the filing was made. | Never empty |
| rows[] | text | URL | The document the statement is in: the report itself or an exhibit. | Never empty |
| rows[] | text | no unit | Where in that document the total is stated. | Never empty |
| rows[] | text | set value | Which of the wordings in wording_classes the total was read from. | Never empty |
| rows[] | group | no unit | The purchases and sales the filing reports for one period. | not disclosed The filing reports no purchase and no sale of bitcoin. |
| rows[] | text | identifier | Accession of the filing that first stated a total for this date. | not applicable The row is the first statement for its date, the one that draws the step. |
| rows[] | group | no unit | The step checked against the purchases and sales its filing reports. | not applicable The row is not checked: it restates a date and draws no step, its filing reports no purchase or sale, or no filed total stands for its step to be measured from. |
| rows[] | text | ISO date | First day of the period the filing reports purchases or sales for. | not disclosed The filing reports a purchase or sale without the period it was made in. |
| rows[] | text | ISO date | Last day of the period the filing reports purchases or sales for. | not disclosed The filing reports a purchase or sale without the period it was made in. |
| rows[] | decimal text | BTC | Bitcoin the filing reports bought in the period; 0 when it reports none bought.as stated | not disclosed The filing reports no purchases. Silence is not a reported zero. |
| rows[] | decimal text | BTC | Bitcoin the filing reports sold in the period; 0 when it reports none sold.as stated | not disclosed The filing reports no sales. Silence is not a reported zero. |
| rows[] | text | set value | matches or differs: the step against what the filing reports; a step that differs is flagged and left as filed. | Never empty |
| rows[] | text | identifier | The filing that stated the total the step is measured from. | Never empty |
| rows[] | text | ISO date | The date of the filed total the step is measured from. | Never empty |
| rows[] | decimal text | BTC | The filed total the step is measured from.as stated | Never empty |
| rows[] | decimal text | BTC | This total less the baseline; negative for a decrease.as stated | Never empty |
| rows[] | decimal text | BTC | Purchases less sales as the filing reports them.as stated | Never empty |
| filings | list | no unit | One item per filing read, whether or not it gave a row. | Never empty |
| filings[] | text | identifier | The filing’s SEC accession number. | Never empty |
| filings[] | text | set value | The SEC form. | Never empty |
| filings[] | text | ISO date | The day the filing was made. | Never empty |
| filings[] | text | URL | The filing’s main document. | Never empty |
| filings[] | text | set value | What the filing gave: aggregate, no_aggregate_stated, unparsed or no_holding_or_trade. | Never empty |
| filings[] | text | no unit | Why a filing is listed without a row. | not applicable The filing gave a row, or has no total and no purchase or sale to list. |
CSV columnssg-strategy-filings.csv
One row per total a filing states. The log of every filing read, and the filings listed without a total, are in the JSON.
| Column | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| as_ | text | ISO date | The date the filing states the total for. | Never empty |
| btc_ | decimal text | BTC | Bitcoin the filing states, an exact decimal in BTC, as filed.as statedapproximate | Never empty |
| approximateJSON: rows[] | true/false | no unit | true when the filing says approximately. | Never empty |
| formJSON: rows[] | text | set value | The SEC form: 8-K, 10-Q, 10-K or an amendment. | Never empty |
| accessionJSON: rows[] | text | identifier | The filing’s SEC accession number. | Never empty |
| filed_ | text | ISO date | The day the filing was made. | Never empty |
| urlJSON: rows[] | text | URL | Address of the document the statement is in, on sec.gov. | Never empty |
| locatorJSON: rows[] | text | no unit | Where in that document the total is stated. | Never empty |
| wording_ | text | set value | Which of the wordings listed in the JSON the total was read from. | Never empty |
| restatesJSON: rows[] | text | identifier | Accession of the filing that first stated a total for this date; empty for the row that draws the step. | not applicable The row is the first statement for its date, the one that draws the step. |
| reported_ | text | ISO date | First day of the period the filing reports purchases or sales for; empty when it gives none. | not disclosed The filing reports a purchase or sale without the period it was made in. Also empty where the filing reports no purchase and no sale; reported_acquired_btc and reported_sold_btc are then empty too. |
| reported_ | text | ISO date | Last day of that period. | not disclosed The filing reports a purchase or sale without the period it was made in. Also empty where the filing reports no purchase and no sale; reported_acquired_btc and reported_sold_btc are then empty too. |
| reported_ | decimal text | BTC | Bitcoin the filing reports bought in the period; 0 when it reports none bought, empty when it reports no purchases.as stated | not disclosed The filing reports a sale and no purchases. Silence is not a reported zero. Also empty where the filing reports no purchase and no sale; reported_sold_btc is then empty too. |
| reported_ | decimal text | BTC | Bitcoin the filing reports sold in the period; 0 when it reports none sold, empty when it reports no sales.as stated | not disclosed The filing reports a purchase and no sales. Silence is not a reported zero. Also empty where the filing reports no purchase and no sale; reported_acquired_btc is then empty too. |
| continuity_ | text | set value | matches or differs: the step against what the filing reports; empty when it is not checked. | not applicable The row is not checked: it restates a date and draws no step, its filing reports no purchase or sale, or no filed total stands for its step to be measured from. |
| continuity_ | text | ISO date | The date of the filed total the step is measured from. | not applicable The row is not checked: it restates a date and draws no step, its filing reports no purchase or sale, or no filed total stands for its step to be measured from. |
| continuity_ | text | identifier | The filing that stated that total. | not applicable The row is not checked: it restates a date and draws no step, its filing reports no purchase or sale, or no filed total stands for its step to be measured from. |
| continuity_ | decimal text | BTC | This total less the baseline, in BTC; negative for a decrease.as stated | not applicable The row is not checked: it restates a date and draws no step, its filing reports no purchase or sale, or no filed total stands for its step to be measured from. |
| continuity_ | decimal text | BTC | Purchases less sales as the filing reports them, in BTC.as stated | not applicable The row is not checked: it restates a date and draws no step, its filing reports no purchase or sale, or no filed total stands for its step to be measured from. |
Bitcoin held through disclosed claims
Each holder’s latest disclosure, summed against issued supply at a pinned block.
- Bitcoin held through disclosed claims: Files, licence and a line to cite →
- Bitcoin held through disclosed claims: Sources, checks and terms →
- Bitcoin held through disclosed claims: Where the desk prints it →
JSON fieldssg-claims-floor.json
| Field | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| as_ | whole number | height | The block issued supply is pinned at; it pins the supply only, and each holding keeps its own date. | Never empty |
| as_ | text | no unit | Where the block’s height was read. | Never empty |
| as_ | text | URL | The pinned block at that source. | Never empty |
| as_ | text | ISO date | The day the block was read. | Never empty |
| boundaries. | true/false | no unit | Always false: no coin is attributed to a holder by address clustering. | Never empty |
| boundaries. | true/false | no unit | Always false: building the file acted on nothing outside the desk. | Never empty |
| boundaries. | true/false | no unit | Always true: the figure is a floor on disclosed positions, never an estimate. | Never empty |
| boundaries. | true/false | no unit | Always false: no market price was fetched for the file. | Never empty |
| boundaries. | true/false | no unit | Always true: the file is a saved reading, and nothing in it is live. | Never empty |
| boundaries. | true/false | no unit | Always false: nothing of the desk’s internal state is in the file. | Never empty |
| categories | list | no unit | One item per kind of holder: spot funds, public-company treasuries and governments. | Never empty |
| categories[] | list | no unit | The holders counted in the category, each from its own latest disclosure. | not read The category is not yet compiled: its holdings are unknown, not zero. |
| categories[] | text | ISO date | The date the disclosure states the holding for. | Never empty |
| categories[] | decimal text | BTC | Bitcoin the disclosure states.as stated | Never empty |
| categories[] | text | identifier | A stable key for the holder. | Never empty |
| categories[] | text | no unit | The holder’s name. | Never empty |
| categories[] | text | set value | regulatory_filing, audited_report, company_disclosure or official_disclosure. | Never empty |
| categories[] | text | no unit | Title of the record the row rests on. | Never empty |
| categories[] | text | URL | Address of the record the row rests on. | Never empty |
| categories[] | text | no unit | Where in the record the holding is stated. | Never empty |
| categories[] | text | no unit | What a holder of the claim depends on to get out. | Never empty |
| categories[] | text | set value | spot_etf, public_company_treasury or government. | Never empty |
| categories[] | text | no unit | Who holds the keys. | Never empty |
| categories[] | text | no unit | The category in words. | Never empty |
| categories[] | text | no unit | What the category’s figure does not establish. | Never empty |
| categories[] | text | set value | compiled, or not_yet_compiled for a category with no rows yet. | Never empty |
| categories[] | text | no unit | What the holder of the claim owns. | Never empty |
| categories[] | text | no unit | Why the category matters, where the desk has written it. | not read The desk has written no such note for the category. |
| method. | text | no unit | The file’s own note on what the remainder is and is not. | Never empty |
| method. | text | no unit | The file’s own note on what may be counted. | Never empty |
| method. | text | no unit | The file’s own note on how the percentages are computed and cut. | Never empty |
| method. | text | no unit | The file’s own note on how issued supply is computed. | Never empty |
| method. | text | no unit | The file’s own note on why the figure is a floor. | Never empty |
| methodology_ | text | identifier | The version of the method the file was built with. | Never empty |
| schema_ | text | identifier | The name and version of the file’s layout; the site’s loader refuses any other. | Never empty |
| scope. | text | no unit | What the dataset counts, in the file’s own words. | Never empty |
| scope. | list | no unit | What it leaves out. | none listed The file names nothing it leaves out. |
| summary. | decimal text | BTC | Bitcoin issued through the pinned block, computed from the subsidy schedule and fetched from no one. | Never empty |
| summary. | decimal text | BTC | The counted holders’ latest disclosures added up, each as of its own date.lower boundas stated | Never empty |
| summary. | decimal text | percent | The floor as a percent of issued supply, cut to four places.lower boundcut | Never empty |
| summary. | decimal text | BTC | Issued supply less the floor: the bitcoin the counted disclosures do not account for, which is not evidence of self-custody. | Never empty |
| summary. | decimal text | percent | 100 less the floor’s percent, so the two always sum to 100. | Never empty |
| input_ | text | hash | sha256 of the reviewed evidence the file was exported from. | not read The file was written without recording the digest. |
CSV columnssg-claims-floor.csv
One row per holder’s latest disclosure. The pinned block, issued supply and the floor are in the JSON.
| Column | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| category_ | text | set value | spot_etf, public_company_treasury or government. | Never empty |
| category_ | text | no unit | The category in words. | Never empty |
| category_ | text | set value | compiled, or not_yet_compiled for a category with no rows yet. | Never empty |
| entity_ | text | identifier | A stable key for the holder; empty on the one row of a category not yet compiled. | not read The category is not yet compiled: its holdings are unknown, not zero. It keeps one row that names the category and no holder. |
| entity_ | text | no unit | The holder’s name. | not read The category is not yet compiled: its holdings are unknown, not zero. It keeps one row that names the category and no holder. |
| btc_ | decimal text | BTC | Bitcoin the disclosure states, an exact decimal in BTC.as stated | not read The category is not yet compiled: its holdings are unknown, not zero. It keeps one row that names the category and no holder. |
| as_ | text | ISO date | The date the disclosure states the holding for. | not read The category is not yet compiled: its holdings are unknown, not zero. It keeps one row that names the category and no holder. |
| evidence_ | text | set value | regulatory_filing, audited_report, company_disclosure or official_disclosure. | not read The category is not yet compiled: its holdings are unknown, not zero. It keeps one row that names the category and no holder. |
| evidence_ | text | no unit | Title of the record the row rests on. | not read The category is not yet compiled: its holdings are unknown, not zero. It keeps one row that names the category and no holder. |
| evidence_ | text | URL | Address of that record. | not read The category is not yet compiled: its holdings are unknown, not zero. It keeps one row that names the category and no holder. |
| evidence_ | text | no unit | Where in it the holding is stated. | not read The category is not yet compiled: its holdings are unknown, not zero. It keeps one row that names the category and no holder. |
Bitcoin in US spot ETF trusts
Bitcoin at each quarter end in 14 of the 16 trusts on the list, from their 10-Q and 10-K.
- Bitcoin in US spot ETF trusts: Files, licence and a line to cite →
- Bitcoin in US spot ETF trusts: Sources, checks and terms →
- Bitcoin in US spot ETF trusts: Where the desk prints it →
JSON fieldssg-etf-trusts.json
| Field | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| schema_ | text | identifier | The name and version of the file’s layout; the site’s loader refuses any other. | Never empty |
| dataset | text | identifier | The dataset’s ID in the register. | Never empty |
| methodology_ | text | identifier | The version of the method the file was built with. | Never empty |
| observed_ | text | ISO date-time | EDGAR’s clock when it was read. | Never empty |
| source. | text | no unit | Who publishes the filings. | Never empty |
| source. | text | URL | EDGAR’s filing indexes. | Never empty |
| source. | text | URL | Where the filings’ documents sit on EDGAR. | Never empty |
| source. | text | no unit | The terms the filings are read under. | Never empty |
| source. | text | URL | The SEC’s notice on reading EDGAR. | Never empty |
| list_ | text | no unit | The rule that puts a trust on the list, and the day the list was compiled. | Never empty |
| orders | list | no unit | The Commission orders the list rests on. | Never empty |
| orders[] | text | identifier | The order’s release number. | Never empty |
| orders[] | text | ISO date | The day the order was made. | Never empty |
| orders[] | text | no unit | The order’s title. | Never empty |
| orders[] | text | URL | The order on sec.gov. | Never empty |
| orders[] | text | no unit | Which products the order covers. | Never empty |
| trusts | list | no unit | One item per trust on the list, read or not. | Never empty |
| trusts[] | text | identifier | A stable key for the trust. | Never empty |
| trusts[] | text | no unit | The trust’s name today. | Never empty |
| trusts[] | text | identifier | The trust’s ticker. | Never empty |
| trusts[] | whole number | identifier | The registrant’s CIK on EDGAR. | Never empty |
| trusts[] | text | no unit | The exchange the trust’s shares are listed on. | Never empty |
| trusts[] | text | no unit | The name the order or the certification approved the trust under. | Never empty |
| trusts[] | text | identifier | The release that approved the trust by name, or the one that set the generic listing standards a later listing rests on. | Never empty |
| trusts[] | true/false | no unit | true when that order names the trust. | Never empty |
| trusts[] | text | identifier | The EDGAR accession number of the exchange’s certification, Form CERT; period ends are read from its date on. | Never empty |
| trusts[] | text | ISO date | The day the exchange’s certification was filed. | Never empty |
| trusts[] | text | URL | Address of the document the desk read in the exchange’s certification. | Never empty |
| trusts[] | text | set value | read, or not_read for a trust whose filings the rule cannot read; a trust not read has no rows and is in no total: unknown, not zero. | Never empty |
| trusts[] | text | no unit | Why the rule cannot read the trust’s filings. | not applicable The trust is read. |
| trusts[] | group | no unit | The exchange’s filing to remove the trust from listing. | not applicable The desk found no filing on EDGAR to remove the trust from listing. |
| trusts[] | text | no unit | What else a reader should know of the trust. | not applicable Nothing further is noted for the trust. |
| trusts[] | text | identifier | The form of the removal filing. | Never empty |
| trusts[] | text | identifier | The EDGAR accession number of the removal filing. | Never empty |
| trusts[] | text | ISO date | The day the removal filing was filed. | Never empty |
| trusts[] | text | URL | Address of the document the desk read in the removal filing. | Never empty |
| not_ | list | no unit | Products a reader might expect on the list, each with the record that keeps it out. | none listed No such product is recorded. |
| not_ | text | no unit | The product’s name. | Never empty |
| not_ | text | identifier | The product’s ticker. | not applicable The product’s shares are not established as listed, so there is no ticker to give. |
| not_ | whole number | identifier | The registrant’s CIK on EDGAR. | Never empty |
| not_ | text | no unit | Why the product is not on the list. | Never empty |
| not_ | group | no unit | The filing that keeps the product off the list. | not read The desk has recorded no single filing for the product; reason says why it is left out. |
| not_ | text | identifier | The form of the filing that keeps the product off the list. | Never empty |
| not_ | text | identifier | The EDGAR accession number of the filing that keeps the product off the list. | Never empty |
| not_ | text | ISO date | The day the filing that keeps the product off the list was filed. | Never empty |
| not_ | text | URL | Address of the document the desk read in the filing that keeps the product off the list. | Never empty |
| rows | list | no unit | One item per filed quantity: a trust, a quarter end and the report that states it; a quarter a trust has not reported has no item. | Never empty |
| rows[] | text | no unit | The trust’s name as the list gives it. | Never empty |
| rows[] | text | identifier | The trust’s ticker. | Never empty |
| rows[] | whole number | identifier | The registrant’s CIK on EDGAR. | Never empty |
| rows[] | text | ISO date | The quarter end the quantity is stated for. | Never empty |
| rows[] | decimal text | BTC | Bitcoin held, with every digit the report prints and no more: a filed quarter-end quantity, not today’s holding.as stated | Never empty |
| rows[] | text | set value | 10-Q, 10-K, 10-Q/A or 10-K/A. | Never empty |
| rows[] | text | identifier | The report’s EDGAR accession number. | Never empty |
| rows[] | text | ISO date | The day the report was filed. | Never empty |
| rows[] | text | URL | The report’s primary document. | Never empty |
| rows[] | text | no unit | Where in the report the quantity is stated, and how it is dated. | Never empty |
| rows[] | text | identifier | Accession of the row this one restates. | not applicable The figure is as first filed. |
| method. | text | no unit | The file’s own note on which reports are read and which cell is taken. | Never empty |
| method. | text | no unit | The file’s own note on how a quantity is dated. | Never empty |
| method. | text | no unit | The file’s own note on a quantity filed twice for one period. | Never empty |
| method. | text | no unit | The file’s own note on a quarter with no report, and a trust not read. | Never empty |
| method. | text | no unit | The file’s own note on how a total is added, and why it is a lower bound. | Never empty |
| method. | text | no unit | The file’s own note on what a filed quarter-end quantity is not. | Never empty |
| boundaries. | true/false | no unit | Always true: the file holds quantities of bitcoin only. | Never empty |
| boundaries. | true/false | no unit | Always true: no market price was fetched for the file. | Never empty |
| boundaries. | true/false | no unit | Always true: no net asset value or fair value is read. | Never empty |
| boundaries. | true/false | no unit | Always true: a quarter not yet reported has no row. | Never empty |
| boundaries. | true/false | no unit | Always false: building the file acted on nothing outside the desk. | Never empty |
CSV columnssg-etf-trusts.csv
One row per filed quantity: a trust, a quarter end and the report that states it. The list of trusts, with those not read, is in the JSON.
| Column | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| trustJSON: rows[] | text | no unit | The trust’s name as the list gives it. | Never empty |
| tickerJSON: rows[] | text | identifier | Its ticker. | Never empty |
| cikJSON: rows[] | whole number | identifier | The registrant’s CIK on EDGAR. | Never empty |
| period_ | text | ISO date | The quarter end the quantity is stated for. | Never empty |
| btc_ | decimal text | BTC | Bitcoin held, exactly as the report prints it, an exact decimal in BTC.as stated | Never empty |
| formJSON: rows[] | text | set value | 10-Q, 10-K, 10-Q/A or 10-K/A. | Never empty |
| accessionJSON: rows[] | text | identifier | The report’s EDGAR accession number. | Never empty |
| filed_ | text | ISO date | The day the report was filed. | Never empty |
| document_ | text | URL | Address of the report’s primary document. | Never empty |
| locatorJSON: rows[] | text | no unit | Where in it the quantity is stated, and how it is dated. | Never empty |
| restatesJSON: rows[] | text | identifier | The accession of the row this one restates; empty for a figure as first filed. | not applicable The figure is as first filed. |
El Salvador’s disclosed wallet
The 20 addresses El Salvador discloses, re-summed on a second operator’s index.
- El Salvador’s disclosed wallet: Files, licence and a line to cite →
- El Salvador’s disclosed wallet: Sources, checks and terms →
- El Salvador’s disclosed wallet: Where the desk prints it →
JSON fieldssg-onbtc-wallet.json
| Field | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| schema_ | text | identifier | The name and version of the file’s layout; the site’s loader refuses any other. | Never empty |
| dataset | text | identifier | The dataset’s ID in the register. | Never empty |
| methodology_ | text | identifier | The version of the method the file was built with. | Never empty |
| observed_ | text | ISO date-time | When the balances were read: Blockstream’s Esplora’s HTTP Date header, its clock and not the desk’s. | Never empty |
| observation. | whole number | height | The block the reading is pinned at: Esplora’s chain tip, which held there while every address was read. | Never empty |
| observation. | text | hash | Hash of the block the reading is pinned at. | Never empty |
| observation. | text | ISO date-time | Header time of the block the reading is pinned at. | Never empty |
| disclosure. | text | URL | The endpoint where El Salvador’s National Bitcoin Office lists its addresses. | Never empty |
| disclosure. | text | ISO date-time | When the endpoint answered. | Never empty |
| disclosure. | text | ISO date-time | When the endpoint says it last synced. | Never empty |
| disclosure. | whole number | count | Addresses the endpoint listed. | Never empty |
| disclosure. | text | hash | sha256 of the address list, so a change in the set is seen. | Never empty |
| disclosure. | whole number | sats | The confirmed total the endpoint’s own figures give; a reading is kept only when it equals total.confirmed_sats to the satoshi. | Never empty |
| total. | whole number | sats | The confirmed balance of the disclosed addresses, re-summed on Blockstream’s Esplora; coins outside those addresses are not in it. | Never empty |
| total. | whole number | sats | Net amount in transactions not yet in a block, as Blockstream’s Esplora saw them, kept apart from the total. | Never empty |
| addresses | list | no unit | One item per disclosed address. | Never empty |
| addresses[] | text | identifier | The address. | Never empty |
| addresses[] | whole number | sats | The address’s confirmed balance, funded less spent on Esplora; a reading is kept only when the endpoint’s own sums give the same. | Never empty |
| addresses[] | whole number | sats | Everything confirmed transactions have paid into the address.one source | Never empty |
| addresses[] | whole number | sats | Everything confirmed transactions have spent from the address.one source | Never empty |
| addresses[] | whole number | count | Confirmed transactions that touched the address.one source | Never empty |
| addresses[] | whole number | sats | The address’s net amount in transactions not yet in a block, as Blockstream’s Esplora saw them. | Never empty |
| series. | text | set value | The unit of the series’ amounts: always sats. | Never empty |
| series. | list | identifier | The names of the five places in each row of series.rows, in order. | Never empty |
| series. | whole number | height | The block of the first credit to any address in the current set, where the series starts.one source | Never empty |
| series. | list | no unit | One row per block that moved the balance, oldest first, each a list of five numbers. | Never empty |
| series. | whole number | height | block_height: a block in which confirmed transactions moved bitcoin into or out of the disclosed addresses.one source | Never empty |
| series. | whole number | Unix seconds | block_time: the block’s header time.one source | Never empty |
| series. | whole number | sats | delta_sats: the net change in the block; negative for a spend.one source | Never empty |
| series. | whole number | sats | cumulative_sats: the confirmed balance after the block; the last row’s equals total.confirmed_sats, which the endpoint’s own figures match.one source | Never empty |
| series. | whole number | count | tx_count: transactions in the block that touched the addresses.one source | Never empty |
| sources. | text | URL | The disclosure endpoint. | Never empty |
| sources. | text | no unit | Who publishes the address list. | Never empty |
| sources. | text | no unit | Who operates the disclosure endpoint. | Never empty |
| sources. | text | no unit | The terms the disclosure endpoint is read under, as the desk reads them. | Never empty |
| sources. | text | URL | Address of the terms the disclosure endpoint is read under. | Never empty |
| sources. | true/false | no unit | Always false: the endpoint is run by the company that runs mempool.space. | Never empty |
| sources. | text | URL | The second operator’s API, where every address is re-summed. | Never empty |
| sources. | text | no unit | Who operates the second operator’s API. | Never empty |
| sources. | text | no unit | The terms the second operator’s API is read under, as the desk reads them. | Never empty |
| sources. | true/false | no unit | Always true: Blockstream is a different operator. | Never empty |
| method. | text | no unit | The file’s own note on how the balance is read and re-summed. | Never empty |
| method. | text | no unit | The file’s own note on why the re-sum uses a second operator. | Never empty |
| method. | text | no unit | The file’s own note on what one step of the series is. | Never empty |
| method. | text | no unit | The file’s own note on what the reading does not cover. | Never empty |
| boundaries. | true/false | no unit | Always true: the file is a saved reading, and nothing in it is live. | Never empty |
| boundaries. | true/false | no unit | Always true: the total counts confirmed transactions only. | Never empty |
| boundaries. | text | set value | Always not_in_this_reading: coins El Salvador may hold outside the disclosed addresses are not in this dataset, and are unknown, not zero. | Never empty |
| boundaries. | true/false | no unit | Always true: no market price was fetched for the file. | Never empty |
| boundaries. | true/false | no unit | Always false: building the file acted on nothing outside the desk. | Never empty |
CSV columnssg-onbtc-wallet.csv
One row per block that moved the balance. The disclosed addresses and their balances are in the JSON.
| Column | Type | Unit | What it holds | When it is empty |
|---|---|---|---|---|
| block_ | whole number | height | A block in which confirmed transactions moved bitcoin into or out of the disclosed addresses.one source | Never empty |
| block_ | whole number | Unix seconds | The block’s header time, in Unix seconds.one source | Never empty |
| delta_ | whole number | sats | Net change in the block, in sats; negative for a spend.one source | Never empty |
| cumulative_ | whole number | sats | The confirmed balance after the block, in sats; the last row’s is the confirmed total the JSON gives.one source | Never empty |
| tx_ | whole number | count | Transactions in the block that touched the addresses.one source | Never empty |
No file
Datasets with no fields to define
Fee estimates and the queue
No download: its values are read when a page is served and are not saved, so there is no file to offer.
Fee estimates and the queue: Its entry on Downloads →Hashprice at difficulty
No download: its values are read when a page is served and are not saved, so there is no file to offer.
Hashprice at difficulty: Its entry on Downloads →Block rewards, fees and pool labels
Not yet complete: the ledger runs from block 628,992 through block 832,607, and the period file that holds it runs through block 969,431, read on 1 Oct 2026. Its files will be offered once the ledger reaches that block.
Block rewards, fees and pool labels: Its entry on Downloads →