Как можно проверить историю транзакций при создании новых адресов?

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

Ответы (2)

Одна вещь, которую вы можете упустить, это «нет баланса». Сеть не знает о кошельках или балансах, она знает только о выводах. Эти выходы либо израсходованы, либо не израсходованы. Когда у вас есть эта концепция, ее легче понять.

Если ваш кошелек говорит, что у вас есть баланс 1,2345 BTC, это означает, что он «думает», что есть X неизрасходованных выходов, которые вы «контролируете», которые в сумме составляют 1,2345. Это основано на известных ему ключах и транзакциях, которые он видел до сих пор. Может быть 1 выход со значением 1,2345 или 100 выходов с суммой 1,2345 или любая комбинация.

Просмотрите любую транзакцию на blockchain.info, и вы увидите входные данные с левой стороны. Эти входы являются ранее неизрасходованными выходами.

https://blockchain.info/tx/ad646bbac1e44e4db199420e12fec2966903a0e078da99fab97b3156455f252a

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

https://en.bitcoin.it/wiki/Изменить

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

Таким образом, все транзакции связаны с предыдущими.

Очень понятное объяснение, понял, большое спасибо :D

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

Это неправильно. Вы можете отправить деньги только с того адреса, на который вы их получили.

Пример:
Алиса отправляет 1 BTC Бобу address A. Теперь, когда Боб отправит деньги Кэрол, его клиентское программное обеспечение подпишет транзакцию закрытым ключом, соответствующим address A. Затем неизрасходованный вывод транзакции address Aбудет израсходован, и новый баланс будет доступен на адрес Кэрол.