Я ищу способ извлечь некоторые данные из последней загруженной цепочки биткойнов. В частности, я заинтересован в извлечении всей сети транзакций, поэтому ввод и вывод открытых ключей, используемых в каждой транзакции, даты транзакции, хэша, хэша блока и суммы BTC. Я пробовал несколько решений до сих пор без везения:
Биткойн-транзакция-сеть-извлечение
ржавый блокпарсер
биткойнтулс
БиткойнБазаГенератор
BCGraph
Мне немного повезло с bitcoindatabasegenerator и rusty-blockparser, но хотя эти инструменты успешно извлекают выходные PK, входные PK отсутствуют в результирующих файлах.
Подводя итог, я ищу что-то подобное для создания сетевой визуализации транзакций биткойнов:
|Исходный ПК(и) (BTC)| ------> Транзакция ------> |Целевые ПК (BTC)|
Я на самом деле не эксперт в кодировании, так что это все усложняет для меня. Можете ли вы предложить мне способ извлечь эти данные из загруженных файлов Blk?
Любая помощь будет принята с благодарностью!
BlockChain::BlockChain ( QObject* parent ) : QFile ( parent ), blkFile ( START_BLOCK )
{
connect ( this, SIGNAL ( block ( const QByteArray& ) ), parent, SLOT ( block ( const QByteArray& ) ) );
connect ( this, SIGNAL ( doneFile ( ) ), parent, SLOT ( doneFile ( ) ) );
QTimer::singleShot ( 0, this, SLOT ( start ( ) ) );
}
void BlockChain::start ( )
{
setFileName ( blkFileName ( blkFile++ ) );
if ( !open ( QIODevice::ReadOnly ) )
{
_trace ( QString ( "cant open [%1]" ).arg ( fileName ( ) ) );
emit block ( QByteArray ( ) );
deleteLater ( );
}
else
{
_trace ( QString ( "processing [%1]" ).arg ( fileName ( ) ) );
QTimer::singleShot ( 0, this, SLOT ( next ( ) ) );
}
}
void BlockChain::next ( )
{
if ( pos ( ) < size ( ) )
{
quint32 magic;
quint32 sz ( read ( (char*)&magic, 4 ) );
while ( !magic && pos ( ) < size ( ) - 4 )
read ( (char*)&magic, 4 );
xassert ( ( ( magic == MAGIC_ID ) || !magic ) && ( sz == 4 ) );
if ( magic )
{
read ( (char*)&sz, 4 );
emit block ( read ( sz ) );
QTimer::singleShot ( 0, this, SLOT ( next ( ) ) );
return;
}
}
close ( );
emit doneFile ( );
QTimer::singleShot ( 0, this, SLOT ( start ( ) ) );
}
const QString BlockChain::blkFileName ( const int i ) const
{
return
( i < 10 ) ? QString ( DATA_ROOT "\\blk0000%1.dat" ).arg ( i ) :
( i < 100 ) ? QString ( DATA_ROOT "\\blk000%1.dat" ).arg ( i ) :
QString ( DATA_ROOT "\\blk00%1.dat" ).arg ( i );
}
Питер Уилле
амаклин
Питер Уилле
амаклин
Питер Уилле