Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
16 июля 2011, 3:19:56 PM   # 1
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Форматы файлов - blkindex.dat и blk0001.dat

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я хотел, чтобы быть в состоянии прочитать блок-индекс и blockchain в моем клиенте, а также создать возможно "восстановление / ремонт" Сценарий для этих файлов. Я знаю, что все в этих двух файлах, но я не могу найти какую-либо документацию о том, как они хранятся. 

blkindex.dat: первые 10 кБ в основном нули с некоторыми разбросанными ненулевыми байтами. Я перестал проверять после того, понимая, что я понятия не имею, что я ищу

blk0001.dat: первые четыре байта являются основной сети магическое число, но после этого я не знаю, что я смотрю на. Вот разбивка байт из первых четырех 32-битовых слов:

Код:
     
blk0001.dat:

01 f9 быть b4 D9 (основная сеть магического числа)
02 1d 01 00 00
03 01 00 00 00
04 00 00 00 00
05 00 00 00 00
06 00 00 00 00
07 00 00 00 00
08 00 00 00 00
09 00 00 00 00
10 00 00 00 00
11 00 00 00 00
12 3b a3 ред FD
13 7a 7b 12 б2
14 7a с7 2c 3e
15 67 76 61 8f
16 7f с8 1b с3
17 88 51 32 8а
18 3a 9f b8 аа
19 4b 1e 5e 4а
20 29 AB 5f 49
За 21 FF FF 00 1d
22 1d переменного тока 2b 7с
23 01 01 00 00
24 00 01 00 00
25 00 00 00 00
26 00 00 00 00
27 00 00 00 00
28 00 00 00 00
29 00 00 00 00
30 00 00 00 00
31 00 00 00 00
32 00 00 FF FF
33 FF FF 04 4d
34 FF FF 00 1d
35 01 04 45 54
36 68 65 20 54
37 69 65 73 6d
38 20 30 33 2f
39 4a 61 6e 2f
40 32 30 30 39

Может кто-нибудь предложить некоторые рекомендации о том, что я смотрю? Или более вероятно, связать меня где-то, что на самом деле объясняет формат файла? Я просмотрел код ссылки клиента, но я не мог понять, чтение и запись коды. Тьфу ... Я работаю в C ++ для жизни, и я не могу понять код ссылки клиента!

-Eto
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi


Как заработать Биткоины?
Без вложений. Не майнинг.


16 июля 2011, 6:01:32 PM   # 2
 
 
Сообщений: 32
Цитировать по имени
цитировать ответ
по умолчанию Re: Форматы файлов - blkindex.dat и blk0001.dat

Получил 1806 Биткоинов
Реальная история.







blkindex.dat представляет собой базу данных Berkeley.

blk0001.dat двоичный файл.

В blkindex.dat «основной» базы данных являются указателями на положение блоков в бинарном файле blk0001.dat.

я думаю

zamgo сейчас офлайн Пожаловаться на zamgo   Ответить с цитированием Мультицитирование сообщения от zamgo Быстрый ответ на сообщение zamgo

16 июля 2011, 7:29:01 PM   # 3
 
 
Сообщений: 42
Цитировать по имени
цитировать ответ
по умолчанию Re: Форматы файлов - blkindex.dat и blk0001.dat



blkindex.dat представляет собой базу данных Berkeley.

blk0001.dat двоичный файл.

В blkindex.dat «основной» базы данных являются указателями на положение блоков в бинарном файле blk0001.dat.

я думаю



Файл blk0001.dat (и все 0002, и т.д. файлы в конечном итоге получить пристегивается) это просто длинный список блоков исходных данных, передаваемых по сети. Формат:

4 байта: начало сообщения сети (0xf9, 0xbe, 0xb4, 0xd9)
4 байта: размер блока N (обратный порядок байт) мало
N байт: блок необработанных данных (см https://en.bitcoin.it/wiki/Protocol_specification#block)

Вы можете просто прочитать блоки один за другим (я построил свои собственную воду сбитых blockexplorer делаю только это некоторое время назад). Будьте осторожны, что там может быть блоки в blk0001.dat этой ветви от главной цепи, так что вам нужно либо знать, что последний блок в основном блоке цепочке и работать в обратном направлении от индекса вы имеете в памяти, или реконструировать blockchain себя. Ни один из них очень трудно.

blkindex, как пост выше говорит, является Berkeley DB, и оно не должно быть слишком сложно, чтобы выяснить формат ключей и значений (это должно быть что-то вроде блока хэша для ключа и номера файла (0001) и положения в файл данных блока).

Удачи!
patvarilly сейчас офлайн Пожаловаться на patvarilly   Ответить с цитированием Мультицитирование сообщения от patvarilly Быстрый ответ на сообщение patvarilly

16 июля 2011, 7:36:24 PM   # 4
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Форматы файлов - blkindex.dat и blk0001.dat

Замечательно. Я просто надеюсь, что мой блок сериализация идентична формату файл! Я знаю, что мои заголовки ... Я думаю, это будет хорошим испытанием для работы, все ли моя сериализация код.

Один последний вопрос у меня есть: если blk0001.dat имеет все данные блока, что делает blkindex.dat держать? Я думаю, это просто заголовки, но там должно быть только 12 MB стоит заголовков. То, что я скачал имеет 170Мб.

-Eto
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi

16 июля 2011, 7:50:07 PM   # 5
 
 
Сообщений: 42
Цитировать по имени
цитировать ответ
по умолчанию Re: Форматы файлов - blkindex.dat и blk0001.dat

Один последний вопрос у меня есть: если blk0001.dat имеет все данные блока, что делает blkindex.dat держать? Я думаю, это просто заголовки, но там должно быть только 12 MB стоит заголовков. То, что я скачал имеет 170Мб.

Хорошо, я посмотрел на это, и blkindex.dat хранит как индекс к блокам и индекс к операциям + несколько других вещей (!!!). Вот соответствующий код, который записывает блок в индекс:

Код:
BOOL CTxDB :: WriteBlockIndex (Const CDiskBlockIndex& blockindex)
{
    Возвращение Write (make_pair (строка ("blockindex"), Blockindex.GetBlockHash ()), blockindex);
}

Другими словами, ключ любой пары<Строка, uint256> сериализует к, и данные все в IMPLEMENT_SERIALIZE блоке CDiskBlockIndex (см main.h) Похоже, что индекс в BLK * .dat файл, высота блока, ссылка на следующий блок на главной цепи, и копия заголовка блока. Для сравнения, код для хранения других вещей в это * же * база данных

Код:
BOOL CTxDB :: WriteHashBestChain (uint256 hashBestChain)
{
    вернуться Write (строка ("hashBestChain"), HashBestChain);
}

BOOL CTxDB :: WriteBestInvalidWork (CBigNum bnBestInvalidWork)
{
    вернуться Write (строка ("bnBestInvalidWork"), BnBestInvalidWork);
}

BOOL CTxDB :: AddTxIndex (Const CTransaction& ТЕ, константные CDiskTxPos& поз, Int nHeight)
{
    утверждать (! fClient);

    // Добавить в индекс ТХ
    uint256 хэш = tx.GetHash ();
    CTxIndex txindex (поз, tx.vout.size ());
    Возвращение Write (make_pair (строка ("Техас"), Хэш), txindex);
}
patvarilly сейчас офлайн Пожаловаться на patvarilly   Ответить с цитированием Мультицитирование сообщения от patvarilly Быстрый ответ на сообщение patvarilly



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW