Bitcoin Forum
March 03, 2021, 12:23:16 AM *
News: Latest Bitcoin Core release: 0.21.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Синхронизация цепочки транзакций  (Read 173 times)
igor72
Legendary
*
Offline Offline

Activity: 1050
Merit: 1079


View Profile
September 28, 2019, 10:21:54 AM
 #1

Теоретический вопросик.

Допустим, нужно передать битки с адреса А на адрес С через адрес В, то есть A -> B -> C, но приватник адреса В известен не только мне, но и всему миру.

Если я на локальной ноде отключусь от сети, выполню эти две транзакции (A-B и B-C без RBF) и подключусь снова, будет ли теоретическая возможность у кого-то перехватить монеты на адресе В? Просто я не понимаю, как будет происходить синхронизация этих транзакций, по отдельности или цепочки в целом?

И по RBF, я правильно понимаю, что без этого флага двойная трата сейчас практически невозможна?
1614730996
Hero Member
*
Offline Offline

Posts: 1614730996

View Profile Personal Message (Offline)

Ignore
1614730996
Reply with quote  #2

1614730996
Report to moderator
1614730996
Hero Member
*
Offline Offline

Posts: 1614730996

View Profile Personal Message (Offline)

Ignore
1614730996
Reply with quote  #2

1614730996
Report to moderator
1614730996
Hero Member
*
Offline Offline

Posts: 1614730996

View Profile Personal Message (Offline)

Ignore
1614730996
Reply with quote  #2

1614730996
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1614730996
Hero Member
*
Offline Offline

Posts: 1614730996

View Profile Personal Message (Offline)

Ignore
1614730996
Reply with quote  #2

1614730996
Report to moderator
kzv
Legendary
*
Offline Offline

Activity: 1624
Merit: 1230

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
September 28, 2019, 07:20:43 PM
Merited by xenon131 (1)
 #2

Если в мемпул попадет транзакция для которой известен приватник, то с вероятностью около 100% с эти монеты перехватят. Получится цепочка A -> B -> amaclin ))

Все просто на самом деле если усвоить, что любая транзакция это контракт.
Контракт A -> B в переводе на человеческий звучит так: "я знаю приватник А, битки из А разрешается потратить любому, кто знает приватник В"
Контракт B -> C в переводе на человеческий звучит так: "я знаю приватник В, битки из В разрешается потратить любому, кто знает приватник С"



Coin-1
Legendary
*
Offline Offline

Activity: 1288
Merit: 1215



View Profile
September 28, 2019, 07:32:35 PM
Merited by igor72 (1)
 #3

Если я на локальной ноде отключусь от сети, выполню эти две транзакции (A-B и B-C без RBF) и подключусь снова, будет ли теоретическая возможность у кого-то перехватить монеты на адресе В? Просто я не понимаю, как будет происходить синхронизация этих транзакций, по отдельности или цепочки в целом?

Я так понимаю, Вы имеете в виду, что в оффлайне сначала создадите и подпишете Bitcoin-транзакцию A-B, которая будет тратить выход с адреса A, а затем создадите и подпишете транзакцию B-C, которая будет тратить выход с адреса B. Хотя транзакции B-C пока нет в блокчейне, её можно создать заранее, так как известен SHA256-хеш транзакции A-B и порядковый номер выхода. После этого Вы одновременно броадкастингом распространите обе эти транзакции в сети.

В этом случае да, возможность перехватить монеты будет абсолютно реальная. Дело в том, что транзакция B-C, попав в пул, изначально будет считаться невалидной, так как ссылается на пока ещё не записанный в блокчейн SHA256-хеш транзакции. Но, когда майнер включит транзакцию A-B в Bitcoin-блок, транзакция B-C станет действительной.

Атакующий, зная приватный ключ к адресу B, может оперативно создать и подписать транзакцию B-C по переводу монет на его собственный адрес, задав больший размер комиссии, и в итоге Ваша транзакция B-C, скорее всего, не попадёт в блокчейн.
igor72
Legendary
*
Offline Offline

Activity: 1050
Merit: 1079


View Profile
September 28, 2019, 08:38:20 PM
Last edit: September 28, 2019, 09:31:21 PM by igor72
 #4

Если в мемпул попадет транзакция для которой известен приватник, то с вероятностью около 100% с эти монеты перехватят. Получится цепочка A -> B -> amaclin ))
Так уж и 100% )). Можем поэкспериментировать - я дам адрес с приватником и даже примерное время транзакции скажу - попробуйте перехватить.


