Я программист и хочу узнать больше о шифровании и о том, как работает Биткойн, но в Интернете не так много описаний, как работает весь этот код. Было бы полезно, если бы был какой-то визуальный способ описать концепцию того, как и что он делает.
Как кто-то может отправить открытый ключ и закрытый ключ на другой компьютер, не выдавая закрытый ключ? Если вы не отправили закрытый ключ, как другой компьютер узнает, что транзакция была совершена вами, а не кем-то другим, притворяющимся вами?
Я прочитал о парах ключей и сумел сгенерировать пару ключей в java. Каждый пример «использования» пары ключей очень расплывчатый. Как вы «используете» пару ключей для подтверждения транзакции. Я знаю, что у вас есть закрытый ключ, который подписывает транзакцию, и открытый ключ каким-то образом подтверждает транзакцию, но я не понимаю, «как» он «используется», если вы отправляете транзакцию со своим секретным ключом, не так ли? быть секретным ключом? Как открытый ключ подтверждает, что транзакция была подписана правильно? Как вы можете отправить свой секретный ключ так, чтобы кто-то не использовал его после того, как он его получил? Если Боб отправит транзакцию Тиму, не будет ли у Тима ключа безопасности Боба?
Мне очень жаль, если этот вопрос звучит глупо. Мне просто трудно понять, как вы можете отправить кому-то транзакцию и иметь возможность «подписать» эту транзакцию и как ее подтвердить. во многих сообщениях люди говорят о его алгоритме цифровой подписи на эллиптических кривых (ECDSA), но как он все это делает.
Во-первых, в Биткойне ничего не зашифровано, никакого «шифрования» нет. Криптография: да, но шифрование: нет.
Основным аспектом подписания закрытого и открытого ключа является то, что вы можете открыто поделиться своим открытым ключом (именно с этим связаны балансы биткойнов), а затем, используя свой закрытый ключ, вы можете создать «цифровую подпись» для транзакции, тратя монеты из этого открытый ключ. Другие люди могут проверить правильность этой подписи, таким образом зная, что транзакция была подписана тем, у кого есть закрытый ключ. Но вот в чем загвоздка: эту проверку можно выполнить без закрытого ключа.
Таким образом, алгоритм цифровой подписи позволяет вам доказать, что у вас есть закрытый ключ, соответствующий определенному открытому ключу, без предоставления фактического закрытого ключа .
И, очевидно, также не существует реального способа восстановить закрытый ключ из заданного открытого ключа и действительной подписи.
Это называется ECDSA или «алгоритм цифровой подписи на эллиптических кривых», потому что внутренняя работа основана на эллиптических кривых.
Как все это работает технически, несколько сложно, здесь задействована некоторая причудливая математика. Если вы хотите углубиться в грязные подробности, вот хорошее объяснение: http://kakaroto.homelinux.net/2012/01/how-the-ecdsa-algorithm-works/
Я собираюсь сказать заранее, я сослался на несколько источников, но на данном этапе еще не отправил необработанную транзакцию самостоятельно. Поэтому я думаю, что вопрос OP весьма актуален, поскольку в Bitcoin SE нет конкретного примера, описывающего процесс транзакции (который запутан, особенно для новичков). Начните с этого блога , а затем проверьте:
Ник Оделл
Патрик В. МакМахон
Марч
Марч
Патрик В. МакМахон
морсекодер
Маи Коо
Патрик В. МакМахон