Когда узел помечает транзакцию как подтвержденную или неподтвержденную?

При передаче новых транзакций узлы сохраняют их в пуле неподтвержденных транзакций.

Один узел добавит его в блок, как только найдет доказательство работы. В то же время многие другие узлы работают над теми же транзакциями. Когда новый блок транслируется в сеть, он должен быть либо помечен как подтвержденный, либо удален из пула.

У меня есть несколько вопросов по этому процессу:

1- как другие узлы узнают, что новый блок уже создан, поэтому они должны прекратить работу над ним? (или их нет?)

2- когда в блокчейн добавляется новый блок транзакций, как другие узлы узнают, что они не должны учитывать эти транзакции при следующей попытке? Они читают узел и отмечают транзакцию как подтвержденную или удаляют их? Есть ли какие-либо другие сообщения, которыми они обмениваются?

3- если в блокчейн добавлено 2 новых блока в разных ветках. первая ветвь как активная, потому что этот блок был первым. приходит новый блок, а вторая ветвь отбрасывается. что происходит с транзакциями в отброшенной ветке? они точно уже есть в двух других блоках блокчейна? что узлы делают с ними?

Спасибо!

Ответы (1)

  1. Они не узнают о новом блоке, пока не получат его по одноранговой сети (или другим способом, например, FIBER ). Но поскольку он был передан в сеть, и все узлы в сети будут пытаться ретранслировать его всем своим партнерам, это должно произойти довольно быстро.

  2. Когда они получают блок, они знают, что нужно исключить эти транзакции из своих собственных блоков. (На практике они, вероятно, генерируют совершенно новый блок-кандидат, включая только еще не подтвержденные транзакции, и с новым заголовком, в котором только что полученный блок указан как родительский.)

  3. Когда узел меняет свое мнение о том, какая ветка активна, транзакции из ранее активной ветки (после блока, в котором они расходились) возвращаются в пул памяти, за исключением тех, которые уже находятся в новой активной ветке или конфликтуют с транзакция в этой ветке. Затем, как и все другие транзакции в пуле памяти, они могут быть включены в будущие блоки, созданные этим узлом.