Décoder les blocs reçus et les stocker dans un autre fichier pour analyse

Rasela Tharaka

Décoder les blocs reçus et les stocker dans un autre fichier pour analyse


Je travaille sur un projet de recherche Bitcoin. Je veux décoder les blocs reçus de la chaîne de blocs et stocker les données décodées dans un fichier séparé à des fins d’analyse.

À cet effet, je creuse le code bitcoin c ++ et trouve l’endroit exact, qui sert à écrire les blocs dans le fichier blkXXX.dat .

Pourriez-vous s’il vous plaît suggérer une solution à ce problème.

Je vous remercie

Réponses


 amaclin

 #include <QTimer> #include <QFile> #include "BlockChain.h" BlockChain::BlockChain ( const int start, QObject* parent ) : QFile ( parent ), blkFile ( start + 1 ) { QTimer::singleShot ( 0, this, SLOT ( start ( ) ) ); } //-------------------------------------------------------------- void BlockChain::start ( ) { setFileName ( blkFileName ( blkFile++ ) ); if ( !open ( QIODevice::ReadOnly ) ) { _trace ( QString ( "cant open [%1]" ).arg ( fileName ( ) ) ); getParent ( ).block ( QByteArray ( ) ); // finish signal deleteLater ( ); } else { _trace ( QString ( "processing [%1]" ).arg ( fileName ( ) ) ); QTimer::singleShot ( 0, this, SLOT ( next ( ) ) ); } } //-------------------------------------------------------------- void BlockChain::next ( ) { bool lock ( true ); if ( pos ( ) < size ( ) ) { quint32 magic; quint32 size ( read ( (char*)&magic, 4 ) ); xassert ( ( ( magic == MAGIC_ID ) || !magic ) && ( size == 4 ) ); if ( magic ) { read ( (char*)&size, 4 ); xassert ( size > HEADER_SIZE && size <= MAX_BLOCK_SIZE ); getParent ( ).block ( read ( size ) ); // process data QTimer::singleShot ( 0, this, SLOT ( next ( ) ) ); return; } else lock = false; } close ( ); getParent ( ).doneFile ( lock, blkFile - 1 ); QTimer::singleShot ( 0, this, SLOT ( start ( ) ) ); } //-------------------------------------------------------------- const QString BlockChain::blkFileName ( const int i ) { 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 ); } 
Rasela Tharaka

Merci beaucoup d’avoir pris le temps de me répondre. En fait, j’essaie de trouver un moyen de faire l’amélioration dans le noyau C ++, pas le qt-client. Parce que nous n’utilisons pas l’environnement qt pour le développement.

amaclin

Ceci est juste un exemple de travail qui montre comment analyser les fichiers blk existants et stocker des données ailleurs

 

#autre, #et, #pour, Analyse, blocs, dans, décoder, fichier, Les, reçus, stocker, un

 

yahoo

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *