Как выбирается действительная транзакция при попытке двойной траты?

Предположим, я публикую закрытый ключ адреса, содержащего 1 биткойн. Если два человека попытаются перевести этот биткойн на другой адрес до того, как будет найден новый блок, кто его получит? Как принимается это решение?

возможный дубликат: bitcoin.stackexchange.com/questions/730/…

Ответы (2)

Когда узел получает две конфликтующие транзакции, он ретранслирует только первую полученную транзакцию, отбрасывая другую. Если одна транзакция полностью распространяется по сети до того, как будет отправлена ​​другая, первая не позволит второй достичь каких-либо узлов майнера.

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

Майнеры не обязаны включать какую-либо конкретную транзакцию в блок.

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

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

В конечном итоге транзакция, включенная в блок, разрешит «гонку».

«Отключение» сети можно обойти, отправив TX непосредственно в пулы.