Title: Зачем проверяются блоки сначала Post by: Alda Gordaya on January 27, 2013, 03:43:57 AM Зачем проверяются блоки сначала и проверка затрагивает каждый блок (а не некоторые выборочно)?
ведь у новичка пустой кошелёк - и ему не важно, чтобы были проверены все транзакции. Ему надо, чтобы была проверена одна транзакция, которая переводит ему деньги. Можно ли сократить время проверки, если проверять только эту транзакцию и те транзакции, на которые она ссылается входами? Title: Re: Зачем проверяются блоки сначала Post by: Yurock on January 27, 2013, 06:48:57 AM Чтобы проверить блок, надо проверить все транзакци в блоке и наличие prev_block в цепочке. Чтобы убедиться, что prev_block есть в цепочке, его тоже надо проверить. И далее по рекурсии до самого первого блока, который проверяется другим способом – его хеш считается общеизвестным и зашит в программу.
Большинству пользователей не обязательно загружать и проверять всю историю транзакций. Любая транзакция может быть проверена по заголовкам блоков и хешам Merkle Tree. Программе, не проверяющей историю, могут быть подсунуты заголовки фальшивых блоков. Однако, чтобы окупить создание, скажем, 6 фальшивых заголовков, надо кого-то кинуть на крупную сумму. Большинство пользователей не имеют столько битков. Title: Re: Зачем проверяются блоки сначала Post by: Alda Gordaya on January 27, 2013, 08:39:45 AM Чтобы проверить блок, надо проверить все транзакци в блоке и наличие prev_block в цепочке. почему? Нам надо проверять не блок, а транзакцию. это значит, что нужно убедиться, что 1) блок принадлежит длиннейшей цепочке 2) контрольная сумма блока посчитана правильно 1) можно сделать поопрашивав соседей (есть же 5 подтверждений) 2) контрольные суммы всех заголовков блоков можно все посчитать, не проверяя однако при этом все транзакции Любая транзакция может быть проверена по заголовкам блоков и хешам Merkle Tree. непонятна эта фраза. вроде как это то же самое, что написано выше, но нет уверенности А почему нельзя проверять с хвоста к началу до последнего блока с чекпоинтом? т.е. все транзакции, входящие в блоки ранее блока с чекпоинтом считать проверенными другим механизмом (цифровой подписью при распространению части цепочки) а детально проверять только последние блоки с конца? или биткоин-клиент теперь так и работает? Title: Re: Зачем проверяются блоки сначала Post by: Yurock on January 27, 2013, 08:55:51 AM Нам надо проверять не блок, а транзакцию. Чтобы проверить транзакцию, надо проверить все "входы". Каждый "вход" должен быть связан с "выходом" действительной прошлой транзакции. В данном случае, действительная транзакция – это транзакция включённая в действительный блок. Вот здесь -то и требуетя проверка всех блоков. Кроме того, чтобы проверить неподтверждённую транзакцию (которая ещё не включена в блок) надо убедиться, что её "входы" ещё не были использованы в прошлых транзакциях, для чего нужна база всех транзакций или база всех непотраченных выходов.А почему нельзя проверять с хвоста к началу до последнего блока с чекпоинтом? Думаю, можно. Полная база нужна, в основном, для проверки неподтверждённых транзакций. |