Собственно запустил по
инструкции приватный блокчейн эфира, можно даже сказать - локальный, ибо я там один и аккаунты все для вида. Первичный запуск делал через geth, он же мне и создал цепочку, он же мне и сохранил ее, он же мне там и намайнил эфира для вида.
Geth разместил локальный блокчейн на ноутбуке, в специальной выделенной папочке, она у меня лежит по адресу (использую Mac):
/Users/Ololo/EthereumTestNet/geth/chaindata
Собственно папка
chaindata
, содержит в себе файлы, которые и представляют собой базу данных блокчейна, это как я понял, читая зарубежную литературу. Данная папка - база данных LevelDB, которая содержит следующие файлы:
- 000002.ldb
- 000003.log
- CURRENT
- LOCK
- LOG
- LOG.old
- MANIFEST-000004
Вот в этих файлах, повторюсь, как я понял, и лежит та заветная цепочка содержимое которой я хочу просмотреть. Собственно, первое, что я попытался - открыть файл
000002.ldb
с помощью блокнота, потерпел крах: там все шифровано. Я подумал, что проблема в кодировке. Нашел несколько СУБД которые умеют работать с LevelDB, там тоже получилось фиаско: кто-то не понимал ничего, кто-то не открывал, кто-то говорил "дай мне пароль, чтобы дешифровать".
Погуглив, я узнал, что оказывается не все так просто, и содержимое цепочки шифруется по алгоритму RLP. Там же, где мне про это сообщили, подсказали, что есть
мол модуль levelup для Nodejs, который умеет открывать LevelDB базы данных эфира и собственно дешифровать записи. Так я попал на
инструкцию, как это сделать. В приведенном примере, все так, как хочется - есть цепочка, мы ее открыли, прочитали, все хорошо. Однако, успех скрылся в тумане проблем: открыть БД таким образом не вышло: моя аналогичная второй в примере, строчка кода:
var db = levelup('/Users/Ololo/EthereumTestNet/geth/chaindata');
вылетала с ошибкой
InitializationError: Must provide db
. Я пытался покрутиться с путями до базы данных, но получал пресловутую
InitializationError: Must provide db
- ничего не помогает. В общем я обессилен.
Что делать?
Может кто-то уже использовал Nodejs для чтения сырой цепочки?
Может есть варианты проще?