Bitcoin Forum
March 03, 2021, 12:39:10 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, я правильно понимаю, что без этого флага двойная трата сейчас практически невозможна?
1614731950
Hero Member
*
Offline Offline

Posts: 1614731950

View Profile Personal Message (Offline)

Ignore
1614731950
Reply with quote  #2

1614731950
Report to moderator
1614731950
Hero Member
*
Offline Offline

Posts: 1614731950

View Profile Personal Message (Offline)

Ignore
1614731950
Reply with quote  #2

1614731950
Report to moderator
1614731950
Hero Member
*
Offline Offline

Posts: 1614731950

View Profile Personal Message (Offline)

Ignore
1614731950
Reply with quote  #2

1614731950
Report to moderator
Satoshi is no god. He did not come down from the mountain with 10 golden rules engraved in stone for no one to question.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1614731950
Hero Member
*
Offline Offline

Posts: 1614731950

View Profile Personal Message (Offline)

Ignore
1614731950
Reply with quote  #2

1614731950
Report to moderator
1614731950
Hero Member
*
Offline Offline

Posts: 1614731950

View Profile Personal Message (Offline)

Ignore
1614731950
Reply with quote  #2

1614731950
Report to moderator
1614731950
Hero Member
*
Offline Offline

Posts: 1614731950

View Profile Personal Message (Offline)

Ignore
1614731950
Reply with quote  #2

1614731950
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!