epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
November 24, 2013, 07:43:05 AM Last edit: November 24, 2013, 08:11:18 AM by epros |
|
Потребовалось мне поставить Bitcoin-Qt на линукс (стабильный дистрибутив дебиан). Сразу столкнулся с проблемой - почему-то пакет не вошёл в стандартный репозиторий. Начал разбираться почему, оказалось - неспроста: Биткоин хранит данные в Berkeley DB и стандартный пакет до сих пор использует версию 4.8 формата этой базы. В то время как нормальный софт, эксплуатируемый уже пару лет, давно использует версию 5.1 формата базы. В том числе, stable-релиз дистрибутива debian весь заточен под версию 5.1. А эти форматы несовместимы на бинарном уровне, вот ведь какая ерунда... Об этом написано в readme файлах к стандартному пакету Bitcoin-Qt. Я не могу сделать downgrade своей системы до формата 4.8, ибо половина системного софта заточена на работу с форматом 5.1. А стабильной версии биткоин, работающей с форматом 5.1, тоже нет. Т.е. имеется версия, входящая в репозиторий нестабильного релиза, но на стабильный релиз она не ставится.
Я попробовал тупо скомпилировать исходники стандартного bitcoind, взятые с GitHub (и заточенные под версию 4.8 формата базы). Демон запускается, работает и даже отвечает на JSON запросы. Но: 1) Иногда вдруг соединение с демоном по необъяснимой причине не устанавливается. Десятки попыток не дают результата. Потом вдруг через пять минут всё опять оживает. 2) Что ещё хуже: Несколько раз непонятно почему происходил ПОЛНЫЙ СБРОС БАЗЫ. Т.е. база заполнилась уже более чем до 100 тыс. блоков (а один раз - даже более чем до 200 тыс.), а потом вдруг, хоп, снова getblockcount возвращает 0 блоков и заполнение начинается сначала...
Не могу понять, что мне делать-то теперь?
|
|
|
|
tvv
Legendary
Offline
Activity: 1302
Merit: 1005
|
|
November 24, 2013, 01:36:00 PM |
|
Да по-моему быстрее будет с нуля нормальный софт написать, чем с этим разбираться...
PS если там выкинуть нафиг не нужное - то он упрощается раз в 100, так что писать не долго.
PPS будь это не финансы - еще можно было бы потрахаться...
|
|
|
|
awoland
Legendary
Offline
Activity: 1498
Merit: 1021
Was mich nicht umbringt macht mich stärker [F.N.]
|
|
November 24, 2013, 02:55:06 PM |
|
Биткоин хранит данные в Berkeley DB и стандартный пакет до сих пор использует версию 4.8 формата этой базы.
Стандартный клиент биткойн уже давно хранит данные в гугловской leveldb, а Berkeley DB в нём используется для храниения пар адрес:приватный ключ в wallet.dat.
|
Was mich nicht umbringt macht mich stärker [F.N.]
|
|
|
giv
|
|
November 24, 2013, 03:02:00 PM |
|
Я попробовал тупо скомпилировать исходники стандартного bitcoind, взятые с GitHub (и заточенные под версию 4.8 формата базы).
Какую версию биткоина собирали, из какой ветки и т.д.? Блоки хранятся в LevelDB, а не в BDB. Поэтому если сбрасываются блоки, то BDB скорее всего не при чем. Исходники не "заточены" ни под какую версию BDB. Они прекрасно собираются и работают и с 4.8, и с 5.1. По крайней мере так было до недавнего времени, последние релизы не проверял. Не могу понять, что мне делать-то теперь?
Читать лог. Лежит тут ~/.bitcoin/debug.log
|
If you like my I2P-patch for bitcoin-qt/bitcoind, please, donate my project! 1JTtvgy5CzwnsRj3vtHACdyKWxgTnYn754 ---------------------- Если Вам нравится мой I2P-патч для bitcoin-qt/bitcoind, пожалуйста, поддержите мой проект! 1JTtvgy5CzwnsRj3vtHACdyKWxgTnYn754
|
|
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
November 25, 2013, 02:41:20 PM |
|
Спасибо за ответы. Детали моих последних безуспешных попыток решения проблемы в моём сегодняшнем сообщении здесь: http://debianforum.ru/index.php?topic=6112.0 Я понял, что дело, оказывается, не в версии Berkeley DB. Касательно чтения лога: Набежало уже более 53Мб, в основном что-то вроде: ProcessBlock: ACCEPTED received block 0000000000000a4a36fefc27f33ff2f2a8e4e0a579a0e395ac55daa065a823ec SetBestChain: new best=0000000000000a4a36fefc27f33ff2f2a8e4e0a579a0e395ac55daa065a823ec height=166788 log2_work=67.681396 tx=2419888 date=2012-02-14 16:28:56 progress=0.043438
Что здесь выискивать - мне непонятно. Что касается бинарников с последней версией: Вроде бы, именно это я и сделал, взяв bitcoind из этого архива: http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.5/bitcoin-0.8.5-linux.tar.gz/download ? Или нет? Вот с ним и происходят все эти неприятные вещи.
|
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
November 25, 2013, 03:39:50 PM |
|
О, вот сейчас удалил лог и через некоторое время обнаружил в нём нечто интересное: ProcessBlock: ACCEPTED received block 0000000000000758b4523e4f2a2fff9de8fd9ce5a4df93a53fa3e4ef064e2a8f InvalidChainFound: invalid block=0000000000000758b4523e4f2a2fff9de8fd9ce5a4df93a53fa3e4ef064e2a8f height=169696 log2_work=62.499542 date=2012-03-05 04:38:22 InvalidChainFound: current best=000000000000019fac1d7703f8c03bf674d49e6384e4bd04c14f5c5fe893063e height=169689 log2_work=62.489548 date=2012-03-05 03:38:14 InvalidChainFound: Warning: Displayed transactions may not be correct! You may need to upgrade, or other nodes may need to upgrade.
Это же сообщение (Warning: Displayed transactions may not be correct! You may need to upgrade, or other nodes may need to upgrade.) мне сейчас выдаётся в ответ на запрос getinfo. Счётчик getblockcount остановился на 169689. Вероятно, следующим этапом, как обычно, станет сброс счётчика getblockcount в нуль... P.S. Так и есть. Сейчас перезапустил bitcoind, после чего счётчик сбросился в нуль и начал считать по-новому кругу.
|
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
November 26, 2013, 03:31:26 PM |
|
Мне объяснили, как поставить версию из репозитория нестабильного релиза дебиана (v0.8.5.0-gef14a26-beta). Для чистоты эксперимента я удалил всё, кроме wallet.dat, из директории .bitcoin. На сей раз getblockcount досчитал аж до 205559. Однако потом вся эта фигня повторилась: Сначала getblockcount перестал увеличиваться, потом на запрос getinfo я начал получать сообщение об ошибке: "Warning: Displayed transactions may not be correct! You may need to upgrade, or other nodes may need to upgrade". Потом не установилось json соединение с демоном (наверное, он просто выгрузился). А после перезапуска getblockcount начал считать с нуля.
Я не понимаю, это только у меня одного такая ерунда? Я вижу, что продукт НЕ РАБОТОСПОСОБЕН. Как же так?
|
|
|
|
fsb4000
Legendary
Offline
Activity: 1400
Merit: 1000
|
|
November 26, 2013, 03:40:09 PM |
|
только у тебя видимо. Я проверял работоспособность на Windows 7x64 Home Premium и OpenSuse 12.1... У многих на этом форуме работает на Ubuntu разных версий...
|
|
|
|
tvv
Legendary
Offline
Activity: 1302
Merit: 1005
|
|
November 26, 2013, 03:51:46 PM |
|
Да GNU-сное оно все такое - удивляться тут не чему...
|
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
November 27, 2013, 08:54:14 AM Last edit: November 27, 2013, 09:36:46 AM by epros |
|
Народ, подскажите хоть как-нибудь куда рыть. Ну, нужен мне этот долбаный демон биткоин, из-за проблем с ним я уже почти неделю как не могу никуда продвинуться. Ладно, что все добытые бинарники оказываются с глюками, но и ни одну из версий исходных файлов не удалось скомпилировать. По совету поддержки Дебиан я обратился сюда в англоязычную ветку Bitcoin Forum > Bitcoin > Technical Support. Подробно там описал проблему, с вырезками из лога. Пока получил только банальную ссылку на инструкцию о том, как скомпилировать исходники, взятые с sourceforge.net. Вот последняя версия, выложенная там. Но не компилируется она у меня!!! Поставил я все нужные пакеты, как указано в инструкции, запустил "make -f makefile.unix" и в ответ получил какие-то сообщения об ошибках в файле /usr/include/boost/thread/xtime.hpp. Вот: /usr/include/boost/thread/xtime.hpp:23:5: error: expected identifier before numeric constant /usr/include/boost/thread/xtime.hpp:23:5: error: expected ‘}’ before numeric constant /usr/include/boost/thread/xtime.hpp:23:5: error: expected unqualified-id before numeric constant /usr/include/boost/thread/xtime.hpp:46:14: error: expected type-specifier before ‘system_time’
И вот: /usr/include/boost/thread/xtime.hpp:73:40: error: ‘get_system_time’ was not declared in this scope /usr/include/boost/thread/xtime.hpp:73:40: note: suggested alternative:
И в конечном итоге вот: /usr/include/boost/thread/xtime.hpp: At global scope: /usr/include/boost/thread/xtime.hpp:88:1: error: expected declaration before ‘}’ token make: *** [obj/alert.o] Ошибка 1
Я посмотрел, что это за файл. Оказалось, часть библиотеки libboost1.49-dev. Это что же, значит библиотека что ли битая? И это у всех пользователей, у которых поставлен этот пакет? И что мне делать-то теперь?
|
|
|
|
awoland
Legendary
Offline
Activity: 1498
Merit: 1021
Was mich nicht umbringt macht mich stärker [F.N.]
|
|
November 27, 2013, 12:10:30 PM |
|
В вашем случае правильным решением будет смена дистрибутива (на ubuntu или centos).
|
Was mich nicht umbringt macht mich stärker [F.N.]
|
|
|
fsb4000
Legendary
Offline
Activity: 1400
Merit: 1000
|
|
November 27, 2013, 12:18:31 PM |
|
|
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
November 27, 2013, 12:46:46 PM |
|
В вашем случае правильным решением будет смена дистрибутива (на ubuntu или centos).
Как-то слишком радикально. Чем так уж плох именно Дебиан? Это один из старейших дистрибутивов и его стабильный релиз никто не треплет обновлениями каждый месяц, за что я его и выбрал. Да, сейчас обнаружилось, что в стабильный релиз выложена битая версия пакета libboost1.49-dev. Я заменил её версией из тестового релиза, после чего мне удалось нормально скомпилировать бинарник bitcoind версии 0.8.5. Но он оказался с теми же глюками, что и те бинарники, которые я ранее скачивал в готовом виде. Да, я пробовал бинарник из нестабильного релиза: Все те же глюки. см. в этой теме подробно, с кусками логов. Фатальная проблема в том, что я никак не могу загрузить blockchain, ибо в некоторый момент возникает ошибка, после которой следующие блоки перестают приниматься, а потом getblockcounter обнуляется и загрузка начинается по новому кругу.
|
|
|
|
fsb4000
Legendary
Offline
Activity: 1400
Merit: 1000
|
|
November 27, 2013, 12:53:39 PM |
|
вот bitcoin blockchain месячной давности http://sourceforge.net/projects/bitcoinblockchain/files/29-10-2013/Но это не лучший способ, так как приходится доверять третьим лицам(каждый блок при загрузки через клиент проверяется заного, а тут приходится верить что блоки верные, но вроде по этой ссылке нормальная цепочка блоков, без изменений)
|
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
November 27, 2013, 01:26:37 PM |
|
Не думаю, что это - подходящее решение проблемы. Проблема ведь не в том, что я не могу загрузить древнюю blockchain сейчас (может с пятидесятой попытки это вдруг и получится). Но принципиальная проблема в том, что в софте есть какой-то глюк, а значит потом, при обновлении blockchain, у меня может возникнуть та же ошибка: новые блоки перестанут подгружаться, а потом и blockchain снова сбросится.
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2335
Merit: 2384
|
|
November 27, 2013, 01:30:40 PM |
|
Я не понимаю, это только у меня одного такая ерунда?
Судя по этому топику не только у вас: https://github.com/bitcoin/bitcoin/issues/2726 ,где в качестве костыля предлагается использовать -par=1 Тем не менее, я проверил у себя. Взял бинарник ( http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.5/bitcoin-0.8.5-linux.tar.gz/download) bitcoind и запустил его на Debian wheezy. Все блоки скачались без ошибок. Но есть нюансы: 1) у меня 64-битный Дебиан и, соответственно, 64-битный бинарник 2) Дебиан запущен в VirtualBox Но, вообще, ситуация странная. Либо это редкий баг, не обязательно bitcoind, может быть и какой-то либы. Либо глючное железо. За своё многолетнее использование Биткойна под Виндой такой ошибки не встречал.
|
|
|
|
Balthazar
Legendary
Offline
Activity: 3108
Merit: 1359
|
|
November 27, 2013, 02:09:14 PM |
|
ХЗ, у меня со сборкой под дебианом никогда не было проблем. Да и с дебиана на убунту переходить это все равно что зеленый галстук менять на зеленый галстук, при идентичном наборе установленных пакетов это никак не повлияет на ситуацию.
|
|
|
|
epros (OP)
Newbie
Offline
Activity: 45
Merit: 0
|
|
November 27, 2013, 02:34:12 PM |
|
Почитал, попробую перезапуститься с -par=1, хотя не понимаю что это значит. Судя по количеству жалующихся на баг, дело не в аппаратных ошибках. Даже если бы и были какие-то аппаратные ошибки (а сетевые сбои наверняка у всех периодически возникают), софт не должен реагировать на них таким странным образом. Возможно, что такие глюки возникают только у тех, у кого 32-разрядная платформа (увы, я пока не могу себе позволить апгрейд). Возможно, только поэтому процент жалующихся на Bitcoin-Qt не достиг той критической отметки, после которой разработчиков растерзали бы. Для меня теперь очевидно, что 1) проблема именно в исходном коде bitcoind, 2) в последней полудюжине версий она так и не была решена.
|
|
|
|
|