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