Толстый клиент: выкачивание блокчейна
Пришло время программировать сбор данных. Решено было брать блоки методом get_block (кстати, сейчас последний блок 7095867). Начинать с первого и продвигаться все дальше и дальше.
Настроен cron, скрипт работает автоматически, берет блок, заносит его в базу, смотрит транзакции и заносит их в отдельную таблицу. Не совсем понятно, зачем в транзакции поле operations описано как массив. Я собрал уже 10 000 блоков, и нигде не было, чтобы в 1 транзакции было 2 операции. Всегда размерность равна 1 операции.
Сколько же времени уйдет, чтобы через API получить все блоки, и содержащиеся в них транзакции? Замерив скорость я получил сбор ~1000 блоков за 1 минуту.
7095867/1000=7095.9 минут, это 118,3 часов или 4,9 дня. Отлично, 5 дней сбора данных и все блоки будут у меня в Базе Данных. Только вот в сыром виде. Необходимо написать анализатор транзакций, составить список операций в них, разбить на категории (нужные/не нужные) и каждую операцию направить в свою таблицу.
И это необходимо сделать быстро. Места на винте не так много свободного (пока разработку веду на сервере, где полно других проектов), а как было понятно по размеру блокчейна Голоса и Stemmit становится очевидным - служебную информацию нет никакого смысла хранить. Главное - восстановить переводы, upvote, посты и комментарии и все важное распихать по таблицам.
Если вам интересно следить за моей работой - голосуйте и подписывайтесь, я всегда рад комментариям и советам. Пока не ясно, поеду ли на #яИдуНаГОЛОСфест, как никак поездка + конференция обойдется в ~25к, но вероятность этого есть. Жду условий для спикеров (потому что к тому моменту есть хорошие шансы уже показать прототип толстого клиента и подготовить выступление для публики).
Предыдущий пост из серии: Как понять - является определенный сайт Толстым или Тонким клиентом.