Всем привет, отчитываюсь о состоянии работы + описываю назначение операций в конце статьи. Прочтите первый пост-отчет с описанием толстого клиента. Как видно из отчета, блоков получено уже до конца марта. Поэтому я все ближе к началу работы над разбором данных и это радует!
Статус проекта
Сбор данных
Блоков получено: 4650047
Последняя полученная транзакция имеет дату создания: 29.03.2017 03:52:48
Транзакции и их количество + вес
Не обработано - количество: 2294835, вес: 1027.66Мб
account_create - количество: 1566, вес: 1.2Мб
account_update - количество: 51, вес: 37.08Кб
account_witness_proxy - количество: 350, вес: 39.01Кб
account_witness_vote - количество: 1986, вес: 261.8Кб
comment - количество: 4566, вес: 4.29Мб
comment, comment_options - количество: 38, вес: 145.14Кб
comment, vote - количество: 236, вес: 906.2Кб
comment, vote, comment_options - количество: 80, вес: 281.07Кб
custom_json - количество: 3350, вес: 813.54Кб
delete_comment - количество: 33, вес: 5.09Кб
feed_publish - количество: 147, вес: 24.04Кб
pow2 - количество: 4456, вес: 1.75Мб
set_withdraw_vesting_route - количество: 11, вес: 1.79Кб
transfer - количество: 14, вес: 2.06Кб
transfer_to_vesting - количество: 8420, вес: 1.13Мб
vote - количество: 12199, вес: 2.14Мб
withdraw_vesting - количество: 24, вес: 3.05Кб
witness_update - количество: 135, вес: 50.56Кб
Суммарно - количество: 2332497, вес: 1040.68Мб
Транзакции за последние 90 дней по базе
Количество транзакций: 1822376, за 7775892 секунд.
Скорость появления новых транзакций: 1 транзакция за 4.27 секунд.
Транзакции за последние 30 дней по базе
Количество транзакций: 774275 за 2591988 секунд.
Скорость появления новых транзакций: 1 транзакция за 3.35 секунд.
Транзакции за последние 7 дней по базе
Количество транзакций: 130797 за 604791 секунд.
Скорость появления новых транзакций: 1 транзакция за 4.62 секунд.
Транзакции за последние 2 дня по базе
Количество транзакций: 36129 за 172797 секунд.
Скорость появления новых транзакций: 1 транзакция за 4.78 секунд.
Описание операций
Постараюсь коротко пройтись по всем операциям в транзакциях и описать - что же в них находится.
pow2 - своего рода Proof of Work, служебная информация, которая совершенно не нужна в толстом клиенте.
transfer - перевод токенов в системе, содержит поля from, to, amount и memo. Мне совсем не понятно, почему amount содержит и количество и наименование самого токена, например 0.800 GOLOS. Было бы логичнее разделить amount на amount и currency. Чтобы в одном поле не было и количества и наименование токена. Пролистал часть сырых операций, не нашел конкретного примера с GBG, но подозреваю, что все свалено в кучу.
transfer_to_vesting - аналогичен transfer, различие лишь в том, что отсутствует memo и перевод конечному пользователю придет в GESTS (Силе Голоса).
withdraw_vesting - содержит account и количество vesting_shares (например: 10000.000000 GESTS), означает запрос на вывод GESTS (Силы Голоса).
set_withdraw_vesting_route - содержит from_account, to_account, percent (обычно это 10000) и auto_vest (обычно равен 1). Вопрос знатокам - что делает данная операция? Задает маршрут куда пойдут Сила Голоса при операции их вывода?
witness_update - обновление ссылки на свой пост в списке делегатов, содержит owner (владелец запроса на обновление), url, а также служебную информацию (Совсем не понятно наличие таких полей как account_creation_fee или fee, случайные выборки показали, что fee обычно равен 0.000 GOLOS, а account_creation_fee варьируется, то 0.001 GOLOS, то 3.000 GOLOS. Есть подозрение, что в account_creation_fee дублируется информация из аккаунта владельца запроса.).
feed_publish - содержит publisher и exchange_rate (в котором base, например, 0.100 GBG и quote, например: 1.000 GOLOS). Буду рад дополнениям, ощущение, что это подтверждение/заявка на цену GBG к токену GOLOS.
comment - содержит поля [parent_author (логин автора родительского поста, указывается для комментариев), parent_permlink (url родительского поста, указывается для комментариев),author (логин автора),permlink (url поста), body (тело поста: html/markdown), json_metadata (тут все тэги, упоминаемые юзеры, картинки и ссылки)] и описывает операцию создания поста или комментария.
vote - upvote/flag в зависимости от поля weight (от 10000 до -10000). Делим поле на 100 и получаем привычные нам проценты. voter, author и permlink указывает кто и за что проголосовал.
comment_options - поля: author, permlink, max_accepted_payout (пример, 1000000.000 GBG), percent_steem_dollars (0 - думаю в этом вся суть, указывается процент, отправляемый в GBG за пост. Если 0, то все идет в Силу Голоса.), allow_votes (1), allow_curation_rewards (1), extensions (?).
delete_comment - удаление поста/комментария, поля author и permlink. Не понятно - кто инициировал удаление поста. Почему нет поля инициатора запроса на удаление?
account_witness_vote - кто (account) за кого (логин делегата) проголосовал (approve=1, или 0, в случае удаления голоса?).
account_witness_proxy - account и proxy? Передача прав на голосование за делегата?
account_create - создание аккаунта. Комиссия fee (3.000 GOLOS, но я видел и 0.001 GOLOS), создатель creator (golos), логин аккаунта new_account_name и поля с перечислением публичных ключей нового аккаунта.
account_update - обновление аккаунта (сброс всех паролей). В основном служебная информация из публичных ключей + поле json_metadata, в котором наблюдаю адреса, вида: [json_metadata] => {"ico_address":"1KQzKdmxhxSDfgUHF59v92DeBB6Usmj9yP"}. Скорее всего это сделано для указания кошелька, с которого пришли деньги, участника ICO.
custom_json - возможность записать в блокчейн любой json? В запросе есть поля required_posting_auths (внутри массив с логином аккаунта, инициирующего операцию), id операции (встречал только follow, где есть: подписка на блог юзера, реблог/репост, игнор), json (примеры: ["follow",{"follower":"rustam91","following":"phenom","what":["blog"]}], ["reblog",{"account":"christoryan","author":"ruslanqoon","permlink":"chto-zastavilo-etogo-cheloveka-predat-svoyu-stranu"}], ["follow",{"follower":"chetlanin","following":"pikabu","what":["ignore"]}]). Похоже тут должны быть записаны еще операции игнора. Странно, что для account_witness_proxy выделен отдельная операция (при наличии универсального аналога custom_json).
Вот вроде и все. Если я что-то пропустил буду рад комментариям. Также прошу скинуть линк на описание custom_json, какие там есть данные. Может подскажет @hipster или @serejandmyself, было бы здорово получить помощь/фидбек из первых рук или линк на исходники для самостоятельного анализа.
Еще 2 операции:
["curation_reward", {
"curator": "on1x",
"reward": "3.815923 GESTS",
"comment_author": "kislickii",
"comment_permlink": "zachem-uchyonomu-golos"
}]
["author_reward", {
"author": "on1x",
"permlink": "re-t3ran13-re-on1x-re-t3ran13-2dv8q5-konkurs-risunkov-po-motivam-gospodstvu-klana-nespyashikh-do-20-iyunya-prizovoi-fond-3535-golosov-20170529t102412288z",
"sbd_payout": "1.086 GBG",
"steem_payout": "0.000 GOLOS",
"vesting_payout": "1484.390495 GESTS"
}]
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
t3ran13, vasilisapor2, vict0r, igor-golos, yuriks2000, gapel, on1x, newodin, vika-teplo, borisss
Поэтому я тоже проголосовал за него!
Если Вы проголосуете за этот комментарий, то поможете сделать "Доброго Кита" сильнее!
Пока анализ произведен очень маленького количества блоков, поэтому придется потом создать новый пост и дополнить его новой информацией. Допустим, нашел вот такую операцию по переводу GBG в GOLOS: ["fill_convert_request", {"owner": "login","requestid": 1498136040,"amount_in": "26.000 GBG","amount_out": "9.308 GOLOS"}], поэтому надо создать полный список операций и их назначения.
хороший пост, это информация мне помогла)
@on1x Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Вы опубликовали пост каждый день недели
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Голосуя за это уведомление, вы помогаете всем пользователям Голоса. Узнайте, как здесь.
что за бд?
сктруктура таблицы комментов?
Пока все в MySQL. Таблиц кроме общей для транзакций пока нет. Как видно из списка распределения операций - обработано для анализа лишь 50к из ~2.2кк. Судя по всему сбор данных будет происходить еще пару дней. Только потом я прожду анализ операций (еще ~2 дня) и займусь именно обработкой и распределения операций по таблицам. Как буду разбивать на части - пока не знаю, очень похоже на то, что придется разбивать партиции по связке год+месяц.
@on1x Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество полученных голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Голосуя за это уведомление, вы помогаете всем пользователям Голоса. Узнайте, как здесь.
@on1x Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество опубликованных постов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Голосуя за это уведомление, вы помогаете всем пользователям Голоса. Узнайте, как здесь.