Я прочитал следующее из книги << Освоение биткойнов >>
«Как вы могли заметить, транзакция содержит пустой scriptSig, потому что мы еще не подписали ее. Без подписи эта транзакция бессмысленна, мы еще не доказали, что владеем адресом, с которого поступает неизрасходованный вывод».
Мне интересно, как подпись может доказать, что эта транзакция владеет адресом, с которого получен неизрасходованный вывод?
Предположим, вы понимаете, как работает криптография с открытым ключом . Короче говоря, можно проверить принадлежность адреса, проверив подпись. Действительная подпись может быть сгенерирована только владельцем закрытого ключа.
Детали проверки подписи в биткойнах описаны здесь
Не вдаваясь в подробности, OP_xxx
это операции со стеком. Например, OP_DUP
это дублирование вершины стека. В основном это
OP_HASH160
и проверяет, идентичен ли результат pubKeyHash
по операцииOP_EQUALVERIFY
sig
и pubKey
при эксплуатацииOP_CHECKSIG
Вы можете прочитать больше о OP_CHECKSIG
здесь
Право собственности подтверждается для каждого ввода путем предоставления действительной подписи в scriptSig
поле. Если одна из подписей отсутствует, вся транзакция недействительна.
Для scriptPubKey
каждого вывода в приведенном вами примере заблокирован биткойн-адрес. Биткойн-адрес — это, в двух словах, хэш открытого ключа. Таким образом, для предоставления действительной подписи требуется секретный ключ, принадлежащий той же паре ключей открытого ключа, на которую ссылаются в каждом вводе.
Рагхав Суд