Publi c ключ подлинности в Bitcoin - PullRequest
       101

Publi c ключ подлинности в Bitcoin

0 голосов
/ 18 февраля 2020

У меня есть фундаментальное недоразумение по поводу криптографии ключа publi c в поле Bitcoin (Blockchain).

Например, я понимаю, что в Bitcoin, когда Боб хочет сделать транзакцию, он отправляет транзакцию, которая содержит следующее:

  • Обычное сообщение транзакции (например, Боб посылает Алисе 5 биткойнов).
  • Публичный боб c ключ
  • Цифровая подпись транзакции, подписанная с использованием личного ключа Боба

Я понимаю, что вся сеть Bitcoin проверит эту транзакцию на основе открытого ключа c Боба и цифровой подписи, которая транслируется вместе с простой информацией о транзакциях по всей сети.

Однако что если вышеуказанная транзакция (которую Боб посылает Алисе 5 биткойнов) инициируется Евой? Ева передает обычное сообщение о транзакции, ее публичный ключ c, цифровую подпись, подписанную с помощью ее личного ключа. Кажется, вся сеть Bitcoin также проверит транзакцию на основе предоставленной информации.

Не могли бы вы уточнить, какой тип неправильного мышления у меня возникает?

Большое спасибо!

ура, м

1 Ответ

1 голос
/ 20 февраля 2020

Все правильно. Но Боб не может отправить любой ключ Publi c. Он должен предоставить Pubkey, связанный с адресом, с которого он берет 5 BT C для дальнейшей отправки. В конструкции Bitcon адрес ha sh для Pubkey.

В результате Ева не знает pubkey для адреса Боба и не может отправить транзакцию, которая тратит деньги Боба. Но, конечно, она умеет отправлять транзакции с pubkey по адресу, которым она владеет. Другими словами, Ева может потратить свои собственные деньги, и это нормально.

Если вы увидите подробности сценария Bitcoin , вы увидите типичный сценарий расходов:

ScriptPubKey = OP_DUP OP_HASH160 OP_EQUAL OP_CHECKSIG

Этот скрипт дублирует pubkey, хэширует одну копию, сравнивает хешированную копию с btc_address и, если равен, проверяет подпись. Как видите, ни один пабки не приемлем.

...