A dataset of block arrival times as seen by multiple nodes on the Bitcoin Network.
The dataset is split over multiple CSV files in the data directory. One CSV
file per source. Each file contains the block height, the header hash, the
millisecond timestamp the block arrived/was first connected at the node. The
CVS files do not have a header.
Example:
759483,00000000000000000002b74f1fd927768b2bfd52d2a5229826303d480db5c76a,1666250167839
759483,00000000000000000002b74f1fd927768b2bfd52d2a5229826303d480db5c76a,1666250167000
759482,00000000000000000006e1c51365637bbc9a977b6bc027c00613025c1625a00a,1666249466074
The sources can be combined into one, multi-source CSV file with the Python
script contrib/combine.py.
To add your block arrival times, create a CSV file with the above format in the data directory. Make sure the timestamps are in millisecond precision. Also, remember to update the data-availability graph (see below).
Block arrival timestamps can be parsed from the Bitcoin Core debug.log.
A Python tool is provided under contrib/process-debug-log.py. This expects
a debug.log as input file, and a CSV file output name.
python3 contrib/process-debug-log.py /home/b10c/.bitcoin/debug.log data/my-timestamps.csv
The dataset is run through automatic quality assurance checks in the CI.
There is a check for the arrival timestamps. We assume these should be
either two hours before or after the block header timestamp. For this, we
maintain a list of height and header timestamps in
qa/block-timestamps/block-timestamps.csv. When adding new timestamps, the
list might need to be updated. This can be done with the Bash script
qa/block-timestamps/update-block-timestamps.sh requiring a Bitcoin Core
instance with the REST server enabled.