Как извлечь все биткойн-адреса из блочных файлов (revxxxxx.dat) - PullRequest
0 голосов
/ 07 октября 2018

Я использую полный биткойн-узел и имею доступ ко всем блочным файлам (150 ГБ) (мой сервер имеет 32 ГБ ОЗУ и 400 ГБ SSD)

Любая идея, как извлечь биткойн-адреса или хэш-код из блокафайлы (revxxxxx.dat)?

Просто мне нужно найти все использованные адреса биткойнов (поиск дублированных адресов - это нормально)

Это мой код для этого, но он очень медленный и бесполезный

from bitcoin.rpc import RawProxy

for blockheight in xrange(0, 543624):
    # Create a connection to local Bitcoin Core node
    p = RawProxy()

    # Get the block hash of block with height blockheight
    blockhash = p.getblockhash(blockheight)

    # Retrieve the block by its hash
    block = p.getblock(blockhash)

    # Element tx contains the list of all transaction IDs in the block
    transactions = block['tx']

    for txid in transactions:
        # Retrieve the raw transaction by ID
        try:
            raw_tx = p.getrawtransaction(txid)
        except:
            with open("error.txt", "a") as f: 
                f.write(str(blockheight) + "," + str(txid) + ",\n" )
            continue

        # Decode the transaction
        decoded_tx = p.decoderawtransaction(raw_tx)

        # Iterate through each output in the transaction
        for output in decoded_tx['vout']:
            try:
                with open('hash160.txt', 'a') as file:
                    file.write(output['scriptPubKey']['asm'].split('OP_HASH160 ')[1].split(' ')[0] + "," + output['scriptPubKey']['addresses'][0] + ",\n")
            except: 
                with open("error.txt", "a") as f: 
                    f.write(str(blockheight) + "," + str(txid) + "," + str(decoded_tx) + ",\n" )

1 Ответ

0 голосов
/ 09 ноября 2018

Если вам нужен hash160s, очевидно, blockparser - отличный инструмент.

https://github.com/znort987/blockparser

Вам, вероятно, понадобится много дискового пространства, и, по крайней мере, по крайней мере 128GB RAM, насколько я понимаю, илибольшой файл подкачки и много времени.По-видимому, он имеет неприятную привычку crashing/seg-faulting.

В util.cpp в строках 606 и 729, по-видимому, решение для отказа - закомментировать // BN_CTX_init(ctx);

Edit: извините, измените на BN_CTX_free(ctx); в строках 606 и 729.

git clone https://github.com/znort987/blockparser.git

Установите deps, и в каталоге запустите ./make и этодолжно получиться хорошо.

Удачи!Не забудьте сначала проверить ./parser справку.

...