Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vvk
6 лет назад

Устаревание транзакций в блокчейне Голос

Данная статья служит черновиком wiki-статьи по результатам вчерашнего обсуждения в чате Goloscore. Материал призван помочь разработчикам приложений исключить потерю транзакций при работе с блокчейном Голос. Приглашаю @goloscore на review. Текущая версия статьи находится на github.

Устаревание транзакций

Транзакция, отправляемая на golos-ноду, должна содержать поле expiration, указывающее момент времени, до которого транзакция является валидной. Если по каким-то причинам транзакция не будет включена в блок за это время, то она устареет и будет просто удалена нодой.

Что происходит при форках сети

В некоторых случаях происходит такая ситуация, при которой блок генерируется одновременно двумя делегатами, и некоторое короткое время параллельно существуют две цепи блоков. При обнаружении такой ситуации нода просматривает цепочку в обратном порядке до нахождения last irreversible block, при этом читаются все транзакции из блоков и опять попадают в очередь на включение в блоки (см. libraries/chain/database.cpp void database::pop_block()). Самая длинная цепочка в итоге становится основной.

Чтобы исключить потерю транзакций во время форков сети, следует задавать expiration больше чем время до last_irreversible_block, например 60 секунд.

Связь с TaPoS

В транзакции так же имеются поля ref_block_num и ref_block_prefix, которые как бы указывают, что "данная транзакция является валидной, если она находится в цепи, в которой имеется блок с номером X и с префиксом Y", см. Транзакции как доказательство долей

Соответственно, если транзакция ссылается на блок, который присутствует только в побочной цепи, данная транзакция будет отброшена нодой в любом случае.


Мои opensource-проекты на Голосе

  • golos-witness-tools - набор скриптов для делегатов.
  • golos-otkat-py - скрипт для выполнения откатов по программам апвот50-50 и апвот100.
  • golos-scripts - разные полезные скрипты для Голоса на python
1
260.355 GOLOS
На Golos с September 2017
Комментарии (12)
Сортировать по:
Сначала старые