В банковской системе у вас есть номер счета для того, чтобы люди могли отправлять вам деньги. Номер вашего банковского счета уникален; такой числовой последовательности нет ни у кого больше. Иначе, если вы дали кому-то свой номер счета для перевода денег, они бы пришли кому-то другому. То же самое справедливо и в отношении электронной почты: когда вы регистрируетесь, например, в Gmail, сервис во избежание конфликта адресов проверяет, не занят ли уже такой адрес. Банк или Gmail являются централизованными службами и поэтому работают именно так. Пока они хорошо выполняют свою работу, все хорошо. Но что, если банк вдруг решит закрыть ваш счет, или Gmail больше не предоставит вам доступа к вашим письмам? Что делать, если централизованная служба злоупотребляет своей властью?
В децентрализованной системе этого точно не произойдет, потому что центральная сторона, которая владеет базой данных счетов, отсутствует. Она не может закрыть вас или взять что-нибудь от вас. Но как избежать двух адресов в системе, заканчивающихся одинаково? Есть несколько настоящих прорывов в блокчейн-технологиях, о которых большинство людей не знают. Это решение относительно адресов является одной из вещей, которая по-настоящему волнует меня каждый раз, когда я об этом думаю. Решение дает криптография с закрытым ключом и публичным адресом.
Что такое закрытый ключ и публичный адрес?
Поскольку в системе отсутствует централизованная база данных, то при регистрации вы просто получаете случайное число
, так называемый закрытый ключ, или сид (seed), который представляет собой строку из букв, цифр или набор случайных слов. В случае Биткоина, который является самой известной криптовалютой, вы получаете случайное число из 2256 вероятностей. Такое число выглядит как единица с восьмьюдесятью нулями:Количество возможных номеров счета чудовищно велико! Примерно столько же, сколько атомов в наблюдаемой части Вселенной. Обычно этот закрытый ключ отображается не в виде числа, а в шестнадцатеричном представлении из 64 цифр/букв. Например, так:
E9873D79C6D87DC0FB6A5778633389F4453213303DA61 F20BD67FC233AA33262
Большинство людей в криптосистеме не генерируют этот закрытый ключ самостоятельно, а позволяют это делать компьютерной программе. Закрытый ключ нужен для отправки денег так же, как нужен пароль для входа в учетную запись, чтобы отправить электронное письмо.
Здесь кроется важное отличие криптовалюты от регистрации в почте: публичный адрес выбираете не вы сами – он математически выводится из закрытого ключа. Представьте, что, когда вы входите в почту, все, что вам нужно ввести, – это пароль, а адрес электронной почты для этого конкретного пароля назначается автоматически. В Биткоине это работает с помощью эллиптической криптографии и функций SHA-256 и RIPEMD-160. Если вы хотите углубиться в эту тему, то введите в поисковике «Julian Hosp cryptography». У меня есть много видео и постов в соцсетях, где я объясняю эти тонкости.
В этих математических функциях важно то, что невозможно угадать «пароль» (закрытый ключ), если вы просто знаете «адрес электронной почты» (публичный адрес). Однако с математической точки зрения очень просто добраться до публичного адреса, если вы знаете свой закрытый ключ.
Проще говоря, представьте себе, что закрытый ключ – это случайное число, а связанный с ним публичный адрес – квадрат этого числа. То есть если ваш закрытый ключ это 8, то публичный адрес будет 8 во второй степени, или 64. Большинство из нас может вычислить это на бумаге. Но давайте пойдем от обратного. Если бы я сказал вам, что мой публичный адрес это 289, какой был бы тогда мой закрытый ключ? Если у вас нет калькулятора, то единственный способ это узнать – это подбор значений: что такое квадратный корень из 289? 15? Нет, слишком мало. 20? Нет, слишком много. Где-то между. 17. Верно. Теперь представьте, что это делается с числами, которые содержат 50 или более цифр. Было бы легко возвести любое из этих чисел в квадрат, но потребовалось бы много времени, чтобы произвести обратную операцию.