Когда вам нужно подтвердить, что транзакция находится в блоке

Итак, попав сюда , я забыл, зачем вообще нужно проверять, находится ли транзакция в блоке, и как именно это работает. Интересно, можно ли объяснить

  1. В какой ситуации вы хотите проверить транзакцию в блоке.
  2. Как найти блок, в котором может находиться транзакция.

Эта ссылка говорит здесь:

Рассмотрим, например, узел SPV, который заинтересован во входящих платежах на адрес, содержащийся в его кошельке. Узел SPV установит фильтр Блума (см. [bloom_filters]) для своих соединений с одноранговыми узлами, чтобы ограничить получаемые транзакции только теми, которые содержат интересующие адреса. Когда одноранговый узел видит транзакцию, которая соответствует фильтру Блума, он отправит этот блок, используя сообщение merkleblock. Сообщение merkleblock содержит заголовок блока, а также путь merkle, который связывает интересующую транзакцию с корнем merkle в блоке. Узел SPV может использовать этот путь Меркла для подключения транзакции к блоку и проверки того, что транзакция включена в блок. Узел SPV также использует заголовок блока, чтобы связать блок с остальной частью цепочки блоков. Комбинация этих двух ссылок, между транзакцией и блоком, и между блоком и блокчейном доказывает, что транзакция записывается в блокчейне. В целом узел SPV получит менее килобайта данных для заголовка блока и пути Меркла, что более чем в тысячу раз меньше полного блока (около 1 мегабайта в настоящее время).

Я до сих пор не понимаю, зачем вам нужно проверять, что транзакция находится в блоке, возникают некоторые вопросы:

  1. Актуальность этого конкретного блока для вас. Даже если вы подтвердите, что это часть какого-то блока, я не понимаю, почему вас волнует, что это из этого блока.
  2. Так вы докажете, что это записано в блокчейне. Я не понимаю, как это означает, что это действительно.

Ответы (1)

Вся эта информация относится к работе легкого кошелька, который не полностью проверяет блокчейн, а вместо этого проверяет самую длинную цепочку заголовков блоков и любые транзакции, относящиеся к этому легкому кошельку.

В какой ситуации вы хотите проверить транзакцию в блоке.

Просто: убедиться, что платеж, который вы отправили, получили или иным образом заинтересованы, был включен в запись Blockchain. Если кто-то платит вам огромную сумму в биткойнах, вы, вероятно, захотите убедиться, что платеж действительно был законным!

Как найти блок, в котором может находиться транзакция.

В тексте, который вы процитировали из Mastering Bitcoin, есть ответ: партнер с полным узлом будет использовать ваш фильтр Блума, чтобы предоставить вам информацию о транзакции, относящуюся к вашему кошельку.

Актуальность этого конкретного блока для вас. Даже если вы подтвердите, что это часть какого-то блока, я не понимаю, почему вас волнует, что это из этого блока.

Чтобы убедиться, что транзакция включена, вам нужно знать, в каком блоке она находится. Это позволит вашему кошельку вычислить криптографические доказательства (используя корень merkle, который находится в заголовке), которые позволят ему подтвердить, что транзакция произошла на сети с минимальным доверием.

Точно так же невозможно узнать, что транзакция включена в запись блокчейна, не зная конкретного блока, по которому вам нужно проверить криптографические доказательства.

Так вы докажете, что это записано в блокчейне. Я не понимаю, как это означает, что это действительно.

Только действительные транзакции могут быть записаны в историю блокчейна, хотя, как легкий кошелек, вы доверяете тому, что сеть полных узлов в противном случае проверяет все блоки и транзакции, чтобы гарантировать, что в цепочку не будут включены недействительные данные. Пока полные узлы выполняют свою работу, недействительные транзакции не могут быть включены в цепочку. Любой майнер, который попытается включить недопустимую транзакцию в блок, увидит, что этот блок удален узлами сети как недействительный.