Bitcoin Forum
September 04, 2025, 10:09:44 PM *
News: Latest Bitcoin Core release: 29.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Зачем проверяются блоки сначала  (Read 741 times)
Alda Gordaya (OP)
Member
**
Offline Offline

Activity: 61
Merit: 10



View Profile
January 27, 2013, 03:43:57 AM
Last edit: January 27, 2013, 04:01:38 AM by Alda Gordaya
 #1

Зачем проверяются блоки сначала и проверка затрагивает каждый блок (а не некоторые выборочно)?

ведь у новичка пустой кошелёк - и ему не важно, чтобы были проверены все транзакции.
Ему надо, чтобы была проверена одна транзакция, которая переводит ему деньги.

Можно ли сократить время проверки, если проверять только эту транзакцию и те транзакции, на которые она ссылается входами?
Yurock
Sr. Member
****
Offline Offline

Activity: 462
Merit: 250


View Profile
January 27, 2013, 06:48:57 AM
 #2

Чтобы проверить блок, надо проверить все транзакци в блоке и наличие prev_block в цепочке. Чтобы убедиться, что prev_block есть в цепочке, его тоже надо проверить. И далее по рекурсии до самого первого блока, который проверяется другим способом – его хеш считается общеизвестным и зашит в программу.

Большинству пользователей не обязательно загружать и проверять всю историю транзакций. Любая транзакция может быть проверена по заголовкам блоков и хешам Merkle Tree. Программе, не проверяющей историю, могут быть подсунуты заголовки фальшивых блоков. Однако, чтобы окупить создание, скажем, 6 фальшивых заголовков, надо кого-то кинуть на крупную сумму. Большинство пользователей не имеют столько битков.
Alda Gordaya (OP)
Member
**
Offline Offline

Activity: 61
Merit: 10



View Profile
January 27, 2013, 08:39:45 AM
 #3

Чтобы проверить блок, надо проверить все транзакци в блоке и наличие prev_block в цепочке.

почему? Нам надо проверять не блок, а транзакцию.

это значит, что нужно убедиться, что
1) блок принадлежит длиннейшей цепочке
2) контрольная сумма блока посчитана правильно

1) можно сделать поопрашивав соседей (есть же 5 подтверждений)
2) контрольные суммы всех заголовков блоков можно все посчитать, не проверяя однако при этом все транзакции

Любая транзакция может быть проверена по заголовкам блоков и хешам Merkle Tree.

непонятна эта фраза. вроде как это то же самое, что написано выше, но нет уверенности


А почему нельзя проверять с хвоста к началу до последнего блока с чекпоинтом?
т.е. все транзакции, входящие в блоки ранее блока с чекпоинтом считать проверенными другим механизмом (цифровой подписью при распространению части цепочки)
а детально проверять только последние блоки с конца?
или биткоин-клиент теперь так и работает?
Yurock
Sr. Member
****
Offline Offline

Activity: 462
Merit: 250


View Profile
January 27, 2013, 08:55:51 AM
 #4

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

А почему нельзя проверять с хвоста к началу до последнего блока с чекпоинтом?
Думаю, можно. Полная база нужна, в основном, для проверки неподтверждённых транзакций.
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!