Author

Topic: Зачем проверяются блоки сначала (Read 723 times)

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

А почему нельзя проверять с хвоста к началу до последнего блока с чекпоинтом?
Думаю, можно. Полная база нужна, в основном, для проверки неподтверждённых транзакций.
member
Activity: 61
Merit: 10
Чтобы проверить блок, надо проверить все транзакци в блоке и наличие prev_block в цепочке.

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

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

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

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

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


А почему нельзя проверять с хвоста к началу до последнего блока с чекпоинтом?
т.е. все транзакции, входящие в блоки ранее блока с чекпоинтом считать проверенными другим механизмом (цифровой подписью при распространению части цепочки)
а детально проверять только последние блоки с конца?
или биткоин-клиент теперь так и работает?
sr. member
Activity: 462
Merit: 250
Чтобы проверить блок, надо проверить все транзакци в блоке и наличие prev_block в цепочке. Чтобы убедиться, что prev_block есть в цепочке, его тоже надо проверить. И далее по рекурсии до самого первого блока, который проверяется другим способом – его хеш считается общеизвестным и зашит в программу.

Большинству пользователей не обязательно загружать и проверять всю историю транзакций. Любая транзакция может быть проверена по заголовкам блоков и хешам Merkle Tree. Программе, не проверяющей историю, могут быть подсунуты заголовки фальшивых блоков. Однако, чтобы окупить создание, скажем, 6 фальшивых заголовков, надо кого-то кинуть на крупную сумму. Большинство пользователей не имеют столько битков.
member
Activity: 61
Merit: 10
Зачем проверяются блоки сначала и проверка затрагивает каждый блок (а не некоторые выборочно)?

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

Можно ли сократить время проверки, если проверять только эту транзакцию и те транзакции, на которые она ссылается входами?
Jump to: