Author

Topic: Конкурирующие транзакции? (Read 786 times)

sr. member
Activity: 770
Merit: 305
Какова вероятность исполнения Т2 раньше Т1?
Зависит от многих условий. В первую очередь от комиссии T1 и пиров K1
Как правило, после того как одна из транзакций подтверждена в блок, вторая
становится невалидной и все компьютеры сети про нее забывают. То есть она
подтвердиться не может. Есть редкие контр-примеры связанные с орфанами.

Quote
Зависит ли это от времени В?
Чем меньше время между отправками - тем больше вероятность у T2

Quote
Зависит ли это от наличия/количества подтверждений Т1 на момент отправки Т2?
Если есть хоть одно подтверждение T1 - то вероятность того, что транзакция T2
попадет в основную цепочку практически нулевая. (не нулевая, но очень маленькая)
full member
Activity: 364
Merit: 101
Благодарю! Пойду вникать дальше.
LZ
legendary
Activity: 1722
Merit: 1072
P2P Cryptocurrency
Да.
full member
Activity: 364
Merit: 101
...то ноды Н1-Н5 отбрасывают Т1 и не начинают транслировать Т2.
А зачем её передавать соседям, если она уже включена в блок?
Да, это я что-то не в ту степь. Smiley Слишком близко принял к сердцу судьбу Т2.

Закрепленные в блоке транзакции имеют больший
приоритет в системе, чем незакрепленные в блоке.
Ноды удалят любую несовместимую с блокчейном
транзакцию из мемпула. В самом же блокчейне не
могут быть никакие противоречия принципиально.
Если даже обе конкурирующие транзакции будут
в блоках, все равно выживет только одна ветка.
Кажется, понял.
Транзакция Т1 через ноды Н1-Н5 попала в блок Б1.
Транзакция Т2 через ноды Н6-Н10 попала в блок Б2.
Если блок Б1 будет признан орфанным - выживет транзакция Т2, а если блок Б2 будет признан орфанным - то выживет Т1.
Так?
LZ
legendary
Activity: 1722
Merit: 1072
P2P Cryptocurrency
Закрепленные в блоке транзакции имеют больший
приоритет в системе, чем незакрепленные в блоке.
Ноды удалят любую несовместимую с блокчейном
транзакцию из мемпула. В самом же блокчейне не
могут быть никакие противоречия принципиально.
Если даже обе конкурирующие транзакции будут
в блоках, все равно выживет только одна ветка.
legendary
Activity: 2317
Merit: 2318

1. Неподтвержденная транзакция Т1 добралась до нод Н1-Н5.
2. Неподтвержденной транзакции Т2 вход на Н1-Н5 заказан.
3. У транзакции Т2 есть возможность попасть на другие ноды (Н6-Н10) только если они еще не получили Т1. Допустим, она туда попала.
4. Транзакция Т2 получает одно подтверждение и наконец добирается до нод Н1-Н5.
5. Если Т1 до сих пор не получила ни одного подтверждения, то ноды Н1-Н5 отбрасывают Т1 и начинают транслировать Т2.

...то ноды Н1-Н5 отбрасывают Т1 и не начинают транслировать Т2.
А зачем её передавать соседям, если она уже включена в блок?
full member
Activity: 364
Merit: 101
В общем случае - меньше, т.к. должны одновременно выполниться 2 условия - включение Т2 в блок Б2, и признание орфаном блока Б1.
Да, точно, там же еще Т2 должна сначала в Б2 попасть.
В сети BTC эта вероятность близка к 0, т.к майнерами был предпринят ряд специальных мер для предотвращения орфанов.
А вот этот ресурс более-менее правдоподобное представление о количестве орфанных блоков дает?
https://blockchain.info/ru/orphaned-blocks?offset=0 (надеюсь, этой ссылкой я ничего не нарушаю?)
Хотя последний там почему-то указан еще от 01 июля...

Достаточно 0 подтверждений. Все обычные ноды откажутся релеить даблспенд.
Когде же будет 1 подтверждение, то ноды отбросят конкурирующую транзакцию,
имею в виду те ноды, что первой получили другую транзакцию, если такие будут.
В теории возможны конфликтные ситуации, если же обе транзакции отправлены
одновременно с разных сторон Земли, но на практике это весьма маловероятно.
Вы орфаны рассматриваете, чтоб дело дошло до них - многое должно совпасть.
Т.е. примерно так:
1. Неподтвержденная транзакция Т1 добралась до нод Н1-Н5.
2. Неподтвержденной транзакции Т2 вход на Н1-Н5 заказан.
3. У транзакции Т2 есть возможность попасть на другие ноды (Н6-Н10) только если они еще не получили Т1. Допустим, она туда попала.
4. Транзакция Т2 получает одно подтверждение и наконец добирается до нод Н1-Н5.
5. Если Т1 до сих пор не получила ни одного подтверждения, то ноды Н1-Н5 отбрасывают Т1 и начинают транслировать Т2.

Все правильно?

