Список операций в блокчейне Голос + отчет: 25.06.2017
Всем привет, отчитываюсь о состоянии работы + описываю назначение операций в конце статьи. Прочтите первый пост-отчет с описанием толстого клиента. Как видно из отчета, блоков получено уже до конца марта. Поэтому я все ближе к началу работы над разбором данных и это радует!
Статус проекта
Сбор данных
Блоков получено: 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, было бы здорово получить помощь/фидбек из первых рук или линк на исходники для самостоятельного анализа.