Bitcoin Forum
December 13, 2024, 09:44:44 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Конкурирующие транзакции?  (Read 788 times)
freqenqerf (OP)
Full Member
***
Offline Offline

Activity: 364
Merit: 101


View Profile
August 08, 2017, 08:41:18 AM
 #1

Добрый день!
Возник вопрос по конкурирующим транзакциям (если такой термин вообще применим к блокчейну).

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?
kzv
Legendary
*
Offline Offline

Activity: 1722
Merit: 1287

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
August 08, 2017, 10:47:15 AM
 #2


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


1. 50/50
2. очень слабо зависит.
3. Да. Если одна транза подтвердилась, то вторую все отошьют.

OpenTrade - Open Source Cryptocurrency Exchange
freqenqerf (OP)
Full Member
***
Offline Offline

Activity: 364
Merit: 101


View Profile
August 08, 2017, 01:34:28 PM
 #3

3. Да. Если одна транза подтвердилась, то вторую все отошьют.

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

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

Activity: 1200
Merit: 1021



View Profile
August 08, 2017, 02:00:02 PM
 #4

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

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

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

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

1BTCin1ooigFtHHD82qquqysdfxFZGdd8a  |  LTCin1oo9JhxcZu8ZK5HivqwvzAdQSaoua  |  4NVCin1ooAd2XKoEfEhBn6tYNUHhojf4QS
Блокчейн биткоина с его алгоритмом децентрализованного консенсуса на самом деле неэффективен, но неэффективность – это та цена, которую мы платим за свободу.© Andreas Antonopoulos
freqenqerf (OP)
Full Member
***
Offline Offline

Activity: 364
Merit: 101


View Profile
August 08, 2017, 02:52:23 PM
 #5

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

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

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

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

Activity: 1200
Merit: 1021



View Profile
August 09, 2017, 06:05:29 AM
 #6

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

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

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

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

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

1BTCin1ooigFtHHD82qquqysdfxFZGdd8a  |  LTCin1oo9JhxcZu8ZK5HivqwvzAdQSaoua  |  4NVCin1ooAd2XKoEfEhBn6tYNUHhojf4QS
Блокчейн биткоина с его алгоритмом децентрализованного консенсуса на самом деле неэффективен, но неэффективность – это та цена, которую мы платим за свободу.© Andreas Antonopoulos
LZ
Legendary
*
Offline Offline

Activity: 1722
Merit: 1072


P2P Cryptocurrency


View Profile
August 09, 2017, 10:45:45 AM
Last edit: August 09, 2017, 10:56:06 AM by LZ
 #7

Достаточно будет всего одного подтверждения у любого майнера, чтобы вторую отшили все остальные?
Достаточно 0 подтверждений. Все обычные ноды откажутся релеить даблспенд.
Когде же будет 1 подтверждение, то ноды отбросят конкурирующую транзакцию,
имею в виду те ноды, что первой получили другую транзакцию, если такие будут.
В теории возможны конфликтные ситуации, если же обе транзакции отправлены
одновременно с разных сторон Земли, но на практике это весьма маловероятно.
Вы орфаны рассматриваете, чтоб дело дошло до них - многое должно совпасть.

My OpenPGP fingerprint: 5099EB8C0F2E68C63B4ECBB9A9D0993E04143362
freqenqerf (OP)
Full Member
***
Offline Offline

Activity: 364
Merit: 101


View Profile
August 09, 2017, 03:10:35 PM
 #8

В общем случае - меньше, т.к. должны одновременно выполниться 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?
И как ноды разруливают ситуацию, когда у конкурирующих транзакция разное (но ненулевое) количество подтверждений - у кого больше подтверждений, тот и прав, или кто раньше на ноду пришел - тот и остается?
A-Bolt
Legendary
*
Offline Offline

Activity: 2336
Merit: 2385


View Profile
August 09, 2017, 08:04:50 PM
 #9


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.
А зачем её передавать соседям, если она уже включена в блок?
LZ
Legendary
*
Offline Offline

Activity: 1722
Merit: 1072


P2P Cryptocurrency


View Profile
August 09, 2017, 11:50:29 PM
 #10

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

My OpenPGP fingerprint: 5099EB8C0F2E68C63B4ECBB9A9D0993E04143362
freqenqerf (OP)
Full Member
***
Offline Offline

Activity: 364
Merit: 101


View Profile
August 10, 2017, 02:18:31 PM
 #11

...то ноды Н1-Н5 отбрасывают Т1 и не начинают транслировать Т2.
А зачем её передавать соседям, если она уже включена в блок?
Да, это я что-то не в ту степь. Smiley Слишком близко принял к сердцу судьбу Т2.

Закрепленные в блоке транзакции имеют больший
приоритет в системе, чем незакрепленные в блоке.
Ноды удалят любую несовместимую с блокчейном
транзакцию из мемпула. В самом же блокчейне не
могут быть никакие противоречия принципиально.
Если даже обе конкурирующие транзакции будут
в блоках, все равно выживет только одна ветка.
Кажется, понял.
Транзакция Т1 через ноды Н1-Н5 попала в блок Б1.
Транзакция Т2 через ноды Н6-Н10 попала в блок Б2.
Если блок Б1 будет признан орфанным - выживет транзакция Т2, а если блок Б2 будет признан орфанным - то выживет Т1.
Так?
LZ
Legendary
*
Offline Offline

Activity: 1722
Merit: 1072


P2P Cryptocurrency


View Profile
August 10, 2017, 11:50:42 PM
 #12

Да.

My OpenPGP fingerprint: 5099EB8C0F2E68C63B4ECBB9A9D0993E04143362
freqenqerf (OP)
Full Member
***
Offline Offline

Activity: 364
Merit: 101


View Profile
August 11, 2017, 08:06:37 AM
 #13

Благодарю! Пойду вникать дальше.
amaclin1
Sr. Member
****
Offline Offline

Activity: 966
Merit: 383


View Profile
August 14, 2017, 08:49:48 AM
 #14

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

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

Quote
Зависит ли это от наличия/количества подтверждений Т1 на момент отправки Т2?
Если есть хоть одно подтверждение T1 - то вероятность того, что транзакция T2
попадет в основную цепочку практически нулевая. (не нулевая, но очень маленькая)
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!