Балансы токенов с биржи
Как известно, в случае создания ордеров на внутренней бирже эти токены не учитывались на балансе и лишь изредка отображалась сумма в паре GOLOS/GBG.
Воркером @aerostorm1 было доработано сохранение данных маркет-балансов на нодах. Добавлены поля market_balance
(GOLOS в ордерах) и market_sbd_balance
(GBG в ордерах) в ответе на запрос get_accounts, аналогичный market_balance
и для UIA через get_accounts_balances.
Теперь все токены из ордеров на бирже отображаются в веб-клиенте, а по нажатию на балансы доступен список соответсвующих активных ордеров (с возможностью отмены и перехода к торговым парам).
Обновление компонентов
Продолжена работа по обновлению устаревших компонентов/зависимостей в целях повышения безопасности и сокращения "технического долга".
До актуальных версий обновлены компилятор Babel (используется для преобразования кода), Storybook (полезный для подготовки визуализации компонентов пользовательского интерфейса), портирован и доработан react-foundation-components, и многие другие зависимости...
Прочие правки
- Доработка отображения репутации на веб-клиенте с учетом изменений прошедшего хардфорка блокчейна.
Для тех кто не в теме, при регистрации репутация в блокчейне 0, но на сайте она "дорисовывается" до +25 очков. Дабы не исправлять этот момент спустя 5 лет, отнимая у всех -25, правка заденет только пользователей, ушедших в отрицательную репутацию.
Иначе имеем странную картину, в блокчейне репутация отрицательная, но на сайте рисуется +25, и мы видим цифры 14, 10 очков (что вводит в заблуждение)...
- Доработка сортировки торговых пар на внутренней бирже.
Теперь неактивные/забытые торговые пары в конце списка, а не по алфавиту как прежде.
Добавлено диалоговое окно при блокировке пользователей (для исключения случайных нажатий).
Доработка скрытия постов авторов с отрицательной репутацией от поисковых систем.
Исправление ошибки отображения картинок в лентах.
Утилита анализа данных нод
Имеющийся метод get_database_info возвращал информацию о статусе разделяемой памяти (название индекса, количество записей), этого было недостаточно. Утилита позволяет реально оценить направления потенциальной оптимизации, периодически анализируя объемы хранения данных на нодах.
Достаточно сделав бекап, остановить работу демона golosd в докер-контейнере, напр:
docker exec golos-default /usr/local/bin/golosdctl stop
И запустить утилиту на пару часов, указав путь до файлов хранения:
docker exec -it golos-default meter /var/lib/golosd/blockchain/
Для примера и понимания, будут получены отчёты подобного вида (объем данных, количество операций, наибольшая из них):
-------- Processing events.... ----------
4 MB producer_reward - 201600 pcs
heaviest is: ["producer_reward",{"producer":"denis-skripnik","vesting_shares":"1278.569765 GESTS"}]
26 MB comment - 18516 pcs
heaviest is: ["comment",{"parent_author":"","parent_permlink":"ru--literatura","author":"amidabudda","permlink":"pisatel-dnya-isaak-bashevis-zinger-21-noyabrya-1902-24-iyulya-1991","title":"ПИСАТЕЛЬ ДНЯ. Исаак Башевис-Зингер (21 ноября 1902 — 24 июля 1991)","body":"![](https://i.imgur.com/QZV9J1F.jpg)\n\nЕврейский писатель, родившийся в Польше...
37 MB custom_json - 242763 pcs
heaviest is: ["custom_json",{"required_auths":[],"required_posting_auths":["galina1"],"id":"private_message","json":"[\"private_message\",{\"from\":\"galina1\",\"to\":\"oksana0407\",\"nonce\":\"107168697263039503\",\"from_memo_key\":\"GLS7UBM5Mp6VrWTQvE2RqxCLFfdHogbC1GS3tSXkdSNRbp9RN8Kuv\",\"to_memo_key\":\"GLS7sfNWDNWUkgzpt2e5PzkFK5vUh4AAUZ6gZGFhwpT5aWpQedz8L\",\"checksum\":148400225,\"update\":false,\"encrypted_message\":\"85bb8...
0 MB feed_publish - 3282 pcs
heaviest is: ["feed_publish",{"publisher":"denis-skripnik","exchange_rate":{"base":"0.049 GBG","quote":"1.000 GOLOS"}}]
1 MB vote - 34007 pcs
heaviest is: ["vote",{"voter":"smotritelmayaka","author":"fotogid","permlink":"-ksantoprotein-re-aleos-re-ksantoprotein-re-aleos-re-lex-re-aleos-re-litrbooh-re-aleos-re-litrbooh-re-aleos-re-litrbooh-re-aleos-re-litrbooh-re-aleos-re-lex-informaciya-o-nedavnikh-izmeneniyakh-26-khardforka-obnovleniya-koda-blokcheina-20211021t193139638z","weight":2000}]
...
Такой же вывод отдельно для operation history.
Ну и собственно отчет по shared_memory.bin хранилищу, с разбивкой и по подключаемым плагинам:
-------- Processing indexes.... ----------
0 MB dynamic_global_property_object
150 MB account_object
81 MB account_authority_object
25 MB account_bandwidth_object
2 MB witness_object
0 MB transaction_object
5 MB block_summary_object
0 MB witness_schedule_object
6299 MB comment_object
7 MB comment_vote_object
0 MB witness_vote_object
0 MB limit_order_object
0 MB feed_history_object
0 MB convert_request_object
0 MB liquidity_reward_balance_object
0 MB hardfork_property_object
1 MB withdraw_vesting_route_object
0 MB owner_authority_history_object
0 MB account_recovery_request_object
0 MB change_recovery_account_request_object
0 MB escrow_object
0 MB savings_withdraw_object
0 MB decline_voting_rights_request_object
17 MB vesting_delegation_object
0 MB vesting_delegation_expiration_object
39 MB account_metadata_object
0 MB proposal_object
0 MB required_approval_object
0 MB worker_request_object
0 MB worker_request_vote_object
15 MB donate_object
0 MB invite_object
0 MB asset_object
0 MB account_balance_object
0 MB event_object
66 MB - account_by_key::key_lookup_object
0 MB - account_notes::account_note_object
0 MB - account_notes::account_note_stats_object
390 MB - follow::follow_object
817 MB - follow::feed_object
438 MB - follow::blog_object
36 MB - follow::follow_count_object
11 MB - follow::blog_author_stats_object
571 MB - social_network::comment_content_object
2365 MB - social_network::comment_last_update_object
383 MB - social_network::comment_reward_object
24 MB - social_network::donate_data_object
2 MB - private_message::message_object
0 MB - private_message::settings_object
0 MB - private_message::contact_object
0 MB - private_message::contact_size_object
4 MB - tags::tag_object
0 MB - tags::tag_stats_object
0 MB - tags::author_tag_stats_object
0 MB - tags::language_object
0 MB - worker_api::worker_request_metadata_object
106 MB - account_history::account_history_object
152 MB - operation_history::operation_object
0 MB - market_history::bucket_object
37 MB - market_history::order_history_object
143 MB - event_plugin::op_note_object
Любопытно, что comment_object
на делегатских нодах занимает почти 80% shared_memory. Возможно когда-то будут идеи как это лучше изменить (перейдя на хранение хешей или идентификаторов вместо длинных пермлинков)...
@lex, Да: id достаточно + хэш поста. Ну а бд транслировать по p2p + желающие могут хранить и выдавать по запросу. Также можно сделать вознаграждение за предоставление данных, соответствующих хэшу, с наибольшей скоростью получателю в UIA или даже GOLOS / GBG... Ну это так: идея (может фигня)...
@denis-skripnik, по постам не страшно, посты лежат в
social_network::comment_content_object
и плагин только на тех АПИ-нодах где оно надо, сейчас 10 млн постов занимают примерно 10 гб в шаред-мемори...А вот
comment_object
, с пермлинками для проверок пост/коммент и т.д., на всех нодах, в т.ч. делегатских/seed, и по сути именно он интересная цель для оптимизации на будущее.@lex, Понятно.
@lex, nihil constat, sed jucundum. 😎