Bitcoin Forum
May 25, 2024, 09:11:47 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Распространение данных в p2p сети  (Read 3910 times)
UncleAndy (OP)
Newbie
*
Offline Offline

Activity: 12
Merit: 0


View Profile
April 21, 2015, 05:35:39 PM
 #1

Всем привет!

Недавно только заинтересовался внутренностями протокола биткоин и никак не могу найти ответ на вопрос - как распространяется неподтвержденная транзакция в сети биткоин? Т.е. с помощью какой технологии? Узлы просто скачивают списки адресов с других узлов и рассылают новые транзакции по ним?

Аналогично - как распространяются замайненные блоки? Через ту-же сеть или для них есть отдельная?
awoland
Legendary
*
Offline Offline

Activity: 1498
Merit: 1021

Was mich nicht umbringt macht mich stärker [F.N.]


View Profile WWW
April 22, 2015, 07:53:49 AM
 #2

Узел, инициирующий транзакцию, рассылает её своим пирам. А уже эти пиры рассылают далее - другим.
Каждый узел (пир) принимает транзакции из сети и сверяет на соответствие (наличие) с локальным пулом неподтверждённых транзакций. Если правильная (по всем остальным параметрам) транзакция отсутствует в локальном пуле, она заноситься в этот пул и рассылается далее. Если транзакция не проходит проверку на валидность она отбрасывается, а узел активно и систематически рассылающий такие транзакции попадает в чёрный список и далее транзакции от этого узла игнорируются (бан).

Was mich nicht umbringt macht mich stärker [F.N.]
UncleAndy (OP)
Newbie
*
Offline Offline

Activity: 12
Merit: 0


View Profile
April 22, 2015, 10:03:43 AM
 #3

Спасибо за понятный ответ! Smiley

А пиры, как я понимаю, формируются через обмен пирами между разными клиентами и специальным IRC? А в каком порядке идут проверки? Сначала на IRC или сначала на 8 базовых (зашитых в клиенте) пиров?

Да... И еще - для чего используется локальный пул неподтвержденных транзакций? Я так понимаю, что если транзакция относится к текущему узлу, тут все ясно - показывается неподтвержденное перечисление. Если текущий узел занимается майнингом, он включает транзакции в свой блок (кстати, как он при этом выбирает какие именно транзакции включать в блок?). А что в этом пуле неподтвержденных транзакций происходит на обычном узле, к которому эти транзакции не относятся? Они все всегда на нем хранятся? Или хранятся только до момента подтверждения, а потом стираются?
amaclin
Legendary
*
Offline Offline

Activity: 1260
Merit: 1019


View Profile
April 22, 2015, 04:35:46 PM
Last edit: April 22, 2015, 04:46:42 PM by amaclin
 #4

Да... И еще - для чего используется локальный пул неподтвержденных транзакций?
Потому что каждый узел вообще говоря обязан проверять корректность транзакций и не пересылать ничего лишнего.
То есть у тебя, допустим, 8 пиров.
Получаешь от одного из них транзакцию, которая до этого была неизвестна тебе.
Сохраняешь её у себя в пуле и остальным 7 своим пирам говоришь, что у тебя есть новая транзакция.
Они могут у тебя её запросить. А могут и не запросить, если уже получили другим способом

По идее никто не требует, чтобы твой пул неподтвержденных транзакций был бы какого-то конкретного размера.
Можешь не хранить ничего. И другим не пересылать. Никто не запрещает в принципе.
Колхоз - дело добровольное.

Quote
Если текущий узел занимается майнингом, он включает транзакции в свой блок (кстати, как он при этом выбирает какие именно транзакции включать в блок?).
Как хочет, так и выбирает. Никаких ограничений на комплектность, за исключением формальных правил типа того что если транзакция B тратит выходы транзакции A то нельзя включать в блок транзакцию B если транзакция A не была включена до этого (в том числе и в данный блок).
Поэтому могут быть блоки из одной транзакции, а могут быть забитыми под завязку.
Как правило, майнеры сортируют транзакции по комиссиям в порядке убывания и включают в блок те, которые имеют комиссию выше заданной. Некоторые пулы задают 0.0001 за килобайт, некоторые 0.00001, некоторые еше меньше

Quote
Они все всегда на нем хранятся? Или хранятся только до момента подтверждения, а потом стираются?
Хранить все транзакции никто не будет.
Существуют транзакции, которые практически стопроцентно никто в блок не включит.
Ноды их и не хранят.
В общем правило такое - если ты принял транзакцию, она вроде как тебя устраивает - то ты сообщаешь своим пирам о ней и хранишь ее какое-то время чтобы они могли её у тебя попросить. Если ты не майнер - можешь дропать её через пять минут.
Конечно, если ты увидел транзакцию в блоке - то смело дропай её из мемори-пула - зачем лишнюю память занимать?

UncleAndy (OP)
Newbie
*
Offline Offline

Activity: 12
Merit: 0


View Profile
April 22, 2015, 05:14:29 PM
 #5

Понял. Спасибо! Я примерно так и подозревал.
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!