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

Я знаю, что есть довольно похожие вопросы, но ни один из них не касался моей проблемы. Допустим, я использую кошелек Electrum, который генерирует адреса и пары ключей из семян. Поэтому для каждой следующей транзакции я использую другой закрытый ключ, открытый ключ и адрес. Итак (насколько я понимаю), когда я хочу что-то купить, я отправляю получателю свой адрес, зашифрованный с помощью закрытого ключа, он расшифровывает его с помощью открытого ключа, а затем проверяет блокчейн, чтобы определить, могу ли я позволить себе транзакцию. Но поскольку я использую разные адреса для каждой транзакции, как это возможно? Я не вижу способа связать текущую транзакцию со всем, что было раньше.

Ответы (1)

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

Не совсем так это работает. Вы просто отправляете адрес, который по сути является открытым ключом, человеку, который пытается произвести оплату. Учитывая адрес (более технически, ссылки на время, когда этот адрес был оплачен в блокчейне ранее), любой (не только получатель/плательщик) может проверить, есть ли у транзакции средства для расходования.

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

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

Ознакомьтесь с оригинальной статьей , в ней объясняется, как работает вся ссылка на предыдущие платежи.
Действительно. Чтобы уточнить: нигде не используется шифрование, и именно получатель использует новый ключ для каждой запрошенной транзакции (а не отправитель, за исключением его собственного изменения).
@PieterWuille, кстати, спасибо, что потратили время на ответы на вопросы о B.SE, я многому научился у вас, как, я уверен, и у многих других, приятно, что основной разработчик так вовлечен.
@StephenM347StephenM347 Читая ваш ответ, я сначала растерялся. Я спрашивал о ситуации, когда я покупатель , но ваш ответ предполагает , что я продавец . Но теперь это имеет смысл: как покупателю мне не нужно никому отправлять адрес - вместо этого мне нужно получить адрес, на который мне нужно заплатить - верно? Таким образом, адрес необходимо изменить после получения биткойнов, а не после их отправки (как сказал Питер Вуилле). Тем не менее, блокчейн должен быть проверен получателем, чтобы проверить мои средства. Почему я должен ссылаться на несколько своих платежей, а не на все? (Пытаюсь читать и по бумаге, но, хотя...)
@StephenM347 w8 Думаю, меня только что осенило. Дело в том, что каждый принимающий адрес имеет свой баланс? Например: анализируя информацию блокчейна о платежах, сделанных на этот адрес, а затем все платежи, сделанные с этого адреса, я могу определить, сколько денег содержит этот адрес ? И когда я что-то покупаю, если этого недостаточно, программа кошелька отправляет больше адресов, чтобы в сумме в них было достаточно денег, чтобы покрыть расход?
@ Sushi271, да, извините, что я перепутал точку зрения покупателя и продавца, похоже, вы с этим справились. Баланс адресов — это не совсем то, как это работает внутри, но это хорошая ментальная модель, и ментальная модель того, как большинство людей думают об адресах. Если вы хотите пойти еще дальше, каждый раз, когда вы платите по адресу, создается то, что называется UTXO (неизрасходованный вывод транзакции). Для каждого адреса может быть много UTXO, или, если адрес еще не использовался, их не будет. Клиенты блокчейна фактически отслеживают UTXO, а не адреса, и для отправки монет вы ссылаетесь на UTXO.