Разбираемся с операцией custom_json в транзакциях Голоса
В прошлом посте я обещал отдельно разобраться с custom_json - так как внутри могло храниться все что угодно.
Итак, что показала выборка:
Самая распространенное название операции - follow. Она отвечает за 3 вещи: подписка на блог (поле "what":["blog"]), добавление в игнор (поле "what":["ignore"]) и очистить запись (пустое поле "what":[]).
При выполнении данной операции - старое значение затирается. То-есть невозможно одновременно и подписаться и заигнорить :) Что логично! Можно было бы закончить на этом, но разбор текущего блокчейна показал, что многие записи отличаются по структуре самого json. При внимательном анализе оказалось, что в аналогичных запросах @steepshot некоторые параметры изменены и в json присутствуют пробелы.
Например, в json от golos.io запрос будет: ["follow",{"follower":"on0tole","following":"lehard","what":["blog"]}]
А в json от steepshot запрос выглядит так: "["follow", {"follower": "joseph.kalu", "what": ["blog"], "following": "steepshot"}]
Вот эти пробелы + измененный порядок what с following показал у меня при анализе расхождения.
Вторая операция по популярности: reblog, в нашем случае это репост/поделиться. Имеет подобную структуру: ["reblog",{"account":"hipster","author":"lehard","permlink":"komanda-golos-nastoyashie-kosmonavty"}]
Еще в текущем блокчейне присутствуют тестовые записи custom_json от @xtar, а именно testchain и bookchain, что позволяет сделать выводы - на блокчейне Голос можно реализовать совершенно волшебные вещи, осталось только разобраться "как". Чем и займемся %)
Сегодня мне надо привести порядок timestamp в базе, все записывалось в unixtime с серверной timezone, отличающейся от GMT/UTC. Надо это исправить и приступить к разбору блоков. Всем спасибо за внимание и до скорых встреч ;)