@Gudsaf
Школьник

Как просмотреть сырой блокчейн Ethereum в локальной цепочке (+ мои попытки)?

Собственно запустил по инструкции приватный блокчейн эфира, можно даже сказать - локальный, ибо я там один и аккаунты все для вида. Первичный запуск делал через 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 для чтения сырой цепочки?
Может есть варианты проще?
  • Вопрос задан
  • 378 просмотров
Решения вопроса 1
@Gudsaf Автор вопроса
Школьник
Все нормально, достиг того что хотел:

Вместо:
var level = require('level')
var db = level('/Users/User/WebstormProjects/untitled/bin/chaindata')

надо:
var levelup = require('levelup');
var db = levelup('/Users/User/WebstormProjects/untitled/bin/chaindata');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы