Gibt es ein Tool, um das Bitcoin-Transaktionsnetzwerk aus der Blockchain zu extrahieren?

Ich suche nach einer Möglichkeit, einige Daten aus der neuesten heruntergeladenen Bitcoin-Blockchain zu extrahieren. Insbesondere bin ich daran interessiert, das gesamte Transaktionsnetzwerk zu extrahieren, also die bei jeder Transaktion verwendeten öffentlichen Schlüssel, das Transaktionsdatum, den Hash, den Block-Hash und den BTC-Betrag ein- und auszugeben. Ich habe bisher mehrere Lösungen ohne Erfolg versucht:

Bitcoin-Transaktionsnetzwerk-Extraktion

rostiger Blockparser

bitcointools

BitcoinDatabaseGenerator

BCGraph

Ich hatte etwas Glück mit bitcoindatabasegenerator und rusty-blockparser, aber während diese Tools die Ausgabe-PKs erfolgreich extrahieren, sind Eingabe-PKs nirgendwo in den resultierenden Dateien zu finden.

Zusammenfassend suche ich nach so etwas, um eine Netzwerkvisualisierung von Bitcoin-Transaktionen zu erstellen:

|Quelle PK(s) (BTC)| ------> Transaktion ------> |Ziel-PK(s) (BTC)|

Ich bin nicht wirklich ein Experte für Codierung, also macht das alles für mich komplizierter. Können Sie mir eine Möglichkeit vorschlagen, diese Daten aus heruntergeladenen Blk-Dateien zu extrahieren?

Jede Hilfe wäre sehr willkommen!

Antworten (1)

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 );
}
Hier scheint zumindest eine Klassendefinition zu fehlen.
Dieses Stück Code ist nur eine Demonstration, dass Blockchain-Parsing eine sehr einfache Aufgabe ist
Ok, aber es ist keine Antwort. Sie erklären nicht, was es tut, warum es funktioniert, was es braucht.
Dies ist eine Antwort auf eine Frage "Gibt es ein Tool, um die Bitcoin-Transaktion [Netzwerk] aus der Blockchain zu extrahieren?". Die kurze Antwort lautet: "Ja, das gibt es. Hier ist ein Beweis dafür, dass ein solches Tool existiert."
Ich lehne dies ab, weil es keinen Kontext gibt. Nur ein Stück Code, das nicht einmal kompiliert wird, ist nicht informativ.