Я так понимаю, Вы имеете в виду, что в оффлайне сначала создадите и подпишете Bitcoin-транзакцию A-B, которая будет тратить выход с адреса A, а затем создадите и подпишете транзакцию B-C, которая будет тратить выход с адреса B. Хотя транзакции B-C пока нет в блокчейне, её можно создать заранее, так как известен SHA256-хеш транзакции A-B и порядковый номер выхода. После этого Вы одновременно броадкастингом распространите обе эти транзакции в сети.
Ну как одновременно... Я сделаю первую транзакцию и вслед за ней вторую. Это все в офлайне. Можно, конечно, и заранее заготовить, не важно. То есть на моей ноде обе транзакции уже в мемпуле и ждут подтверждения. После этого врубаю интернет, моя нода синхронизируется с другими. Я хотел бы понять, как эта синхронизация проходит? Мне представляется два варианта:
1. По нодам распространяются обе транзакции вместе.
2. Они идут по отдельности, и поэтому возможен вариант, что на часть нод придет сначала первая, а только, скажем, через минуту вторая.

Quote
В этом случае да, возможность перехватить монеты будет абсолютно реальная. Дело в том, что транзакция B-C, попав в пул, изначально будет считаться невалидной, так как ссылается на пока ещё не записанный в блокчейн SHA256-хеш транзакции. Но, когда майнер включит транзакцию A-B в Bitcoin-блок, транзакция B-C станет действительной.

Атакующий, зная приватный ключ к адресу B, может оперативно создать и подписать транзакцию B-C по переводу монет на его собственный адрес, задав больший размер комиссии, и в итоге Ваша транзакция B-C, скорее всего, не попадёт в блокчейн.
Как я понимаю, для этого надо, чтобы моя вторая транзакция пришла на половину нод позже, чем транзакция атакующего, так? И это возможно (при том, что она начала распространяться одновременно с первой)?
A-Bolt
Legendary
*
Offline Offline

Activity: 1804
Merit: 1542


View Profile
September 29, 2019, 08:54:39 AM
Merited by igor72 (1)
 #5

2. Они идут по отдельности, и поэтому возможен вариант, что на часть нод придет сначала первая, а только, скажем, через минуту вторая.

Это теоретически возможно, но маловероятно. Транзакции, отправленные одна за одной попадут в мемпулы практически одновременно.

Перехват транзакции B->C возможен, если замещающая транзакция содержит бОльшую комиссию (даже без флага RBF).
Возможен, но не гарантирован.
igor72
Legendary
*
Offline Offline

Activity: 1050
Merit: 1079


View Profile
September 29, 2019, 09:56:59 AM
 #6

Перехват транзакции B->C возможен, если замещающая транзакция содержит бОльшую комиссию (даже без флага RBF).
Возможен, но не гарантирован.
Конечно, если транзакцию без RBF-флага можно легко перебить (не майнеру), то все теряет смысл. Просто у меня не получилось в мейннете даблспенднуть транзакции без RBF (с RBF легко), и я решил, что в наше время большинство нод (по умолчанию, по крайней мере) такие транзакции отвергают. Значит я ошибался, так?
fxpc
Sr. Member
****
Offline Offline

Activity: 1288
Merit: 417


KTO EC/\U HUKTO?


View Profile
September 29, 2019, 10:44:34 AM
 #7

Разве транзакции попадая в мемпул сразу включаются в UTXO и можно отправлять транзакцию B-C не дожидаясь включения в блок транзакции A-B? Если так, то какой лимит на глубину очереди и есть ли он вообще? Если лимита нет, то мемпул можно положить.

igor72
Legendary
*
Offline Offline

Activity: 1050
Merit: 1079


View Profile
September 29, 2019, 11:00:10 AM
 #8

Разве транзакции попадая в мемпул сразу включаются в UTXO и можно отправлять транзакцию B-C не дожидаясь включения в блок транзакции A-B?
Я делал эти две транзакции в Электруме в тестнете (у меня Электрум подключен к своей ноде через EPS) в офлайне, баланс адекватно менялся и в электруме, и на морде bitcoin-qt. Куда там они включались, я не знаю, честно говоря.
kzv
Legendary
*
Offline Offline

Activity: 1624
Merit: 1230

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
September 29, 2019, 11:11:20 AM
Merited by A-Bolt (1), xenon131 (1), igor72 (1)
 #9

Сеть постоянно мониторят боты любителей халявы. Даже этот форум мониторят: парсят все сообщения на предмет наличия приватных ключей в них...
То есть транзакция B -> C и транзакция B -> amaclin попадут в сеть практически одновреенно, ну может вторая с задержкой в пару секунд. При том, что B -> amaclin полетит одновременно почти ко всем известным онлайн нодам, а ваша B -> C скорее всего полетит лишь к 10 или 20 нодам с которыми ваш клиент держит связь по умолчанию.

igor72
Legendary
*
Offline Offline

Activity: 1050
Merit: 1079


View Profile
September 30, 2019, 09:00:14 AM
 #10

Всем спасибо за ответы!
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!