Как можно проверить транзакции без закрытого ключа?

Пытаюсь разобраться в ее королевском биткойне...

Я понимаю, что блоки транзакций транслируются в сеть, и что майнеры проверяют, что BC можно «расходовать», просматривая блокчейн и отслеживая историю транзакций адреса кошелька (или, по крайней мере, я предполагаю, что так это работает).

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

Я, вероятно, неправильно понимаю шифрование PKI, но (скажем) с SSH закрытый ключ будет на доверенном сервере, и проверка будет происходить на этом сервере. Как это может работать в распределенной сети?

SSH использует криптографию с открытым ключом в двух контекстах: клиенты доказывают серверу, что они те, за кого себя выдают, и серверы доказывают клиентам, что они те, за кого себя выдают. С каким из них вы пытаетесь провести аналогию?
@NickODell Я был немного туговат с этой аналогией. Я забыл, что закрытый ключ никогда не отправляется на сервер; он просто используется для шифрования двухпартийного сообщения между машинами.

Ответы (2)

Биткойн-транзакции не шифруются, они криптографически подписаны.

Вы можете использовать пару открытых/закрытых ключей двумя способами: (предупреждение о значительном упрощении)

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

Второй метод — тот, который используется Биткойном. В распределенный реестр помещается сообщение о том, что биткойны были отправлены из X в Y (и, как правило, Z) и подписаны закрытым ключом X. X — адрес источника биткойнов, Y — адрес назначения, а Z — адрес сдачи. .

Может быть, даже обратите внимание, что алгоритм, используемый биткойнами для подписи (ECDSA), нельзя использовать даже для шифрования. Многие люди думают, что подписание — это «просто шифрование с использованием закрытого ключа вместо открытого ключа», но это работает только для RSA.

Биткойн scriptSig несут все, что им нужно, чтобы удовлетворить scriptPubKey, который загромождает вывод. Как таковые они считаются лицами без гражданства, т. е. автономными.

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