W wolnym czasie sobie pracuję nad Indexerem dla Bitcoina. https://github.com/dpc/rust-bitcoin-indexer
Zbiera on to co się dzieje na blockchainie i wrzuca do bazy danych. Dzieki temu można w łatwy sposób robić zapytania SQL. Np. jaki adres ma ile kasy, albo ile miał kasy kiedy blockchain był w danym momencie (wysokość ostatniego bloku). Można też sortować, sumować itd. – co kto lubi.
Na pełny węzeł Bitcoin potrzebowałem 236GB, zindeksowana baza danych całej obecnej historii to około 250GB. Zindeksowanie wszystkiego na moim desktopie zajmuje jakieś 8-10h.
Ciekawostki:
W chwili obecnej Bitcoin wykonał 378 millionów transakcji:
bitcoin-indexer=> select count(*) from txs;
count
———–
378164005
(1 row)
Liczba niewydanych „wyjść” (UTXO Set) to 63 milliony:
„`
bitcoin-indexer=> select count(*) from outputs LEFT JOIN inputs ON (outputs.id = inputs.output_id) WHERE inputs.output_id IS NULL;
count
———-
63806289
(1 row)
„`
Jakby ktoś miał jakieś inne pytania, to mogę spróbować stworzyć i uruchomić zapytanie SQL, które na to odpowie. 🙂
#bitcoin