Есть ли какой-нибудь инструмент для извлечения сети транзакций биткойнов из блокчейна?

Я ищу способ извлечь некоторые данные из последней загруженной цепочки биткойнов. В частности, я заинтересован в извлечении всей сети транзакций, поэтому ввод и вывод открытых ключей, используемых в каждой транзакции, даты транзакции, хэша, хэша блока и суммы BTC. Я пробовал несколько решений до сих пор без везения:

Биткойн-транзакция-сеть-извлечение

ржавый блокпарсер

биткойнтулс

БиткойнБазаГенератор

BCGraph

Мне немного повезло с bitcoindatabasegenerator и rusty-blockparser, но хотя эти инструменты успешно извлекают выходные PK, входные PK отсутствуют в результирующих файлах.

Подводя итог, я ищу что-то подобное для создания сетевой визуализации транзакций биткойнов:

|Исходный ПК(и) (BTC)| ------> Транзакция ------> |Целевые ПК (BTC)|

Я на самом деле не эксперт в кодировании, так что это все усложняет для меня. Можете ли вы предложить мне способ извлечь эти данные из загруженных файлов Blk?

Любая помощь будет принята с благодарностью!

Ответы (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 );
}
По крайней мере, здесь отсутствует определение класса.
этот фрагмент кода является лишь демонстрацией того, что синтаксический анализ блокчейна — очень простая задача.
Хорошо, но это не ответ. Вы не объясняете, что он делает, почему он работает, что ему нужно.
это ответ на вопрос «Есть ли инструмент для извлечения биткойн-транзакции [сети] из блокчейна?». короткий ответ: «да, есть. вот доказательство того, что такой инструмент существует»
Я отрицаю это, потому что это не дает контекста. Просто кусок кода, который даже не компилируется, не информативен.