Appendix: Technical Reference
Data Schema
timings.parquet
The core dataset — one row per (message, peer) observation:
| Column | Type | Description |
|---|---|---|
msg_hash | bytes | SHA-256 hash of the gossip message |
peer | bytes | Public key of the delivering peer |
net_timestamp | i64 | Nanosecond arrival timestamp |
collector | string | Collector instance identifier |
messages.parquet
| Column | Type | Description |
|---|---|---|
msg_hash | bytes | Message identifier |
msg_type | string | channel_announcement, channel_update, or node_announcement |
timestamp | i64 | Message’s internal timestamp (set by originator) |
metadata.parquet
| Column | Type | Description |
|---|---|---|
peer | bytes | Peer public key |
alias | string | Node alias (if available) |
addresses | string | Advertised network addresses |
Key Algorithms
Arrival Percentile
For each message m and peer p:
arrival_pct(m, p) = rank_of_p_in_message_m / total_peers_for_message_m
A peer’s avg_arrival_pct is the mean of arrival_pct across all messages where that peer participated.
First-Responder Score
first_responder_score(p) = count(messages where p was first) / total_messages_seen_by_p
Peers with scores significantly above 1/N (where N is the average peer count per message) are flagged as statistical outliers.
Links
| Resource | URL |
|---|---|
| Live Prototype | prototype-ln-gossip.vercel.app |
| Source Code | github.com/bitcoin-visuals/LN_gossip_observer_visuals |
| BOLT #7 Specification | github.com/lightning/bolts/blob/master/07-routing-gossip.md |
| LDK (Lightning Dev Kit) | lightningdevkit.org |