Bitcoin Forum
August 10, 2025, 06:31:02 PM *
News: Latest Bitcoin Core release: 29.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Blockchain Parser  (Read 204 times)
Husna QA (OP)
Legendary
*
Offline Offline

Activity: 2730
Merit: 3124


View Profile WWW
September 04, 2024, 04:36:17 PM
Merited by kawetsriyanto (1), TelolettOm (1), Pandorak (1), Patikno (1)
 #1

Blockchain Parser ini lebih kurangnya ditujukan agar bisa membaca detail dari database Bitcoin blockchain.
Jika agan menginstall Bitcoin Core, maka pada folder tempat menyimpan data dari Bitcoin blockchain, disana ada folder blocks yang berisi kumpulan file blkxxxxx.dat

Nah, berikut ini saya coba test parsing file blkxxxxx.dat dari database Bitcoin blockchain.

Script yang saya gunakan (https://github.com/ragestack/blockchain-parser/blob/master/blockchain-parser.py):

Code:
# -*- coding: utf-8 -*-
#
# Blockchain parser
# Copyright (c) 2015-2023 Denis Leonov <466611@gmail.com>
#

import os
import datetime
import hashlib

def reverse(input):
    L = len(input)
    if (L % 2) != 0:
        return None
    else:
        Res = ''
        L = L // 2
        for i in range(L):
            T = input[i*2] + input[i*2+1]
            Res = T + Res
            T = ''
        return (Res);

def merkle_root(lst): # https://gist.github.com/anonymous/7eb080a67398f648c1709e41890f8c44
    sha256d = lambda x: hashlib.sha256(hashlib.sha256(x).digest()).digest()
    hash_pair = lambda x, y: sha256d(x[::-1] + y[::-1])[::-1]
    if len(lst) == 1: return lst[0]
    if len(lst) % 2 == 1:
        lst.append(lst[-1])
    return merkle_root([hash_pair(x,y) for x, y in zip(*[iter(lst)]*2)])

def read_bytes(file,n,byte_order = 'L'):
    data = file.read(n)
    if byte_order == 'L':
        data = data[::-1]
    data = data.hex().upper()
    return data

def read_varint(file):
    b = file.read(1)
    bInt = int(b.hex(),16)
    c = 0
    data = ''
    if bInt < 253:
        c = 1
        data = b.hex().upper()
    if bInt == 253: c = 3
    if bInt == 254: c = 5
    if bInt == 255: c = 9
    for j in range(1,c):
        b = file.read(1)
        b = b.hex().upper()
        data = b + data
    return data

dirA = './blocks/' # Directory where blk*.dat files are stored
#dirA = sys.argv[1]
dirB = './result/' # Directory where to save parsing results
#dirA = sys.argv[2]

fList = os.listdir(dirA)
fList = [x for x in fList if (x.endswith('.dat') and x.startswith('blk'))]
fList.sort()

for i in fList:
    nameSrc = i
    nameRes = nameSrc.replace('.dat','.txt')
    resList = []
    a = 0
    t = dirA + nameSrc
    resList.append('Start ' + t + ' in ' + str(datetime.datetime.now()))
    print ('Start ' + t + ' in ' + str(datetime.datetime.now()))
    f = open(t,'rb')
    tmpHex = ''
    fSize = os.path.getsize(t)
    while f.tell() != fSize:
        while tmpHex != 'D9B4BEF9': # it is for to skip zeroes in some blk files
            tmpHex = read_bytes(f,4)
            resList.append('Magic number = ' + tmpHex)
        tmpHex = read_bytes(f,4)
        resList.append('Block size = ' + tmpHex)
        tmpPos3 = f.tell()
        tmpHex = read_bytes(f,80,'B')
        tmpHex = bytes.fromhex(tmpHex)
        tmpHex = hashlib.new('sha256', tmpHex).digest()
        tmpHex = hashlib.new('sha256', tmpHex).digest()
        tmpHex = tmpHex[::-1]        
        tmpHex = tmpHex.hex().upper()
        resList.append('SHA256 hash of the current block hash = ' + tmpHex)
        f.seek(tmpPos3,0)
        tmpHex = read_bytes(f,4)
        resList.append('Version number = ' + tmpHex)
        tmpHex = read_bytes(f,32)
        resList.append('SHA256 hash of the previous block hash = ' + tmpHex)
        tmpHex = read_bytes(f,32)
        resList.append('MerkleRoot hash = ' + tmpHex)
        MerkleRoot = tmpHex
        tmpHex = read_bytes(f,4)
        resList.append('Time stamp = ' + tmpHex)
        tmpHex = read_bytes(f,4)
        resList.append('Difficulty = ' + tmpHex)
        tmpHex = read_bytes(f,4)
        resList.append('Random number = ' + tmpHex)
        tmpHex = read_varint(f)
        txCount = int(tmpHex,16)
        resList.append('Transactions count = ' + str(txCount))
        resList.append('')
        tmpHex = ''; RawTX = ''; tx_hashes = []
        for k in range(txCount):
            tmpHex = read_bytes(f,4)
            resList.append('TX version number = ' + tmpHex)
            RawTX = reverse(tmpHex)
            tmpHex = ''
            Witness = False
            b = f.read(1)
            tmpB = b.hex().upper()
            bInt = int(b.hex(),16)
            if bInt == 0:
                tmpB = ''
                f.seek(1,1)
                c = 0
                c = f.read(1)
                bInt = int(c.hex(),16)
                tmpB = c.hex().upper()
                Witness = True
            c = 0
            if bInt < 253:
                c = 1
                tmpHex = hex(bInt)[2:].upper().zfill(2)
                tmpB = ''
            if bInt == 253: c = 3
            if bInt == 254: c = 5
            if bInt == 255: c = 9
            for j in range(1,c):
                b = f.read(1)
                b = b.hex().upper()
                tmpHex = b + tmpHex
            inCount = int(tmpHex,16)
            resList.append('Inputs count = ' + tmpHex)
            tmpHex = tmpHex + tmpB
            RawTX = RawTX + reverse(tmpHex)
            for m in range(inCount):
                tmpHex = read_bytes(f,32)
                resList.append('TX from hash = ' + tmpHex)
                RawTX = RawTX + reverse(tmpHex)
                tmpHex = read_bytes(f,4)                
                resList.append('N output = ' + tmpHex)
                RawTX = RawTX + reverse(tmpHex)
                tmpHex = ''
                b = f.read(1)
                tmpB = b.hex().upper()
                bInt = int(b.hex(),16)
                c = 0
                if bInt < 253:
                    c = 1
                    tmpHex = b.hex().upper()
                    tmpB = ''
                if bInt == 253: c = 3
                if bInt == 254: c = 5
                if bInt == 255: c = 9
                for j in range(1,c):
                    b = f.read(1)
                    b = b.hex().upper()
                    tmpHex = b + tmpHex
                scriptLength = int(tmpHex,16)
                tmpHex = tmpHex + tmpB
                RawTX = RawTX + reverse(tmpHex)
                tmpHex = read_bytes(f,scriptLength,'B')
                resList.append('Input script = ' + tmpHex)
                RawTX = RawTX + tmpHex
                tmpHex = read_bytes(f,4,'B')
                resList.append('Sequence number = ' + tmpHex)
                RawTX = RawTX + tmpHex
                tmpHex = ''
            b = f.read(1)
            tmpB = b.hex().upper()
            bInt = int(b.hex(),16)
            c = 0
            if bInt < 253:
                c = 1
                tmpHex = b.hex().upper()
                tmpB = ''
            if bInt == 253: c = 3
            if bInt == 254: c = 5
            if bInt == 255: c = 9
            for j in range(1,c):
                b = f.read(1)
                b = b.hex().upper()
                tmpHex = b + tmpHex
            outputCount = int(tmpHex,16)
            tmpHex = tmpHex + tmpB
            resList.append('Outputs count = ' + str(outputCount))
            RawTX = RawTX + reverse(tmpHex)
            for m in range(outputCount):
                tmpHex = read_bytes(f,8)
                Value = tmpHex
                RawTX = RawTX + reverse(tmpHex)
                tmpHex = ''
                b = f.read(1)
                tmpB = b.hex().upper()
                bInt = int(b.hex(),16)
                c = 0
                if bInt < 253:
                    c = 1
                    tmpHex = b.hex().upper()
                    tmpB = ''
                if bInt == 253: c = 3
                if bInt == 254: c = 5
                if bInt == 255: c = 9
                for j in range(1,c):
                    b = f.read(1)
                    b = b.hex().upper()
                    tmpHex = b + tmpHex
                scriptLength = int(tmpHex,16)
                tmpHex = tmpHex + tmpB
                RawTX = RawTX + reverse(tmpHex)
                tmpHex = read_bytes(f,scriptLength,'B')
                resList.append('Value = ' + Value)
                resList.append('Output script = ' + tmpHex)
                RawTX = RawTX + tmpHex
                tmpHex = ''
            if Witness == True:
                for m in range(inCount):
                    tmpHex = read_varint(f)
                    WitnessLength = int(tmpHex,16)
                    for j in range(WitnessLength):
                        tmpHex = read_varint(f)
                        WitnessItemLength = int(tmpHex,16)
                        tmpHex = read_bytes(f,WitnessItemLength)
                        resList.append('Witness ' + str(m) + ' ' + str(j) + ' ' + str(WitnessItemLength) + ' ' + tmpHex)
                        tmpHex = ''
            Witness = False
            tmpHex = read_bytes(f,4)
            resList.append('Lock time = ' + tmpHex)
            RawTX = RawTX + reverse(tmpHex)
            tmpHex = RawTX
            tmpHex = bytes.fromhex(tmpHex)
            tmpHex = hashlib.new('sha256', tmpHex).digest()
            tmpHex = hashlib.new('sha256', tmpHex).digest()
            tmpHex = tmpHex[::-1]
            tmpHex = tmpHex.hex().upper()
            resList.append('TX hash = ' + tmpHex)
            tx_hashes.append(tmpHex)
            resList.append(''); tmpHex = ''; RawTX = ''
        a += 1
        tx_hashes = [bytes.fromhex(h) for h in tx_hashes]
        tmpHex = merkle_root(tx_hashes).hex().upper()
        if tmpHex != MerkleRoot:
            print ('Merkle roots does not match! >',MerkleRoot,tmpHex)
    f.close()
    f = open(dirB + nameRes,'w')
    for j in resList:
        f.write(j + '\n')
    f.close()

Berikut ini tahapan prosesnya:

Buat folder
Folder-1: Directory dimana file blkxxxxx.dat tersimpan (folder ini tidak perlu dibuat, jika agan mau langsung menggunakan data dari folder Bitcoin Core; Tentunya proses parsing membutuhkan waktu cukup lama tergantung seberapa banyak filenya .dat nya)
Folder-2: Directory untuk tempat menyimpan file hasil parsing

Pada test kali ini, saya meg-copy hanya dua file blkxxxxx.dat dan menyimpannya di folder-1 (blocks);
Sementara itu, saya menyimpan hasil parsing di folder-2 (blocks_parsing).






Buka script blockchain-parser.py diatas (saya menggunakan IDLE-Python)
Sesuaikan direktori folder-1 di dirA dan folder-2 di dirB. Berikut ini contoh milik saya:




Pada file menu, klik Run -> Run Module (F5)
Tunggu prosesnya hingga selesai, berikut ini contohnya:



Seperti nampak di atas, proses parsing antara blk00000.dat dan blk00001.dat pada komputer yang saya gunakan membutuhkan waktu sekitar 2 menit.


Berikut ini hasilnya:







file blkxxxxx.dat sudah di parsing menjadi blkxxxxx.txt (bisa dibuka di TextEdit, Notepad, dan aplikasi semisalnya).

Untuk file hasil parsing tersebut saya upload di drive:
- blk00000.txt (https://drive.google.com/file/d/1JPzi1HztKXCJx8CLIbOfsnw3VfnNkhue/view?usp=sharing)
- blk00001.txt (https://drive.google.com/file/d/1S7e_Yrc68ss3N8Ecms-jj2zB8cn31KVA/view?usp=sharing)

Mudah-mudahan bisa bermanfaat.

▄▄███████████████████▄▄
▄█████████▀█████████████▄
███████████▄▐▀▄██████████
███████▀▀███████▀▀███████
██████▀███▄▄████████████
█████████▐█████████▐█████
█████████▐█████████▐█████
██████████▀███▀███▄██████
████████████████▄▄███████
███████████▄▄▄███████████
█████████████████████████
▀█████▄▄████████████████▀
▀▀███████████████████▀▀
Peach
BTC bitcoin
Buy and Sell
Bitcoin P2P
.
.
▄▄███████▄▄
▄████████
██████▄
▄██
█████████████████▄
▄███████
██████████████▄
███████████████████████
█████████████████████████
████████████████████████
█████████████████████████
▀███████████████████████▀
▀█████████████████████▀
▀██████████████████▀
▀███████████████▀
▀▀███████▀▀

▀▀▀▀███▀▀▀▀
EUROPE | AFRICA
LATIN AMERICA
▄▀▀▀











▀▄▄▄


███████▄█
███████▀
██▄▄▄▄▄░▄▄▄▄▄
████████████▀
▐███████████▌
▐███████████▌
████████████▄
██████████████
███▀███▀▀███▀
.
Download on the
App Store
▀▀▀▄











▄▄▄▀
▄▀▀▀











▀▄▄▄


▄██▄
██████▄
█████████▄
████████████▄
███████████████
████████████▀
█████████▀
██████▀
▀██▀
.
GET IT ON
Google Play
▀▀▀▄











▄▄▄▀
Patikno
Sr. Member
****
Offline Offline

Activity: 560
Merit: 254


Visit Campaign Manager |TG ID- @LT_Mouse


View Profile WWW
September 05, 2024, 12:27:55 AM
 #2

Kalau kita melakukan parsing dan mendapatkan hasilnya dalam bentuk .txt berarti kita bisa melihat keseluruhan detail kode dari blok genesis hingga blok sekarang begitu ya? dan proses-proses yang ada di dalam .txt berhubungan dengan thread [Edukasi] Proses Transaksi & Block di Jaringan Blockchain Bitcoin yang dibuat @punk.zink sebelumnya?

Saya mau coba download .txt yang sudah sampean buat, tapi setelah saya cek pada gambar folder blocks_parsing, total besaran data dari kedua .txt tersebut 58GB, terlalu besar.

Selain untuk blockchain Bitcoin, ternyata @Denis Leonov juga mengatakan di Github kalau cara ini juga bisa bekerja di kebanyakan blockchain altcoins, tapi dia tidak mengatakan di blockchain altcoins mana saja.



▄▄▄▄▄▄▄▄▄▄▄░▄▄▄▄▄███▄▄▄▄▄▄▄▄▄███▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▄▄▄▄▄▄░▄▄▄▄▄▄░░▄▄▄▄▄▄▄▄▄▄▄▄▄▄░▄▄▄▄▄░▄▄▄▄▄▄▄░███████████████████░░████████▄▄░███████████████████████████████
▄█████████████████████████████████████████████████████████████░░██████████▄█████████████████▀▀███████████▀
████████████████████████████████████████████████████████████░░█████████████████████████▀████▄███████▀░░
████▄▄███████████████████████████████▄▄██████████████████████░▄██████████████████████████▄███▄███████░░░░
▀█████████████████████████████████████████████████████▀██████████████████▀▀████████████████▄▄▄█████████▄░░
██████████░▀███▀█████████████▀░▀████▀███████▀█████████████▀████████████████░░▀▀████████░▀█████████████████▄
█████████████▀███████▀▀▀████▀████▀████▀░░▀██████████████████
█████████████████████████████████████████████████████████████████████████████████▀▀▀▀▀▀
███████████████████████████████████████████████▀███▀
.
.100% WELCOME BONUS  NO KYC  UP TO 15% CASHBACK.....[PLAY NOW]
Husna QA (OP)
Legendary
*
Offline Offline

Activity: 2730
Merit: 3124


View Profile WWW
September 05, 2024, 01:31:53 AM
Merited by Patikno (1)
 #3

Kalau kita melakukan parsing dan mendapatkan hasilnya dalam bentuk .txt berarti kita bisa melihat keseluruhan detail kode dari blok genesis hingga blok sekarang begitu ya?

Lebih kurang demikian; Dan sepemahaman saya mengenai seberapa detail informasi yang didapat tergantung dari script-nya juga.
Contoh salah satu block yang saya parsing di atas adalah genesis block (bisa dilihat previous block hash-nya 0).


-snip- dan proses-proses yang ada di dalam .txt berhubungan dengan thread [Edukasi] Proses Transaksi & Block di Jaringan Blockchain Bitcoin yang dibuat @punk.zink sebelumnya?

Bisa dilihat pada contoh screenshot isi dari file hasil parsing di atas, detailnya lebih kurang berisi informasi transaksi, dll. pada block tersebut, yang artinya masih ada kaitannya juga dengan materi-materi yang di buat mas zaki@punk tersebut.


Saya mau coba download .txt yang sudah sampean buat, tapi setelah saya cek pada gambar folder blocks_parsing, total besaran data dari kedua .txt tersebut 58GB, terlalu besar.

Tidak sampai sebesar itu jika merujuk file yang ada di PC saya:



btw, agan bisa saja mem-parsing sendiri dan lihat berapa besaran file-nya tanpa perlu mendownload file yang saya upload di drive.


Selain untuk blockchain Bitcoin, ternyata @Denis Leonov juga mengatakan di Github kalau cara ini juga bisa bekerja di kebanyakan blockchain altcoins, tapi dia tidak mengatakan di blockchain altcoins mana saja.

Ya, saya juga sudah membaca mengenai hal tersebut; Menurut asumsi saya semua jenis altcoins yang berbasis PoW.
Jika melihat pada script di atas itu untuk algoritma SHA256* (pada contoh adalah untuk Bitcoin).

* Jenis coin lainnya: https://coinmarketcap.com/view/sha-256/

▄▄███████████████████▄▄
▄█████████▀█████████████▄
███████████▄▐▀▄██████████
███████▀▀███████▀▀███████
██████▀███▄▄████████████
█████████▐█████████▐█████
█████████▐█████████▐█████
██████████▀███▀███▄██████
████████████████▄▄███████
███████████▄▄▄███████████
█████████████████████████
▀█████▄▄████████████████▀
▀▀███████████████████▀▀
Peach
BTC bitcoin
Buy and Sell
Bitcoin P2P
.
.
▄▄███████▄▄
▄████████
██████▄
▄██
█████████████████▄
▄███████
██████████████▄
███████████████████████
█████████████████████████
████████████████████████
█████████████████████████
▀███████████████████████▀
▀█████████████████████▀
▀██████████████████▀
▀███████████████▀
▀▀███████▀▀

▀▀▀▀███▀▀▀▀
EUROPE | AFRICA
LATIN AMERICA
▄▀▀▀











▀▄▄▄


███████▄█
███████▀
██▄▄▄▄▄░▄▄▄▄▄
████████████▀
▐███████████▌
▐███████████▌
████████████▄
██████████████
███▀███▀▀███▀
.
Download on the
App Store
▀▀▀▄











▄▄▄▀
▄▀▀▀











▀▄▄▄


▄██▄
██████▄
█████████▄
████████████▄
███████████████
████████████▀
█████████▀
██████▀
▀██▀
.
GET IT ON
Google Play
▀▀▀▄











▄▄▄▀
Chikito
Legendary
*
Offline Offline

Activity: 2828
Merit: 2171

https://youtube.com/@ChikitoBitcointalk


View Profile WWW
September 05, 2024, 03:38:52 AM
 #4

Blockchain Parser ini lebih kurangnya ditujukan agar bisa membaca detail dari database Bitcoin blockchain.
Tujuannya tak lain dan bukan membaca kalau ada error dan memvalidasinya. Kalau ditemukan error pada saat parsing di pyton maka program akan otomatis berhenti, tentunya ini berlaku juga saat menjalankan bitcoin core. Contoh lain, Semisal ketika running bitcoin core, tiba-tiba berhenti sendiri, stuck atau not responding, maka menjalankan Blockchain Parser dan mengambil block terakhir (i.e blk04479) bagus untuk melihat apa yang membuat wallet tersebut error.

Entah apakah bisa juga membaca file rev?, Karena di data PC saya ini, selain blk, ada juga data rev00000 - rev04479. (datanya sama, antara blk00000 sampai blk04479), with dot dat

Husna QA (OP)
Legendary
*
Offline Offline

Activity: 2730
Merit: 3124


View Profile WWW
September 06, 2024, 03:31:53 AM
 #5

Blockchain Parser ini lebih kurangnya ditujukan agar bisa membaca detail dari database Bitcoin blockchain.
Tujuannya tak lain dan bukan membaca kalau ada error dan memvalidasinya. Kalau ditemukan error pada saat parsing di pyton maka program akan otomatis berhenti, tentunya ini berlaku juga saat menjalankan bitcoin core. Contoh lain, Semisal ketika running bitcoin core, tiba-tiba berhenti sendiri, stuck atau not responding, maka menjalankan Blockchain Parser dan mengambil block terakhir (i.e blk04479) bagus untuk melihat apa yang membuat wallet tersebut error.

Alih-alih menggunakan Blockchain Parser, kalau untuk melihat error atau troubleshooting di Bitcoin Core akan lebih mudah dengan melihat file debug.log, terlebih file tersebut bisa langsung di buka di text editor.



The debug.log file is a log file that is very useful for troubleshooting. It does not leak any information about your private keys so your Bitcoin is always safe. To get the debug.log file, open Bitcoin Core and go to Help > Debug Window and go to the Information tab. Near the bottom right hand corner of the window is a button labeled Open with Debug log file. Click this to access the file. Now you can save the file elsewhere or copy the contents to send to someone.



Entah apakah bisa juga membaca file rev?, Karena di data PC saya ini, selain blk, ada juga data rev00000 - rev04479. (datanya sama, antara blk00000 sampai blk04479), with dot dat

Di folder block memang terdiri dari beberapa jenis nama file selain blkxxxxx.dat, yakni revxxxxx.dat dan di sub folder index ada juga tipe file xxxxxx.ldb.

Saya sendiri belum mencoba parsing jenis file revxxxxx.dat. Namun, jika melihat deskripsi di sini: https://github.com/ragestack/blockchain-parser/blob/master/README.md, script tersebut ditujukan untuk file blkXXXXX.dat

Bisa dilihat juga script yang saya cantumkan di post pertama:

Quote

▄▄███████████████████▄▄
▄█████████▀█████████████▄
███████████▄▐▀▄██████████
███████▀▀███████▀▀███████
██████▀███▄▄████████████
█████████▐█████████▐█████
█████████▐█████████▐█████
██████████▀███▀███▄██████
████████████████▄▄███████
███████████▄▄▄███████████
█████████████████████████
▀█████▄▄████████████████▀
▀▀███████████████████▀▀
Peach
BTC bitcoin
Buy and Sell
Bitcoin P2P
.
.
▄▄███████▄▄
▄████████
██████▄
▄██
█████████████████▄
▄███████
██████████████▄
███████████████████████
█████████████████████████
████████████████████████
█████████████████████████
▀███████████████████████▀
▀█████████████████████▀
▀██████████████████▀
▀███████████████▀
▀▀███████▀▀

▀▀▀▀███▀▀▀▀
EUROPE | AFRICA
LATIN AMERICA
▄▀▀▀











▀▄▄▄


███████▄█
███████▀
██▄▄▄▄▄░▄▄▄▄▄
████████████▀
▐███████████▌
▐███████████▌
████████████▄
██████████████
███▀███▀▀███▀
.
Download on the
App Store
▀▀▀▄











▄▄▄▀
▄▀▀▀











▀▄▄▄


▄██▄
██████▄
█████████▄
████████████▄
███████████████
████████████▀
█████████▀
██████▀
▀██▀
.
GET IT ON
Google Play
▀▀▀▄











▄▄▄▀
Chikito
Legendary
*
Offline Offline

Activity: 2828
Merit: 2171

https://youtube.com/@ChikitoBitcointalk


View Profile WWW
September 09, 2024, 12:05:15 AM
 #6

Tujuannya tak lain dan bukan membaca kalau ada error dan memvalidasinya. Kalau ditemukan error pada saat parsing di pyton maka program akan otomatis berhenti, tentunya ini berlaku juga saat menjalankan bitcoin core. Contoh lain, Semisal ketika running bitcoin core, tiba-tiba berhenti sendiri, stuck atau not responding, maka menjalankan Blockchain Parser dan mengambil block terakhir (i.e blk04479) bagus untuk melihat apa yang membuat wallet tersebut error.
Alih-alih menggunakan Blockchain Parser, kalau untuk melihat error atau troubleshooting di Bitcoin Core akan lebih mudah dengan melihat file debug.log, terlebih file tersebut bisa langsung di buka di text editor.
Oh jadi tujuan parser ini hanya untuk membaca saja, Mungkin ini cocok digunakan sebagai tempat penyimpanan data bagi penggunaan blockchain yang bukan sebagai currency, semisal pemerintah yang menggunakan blockchain untuk menyimpan data penduduk, atau universitas yang menggunakan blockchain untuk menyimpan data-data mahasiswa (alumni atau data-data ijazah gitu). Ini opini saya saja, mungkin ke depan ada penggunaan lain yang jauh lebih besar sehingga tiap mau parsing tiap blkxxxx.dat ini membutuhkan pasword atau passphrase.

Entah apakah bisa juga membaca file rev?, Karena di data PC saya ini, selain blk, ada juga data rev00000 - rev04479. (datanya sama, antara blk00000 sampai blk04479), with dot dat
Namun, jika melihat deskripsi di sini: https://github.com/ragestack/blockchain-parser/blob/master/README.md, script tersebut ditujukan untuk file blkXXXXX.dat
Mungkin karen file .rev ini hanya sebagai undo-an dan gabungan rekaman yang isinya ada di dalam setiap blok di blkxxx.dat tadi, sehingga tidak lebih penting dari melihat parsing dari blk itu sendiri.

Husna QA (OP)
Legendary
*
Offline Offline

Activity: 2730
Merit: 3124


View Profile WWW
September 09, 2024, 05:40:23 PM
Last edit: September 09, 2024, 06:55:35 PM by Husna QA
 #7

Alih-alih menggunakan Blockchain Parser, kalau untuk melihat error atau troubleshooting di Bitcoin Core akan lebih mudah dengan melihat file debug.log, terlebih file tersebut bisa langsung di buka di text editor.
Oh jadi tujuan parser ini hanya untuk membaca saja, Mungkin ini cocok digunakan sebagai tempat penyimpanan data bagi penggunaan blockchain yang bukan sebagai currency, semisal pemerintah yang menggunakan blockchain untuk menyimpan data penduduk, atau universitas yang menggunakan blockchain untuk menyimpan data-data mahasiswa (alumni atau data-data ijazah gitu). Ini opini saya saja, mungkin ke depan ada penggunaan lain yang jauh lebih besar sehingga tiap mau parsing tiap blkxxxx.dat ini membutuhkan pasword atau passphrase.

Kalau untuk penyimpanan data di Blockchain mungkin bisa memanfaatkan OP_RETURN*. Tapi kalau yang disimpan berupa data-data penting seperti data penduduk saya kira cukup beresiko karena tentunya bisa dengan mudah di parsing dan diketahui publik.

File blkxxxxx.dat yang ada di data Bitcoin Blockchain kan bukan diperuntukkan bagi user tertentu saja, melainkan untuk semua komunitas Bitcoin. Jadi, kecil kemungkinan akan ada fitur untuk mem-password file tersebut.


* Salah satu website yang mengumpulkan list OP_RETURN dari File blkxxxxx.dat :
https://bitcoinstrings.com/

Contoh:
https://bitcoinstrings.com/blk00000.txt

Quote

▄▄███████████████████▄▄
▄█████████▀█████████████▄
███████████▄▐▀▄██████████
███████▀▀███████▀▀███████
██████▀███▄▄████████████
█████████▐█████████▐█████
█████████▐█████████▐█████
██████████▀███▀███▄██████
████████████████▄▄███████
███████████▄▄▄███████████
█████████████████████████
▀█████▄▄████████████████▀
▀▀███████████████████▀▀
Peach
BTC bitcoin
Buy and Sell
Bitcoin P2P
.
.
▄▄███████▄▄
▄████████
██████▄
▄██
█████████████████▄
▄███████
██████████████▄
███████████████████████
█████████████████████████
████████████████████████
█████████████████████████
▀███████████████████████▀
▀█████████████████████▀
▀██████████████████▀
▀███████████████▀
▀▀███████▀▀

▀▀▀▀███▀▀▀▀
EUROPE | AFRICA
LATIN AMERICA
▄▀▀▀











▀▄▄▄


███████▄█
███████▀
██▄▄▄▄▄░▄▄▄▄▄
████████████▀
▐███████████▌
▐███████████▌
████████████▄
██████████████
███▀███▀▀███▀
.
Download on the
App Store
▀▀▀▄











▄▄▄▀
▄▀▀▀











▀▄▄▄


▄██▄
██████▄
█████████▄
████████████▄
███████████████
████████████▀
█████████▀
██████▀
▀██▀
.
GET IT ON
Google Play
▀▀▀▄











▄▄▄▀
Chikito
Legendary
*
Offline Offline

Activity: 2828
Merit: 2171

https://youtube.com/@ChikitoBitcointalk


View Profile WWW
September 10, 2024, 02:04:22 AM
 #8

Kalau untuk penyimpanan data di Blockchain mungkin bisa memanfaatkan OP_RETURN*. Tapi kalau yang disimpan berupa data-data penting seperti data penduduk saya kira cukup beresiko karena tentunya bisa dengan mudah di parsing dan diketahui publik.
Ya beresiko, tapi kan tidak mudah seperti membaca file begitu saja, harus pakai pyton dan code segala macam. Setidaknya, kalau institusi dapat memanfaatkan blockchain ini untuk pengiriman data secara tidak langsung ke pengguna mungkin tidak perlu berfile-file data untuk mendownload atau menggunakan file pengiriman media lain kayak email, drive, atau cloud, cukup menggunakan blockchain dan tersimpan secara terbuka di jaringan untuk bisa diakses oleh siapa pun.

File blkxxxxx.dat yang ada di data Bitcoin Blockchain kan bukan diperuntukkan bagi user tertentu saja, melainkan untuk semua komunitas Bitcoin. Jadi, kecil kemungkinan akan ada fitur untuk mem-password file tersebut.
Memang agak sulit, apa lagi terpublish secara vulgar ke jaringan. Namun bisa saja ke depan ada softfork untuk mewadahi pengguna jika ingin mempassword file tersebut. Saya cukup optimis ke depan blockchain ini digunakan bukan hanya untuk cryptocurrency saja, tapi hal-hal lain yang berguna untuk penyimpanan data selamanya seperti ijazah, data penduduk atau hal rahasia negara tanpa perlu ruang arsip lagi di kantornya.

Husna QA (OP)
Legendary
*
Offline Offline

Activity: 2730
Merit: 3124


View Profile WWW
September 10, 2024, 11:58:28 PM
 #9

-snip- Saya cukup optimis ke depan blockchain ini digunakan bukan hanya untuk cryptocurrency saja, tapi hal-hal lain yang berguna untuk penyimpanan data selamanya seperti ijazah, data penduduk atau hal rahasia negara tanpa perlu ruang arsip lagi di kantornya.

Setahu saya blockchain sudah pula dimanfaatkan untuk selain cryptocurrency (bisa di browsing agar tidak terlalu jauh diskusinya dengan tema thread).
Sementara itu, jika memang negara 'mau' menggunakan teknologi blockchain untuk penyimpanan data penduduk dan semisalnya, yang mungkin lebih realistis digunakan adalah Private Blockchain.


btw, berikut ini salah satu link terkait Blockchain parser namun lebih spesifik ke: OP_RETURN Data parser & search
https://github.com/2snEM6/Bitcoin-Data-Parser

beberapa dependencies yang diperlukan:
- NodeJS
- PostgreSQL
- Bitcoind

▄▄███████████████████▄▄
▄█████████▀█████████████▄
███████████▄▐▀▄██████████
███████▀▀███████▀▀███████
██████▀███▄▄████████████
█████████▐█████████▐█████
█████████▐█████████▐█████
██████████▀███▀███▄██████
████████████████▄▄███████
███████████▄▄▄███████████
█████████████████████████
▀█████▄▄████████████████▀
▀▀███████████████████▀▀
Peach
BTC bitcoin
Buy and Sell
Bitcoin P2P
.
.
▄▄███████▄▄
▄████████
██████▄
▄██
█████████████████▄
▄███████
██████████████▄
███████████████████████
█████████████████████████
████████████████████████
█████████████████████████
▀███████████████████████▀
▀█████████████████████▀
▀██████████████████▀
▀███████████████▀
▀▀███████▀▀

▀▀▀▀███▀▀▀▀
EUROPE | AFRICA
LATIN AMERICA
▄▀▀▀











▀▄▄▄


███████▄█
███████▀
██▄▄▄▄▄░▄▄▄▄▄
████████████▀
▐███████████▌
▐███████████▌
████████████▄
██████████████
███▀███▀▀███▀
.
Download on the
App Store
▀▀▀▄











▄▄▄▀
▄▀▀▀











▀▄▄▄


▄██▄
██████▄
█████████▄
████████████▄
███████████████
████████████▀
█████████▀
██████▀
▀██▀
.
GET IT ON
Google Play
▀▀▀▄











▄▄▄▀
coolmib
Member
**
Offline Offline

Activity: 66
Merit: 14


View Profile
April 21, 2025, 06:39:45 AM
 #10

Apakah ada yg memanfaatkan module ini u/ mengextract data R, S, Z dari tiap txid ? atau ada opensource lain yg lbh tepat untuk melakukan hal ini>
Mohon dishare jika berkenan..
Husna QA (OP)
Legendary
*
Offline Offline

Activity: 2730
Merit: 3124


View Profile WWW
April 25, 2025, 03:13:21 PM
 #11

Apakah ada yg memanfaatkan module ini u/ mengextract data R, S, Z dari tiap txid ? atau ada opensource lain yg lbh tepat untuk melakukan hal ini>
Mohon dishare jika berkenan..

Saya sendiri belum pernah mencobanya. Namun, link berikut mungkin bisa memberikan tambahan informasi untuk agan:
https://bitcoin.stackexchange.com/questions/93711/how-do-i-to-get-the-r-s-and-z-values-from-a-raw-transaction-version-2

▄▄███████████████████▄▄
▄█████████▀█████████████▄
███████████▄▐▀▄██████████
███████▀▀███████▀▀███████
██████▀███▄▄████████████
█████████▐█████████▐█████
█████████▐█████████▐█████
██████████▀███▀███▄██████
████████████████▄▄███████
███████████▄▄▄███████████
█████████████████████████
▀█████▄▄████████████████▀
▀▀███████████████████▀▀
Peach
BTC bitcoin
Buy and Sell
Bitcoin P2P
.
.
▄▄███████▄▄
▄████████
██████▄
▄██
█████████████████▄
▄███████
██████████████▄
███████████████████████
█████████████████████████
████████████████████████
█████████████████████████
▀███████████████████████▀
▀█████████████████████▀
▀██████████████████▀
▀███████████████▀
▀▀███████▀▀

▀▀▀▀███▀▀▀▀
EUROPE | AFRICA
LATIN AMERICA
▄▀▀▀











▀▄▄▄


███████▄█
███████▀
██▄▄▄▄▄░▄▄▄▄▄
████████████▀
▐███████████▌
▐███████████▌
████████████▄
██████████████
███▀███▀▀███▀
.
Download on the
App Store
▀▀▀▄











▄▄▄▀
▄▀▀▀











▀▄▄▄


▄██▄
██████▄
█████████▄
████████████▄
███████████████
████████████▀
█████████▀
██████▀
▀██▀
.
GET IT ON
Google Play
▀▀▀▄











▄▄▄▀
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!