
Kembali pada tahun 2015, ketika cryptocurrency tidak menerima banyak perhatian dari masyarakat umum seperti sekarang, terpikir oleh saya untuk mengetahui secara detail apa blockchain, cryptocurrency dan Bitcoin khususnya.
Upaya untuk melakukan analisis terperinci tentang kode sumber proyek Bitcoin Core tidak terlalu berhasil, karena kondisi awal yang agak ketat yang saya tetapkan untuk diri saya sendiri untuk mengatakan "ya, sekarang saya tahu apa itu dan bagaimana kerjanya" dan sejumlah besar garis sumber kode yang perlu dipahami untuk mempertimbangkan hasil yang dicapai.
Saya harus mencari cara lain. Selain itu, pada saat keputusan ini dibuat, blockchain sudah dimuat penuh ke komputer lokal saya. Dan hari ini tidak secepat seperti dulu.
Dan begitulah. Klien resmi Bitcoin Core mengunggah seluruh blockchain ke folder di mesin lokal, ini adalah beberapa file yang, sebagaimana dinyatakan dalam dokumen resmi, berisi semua yang disebut Bitcoin. Yang paling menarik bagi saya adalah apa yang disebut file Data Blockchain RAW (blk00000.dat ... blk01234.dat, dll. Dari folder Bitcoin / blok), yaitu file database blockchain sebagaimana adanya, dalam bentuk aslinya.
Sisa isi katalog adalah indeks dari database "mentah", data untuk penghitungan yang benar dari output yang tidak terpakai, pengaturan dan dompet pribadi.
Untuk mendapatkan wawasan, tampak jelas untuk mencari tahu di mana basis data sumber disimpan, atas dasar mana sistem lokal melakukan semua langkah lebih lanjut yang diperlukan untuk memastikan berfungsinya blockchain dari cryptocurrency ini. Bagian dari teknologi tentang jaringan belum dibahas dalam artikel ini. Secara sengaja, saya membatasi diri pada bagian lokal, dan ke file yang menyimpan blok.
Spesifikasi format blok dan transaksi tersedia dalam sumber terbuka, dalam bentuk deskripsi terpisah dari struktur ini. Tetapi tidak ada yang dapat ditemukan yang dapat sepenuhnya memberikan gagasan tentang bagaimana menafsirkan data yang disimpan dalam file-file dari database blockchain yang sangat "mentah" ini (RAW Blockchain Database).
Satu-satunya pilihan, menurut pendapat saya, adalah mem-parsing struktur linier dari file dan menyajikannya dalam bentuk beberapa struktur yang dapat dibaca, yang seharusnya memberikan pemahaman lengkap tentang apa jenis buah Bitcoin itu.
Hasilnya adalah skrip yang ditulis dalam Python dengan ~ 300 baris, yang mengubah file data "mentah" yang disimpan secara lokal blkXXXXX.dat menjadi format teks biasa dengan indikasi apa yang dikandungnya dan apa arti masing-masing bidang data. File teks yang dihasilkan cocok untuk diproses lebih lanjut dan ekstraksi dari mereka, misalnya, semua blok hash, hash transaksi, alamat, jumlah transaksi, dll. untuk tujuan analisis, dan banyak lagi untuk tujuan apa ...
Kenyamanan dan transparansi penggunaan parser dipastikan, menurut pendapat saya, dengan visibilitas maksimum, karena implementasi melalui konversi baca-data byte berurutan.
Parser Blockchain yang ada di alam memiliki banyak fitur, tetapi tidak ada yang bekerja langsung dengan file-file dari database itu sendiri. Itulah sebabnya saya tidak fokus pada implementasi kepentingan apa pun, seperti mendapatkan daftar alamat dengan saldo atau sejenisnya, tetapi membatasi diri pada implementasi konversi langsung file yang paling jelas dan sederhana dari format internal ke tampilan teks universal. Selain itu, banyak barang, seperti pembentukan UTXO Set (satu set keluaran yang tidak terpakai) atau pembentukan daftar alamat dengan saldo, telah diterapkan oleh saya untuk sejumlah proyek.
Bagian integral dari pekerjaan ini adalah untuk membantu para pemangku kepentingan belajar tentang teknologi blockchain.
Ya, ternyata, skrip ini juga cocok untuk sebagian besar cryptocurrency lainnya, seperti Dash, Dogecoin, Bitcoin Cash, Litecoin dan altcoin lainnya, meskipun untuk ini Anda perlu melakukan beberapa trik. Artikel ini tidak berencana untuk mengungkapkan trik ini.
Anda dapat
mengunduh parser parser blockchain
dari github .