А если на этапе 5 (когда транзакция Т2 добирается до нод Н1-Н5 имея одно подтверждение) у Т1 тоже есть одно подтверждение? Ноды Н1-Н5 будут продолжать поддерживать "родную" Т1?
И как ноды разруливают ситуацию, когда у конкурирующих транзакция разное (но ненулевое) количество подтверждений - у кого больше подтверждений, тот и прав, или кто раньше на ноду пришел - тот и остается?
LZ
legendary
Activity: 1722
Merit: 1072
P2P Cryptocurrency
Достаточно будет всего одного подтверждения у любого майнера, чтобы вторую отшили все остальные?
Достаточно 0 подтверждений. Все обычные ноды откажутся релеить даблспенд.
Когде же будет 1 подтверждение, то ноды отбросят конкурирующую транзакцию,
имею в виду те ноды, что первой получили другую транзакцию, если такие будут.
В теории возможны конфликтные ситуации, если же обе транзакции отправлены
одновременно с разных сторон Земли, но на практике это весьма маловероятно.
Вы орфаны рассматриваете, чтоб дело дошло до них - многое должно совпасть.
legendary
Activity: 1200
Merit: 1021
Т.е. после включения Т1 в блок Б1, вероятность подтверждения Т2 посредством блока Б2 равна или даже меньше вероятности признания Б1 орфанным?

В общем случае - меньше, т.к. должны одновременно выполниться 2 условия - включение Т2 в блок Б2, и признание орфаном блока Б1.

А вероятность возникновения орфанного блока как-то в цифрах/формулах можно выразить?

В сети BTC эта вероятность близка к 0, т.к майнерами был предпринят ряд специальных мер для предотвращения орфанов.

В сетях слабых форков орфаны - рядовое явление, причём чем меньше время между блоками, тем чаще возникают орфаны.
full member
Activity: 364
Merit: 101
Подтверждение майнером = включение транзакции в блок.

Т2 теоретически может подтвердиться, если другой майнер найдёт другой блок с тем же предшественником, включив в него Т2, этот другой блок будет признан сетью, а блок первого майнера станет орфаном.

Т.е. после включения Т1 в блок Б1, вероятность подтверждения Т2 посредством блока Б2 равна или даже меньше вероятности признания Б1 орфанным?

А вероятность возникновения орфанного блока как-то в цифрах/формулах можно выразить?
legendary
Activity: 1200
Merit: 1021
Достаточно будет всего одного подтверждения у любого майнера, чтобы вторую отшили все остальные? Т.е., если Т1 получит одно подтверждение у любого майнера, то Т2 будет автоматически отшиваться всеми прочими майнерами?

Или возможна технически ситуация, при которой Т1 будет подтверждена майнерами М1, М2, ..., М5, а Т2 - майнерами М6-М10 (т.е. каждую транзакции подтвердили независимо друг от друга по пять разных майнеров)?

Подтверждение майнером = включение транзакции в блок.

Т2 теоретически может подтвердиться, если другой майнер найдёт другой блок с тем же предшественником, включив в него Т2, этот другой блок будет признан сетью, а блок первого майнера станет орфаном.
full member
Activity: 364
Merit: 101
3. Да. Если одна транза подтвердилась, то вторую все отошьют.

Достаточно будет всего одного подтверждения у любого майнера, чтобы вторую отшили все остальные? Т.е., если Т1 получит одно подтверждение у любого майнера, то Т2 будет автоматически отшиваться всеми прочими майнерами?

Или возможна технически ситуация, при которой Т1 будет подтверждена майнерами М1, М2, ..., М5, а Т2 - майнерами М6-М10 (т.е. каждую транзакции подтвердили независимо друг от друга по пять разных майнеров)?
И если возможна:
- что произойдет, если эти транзакции, набравшие по пять подтверждений встретятся у майнера М11?
- что произойдет, если перед встречей у майнера М11 Т1 наберет, скажем, 3 подтверждения, а Т2 - 5?
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange

Какова вероятность исполнения Т2 раньше Т1?
Зависит ли это от времени В?
Зависит ли это от наличия/количества подтверждений Т1 на момент отправки Т2?


1. 50/50
2. очень слабо зависит.
3. Да. Если одна транза подтвердилась, то вторую все отошьют.
full member
Activity: 364
Merit: 101
Добрый день!
Возник вопрос по конкурирующим транзакциям (если такой термин вообще применим к блокчейну).

1. Имеется адрес А0 с балансом Б.
2. Имеется 2 компьютера (К1 и К2), с которых может производиться отправка с адреса А0, и два адреса, на которые будет осуществляться отправка (А1 и А2).
3. С К1 осуществляется отправка с А0 на А1 - Т1.
4. Через некоторое время В с К2 отправляется транзакция с А0 на А2 - Т2.
5. Транзакции проходят медленно и на момент отправки Т2 транзакция Т1 не получила ни одного подтверждения. И на адрес А1, и на адрес А2 отправляется вся сумма Б.

Какова вероятность исполнения Т2 раньше Т1?
Зависит ли это от времени В?
Зависит ли это от наличия/количества подтверждений Т1 на момент отправки Т2?
Jump to: