Шрифт:
Интервал:
Закладка:
В децентрализованной системе этого точно не произойдет, потому что центральная сторона, которая владеет базой данных счетов, отсутствует. Она не может закрыть вас или взять что-нибудь от вас. Но как избежать двух адресов в системе, заканчивающихся одинаково? Есть несколько настоящих прорывов в блокчейн-технологиях, о которых большинство людей не знают. Это решение относительно адресов является одной из вещей, которая по-настоящему волнует меня каждый раз, когда я об этом думаю. Решение дает криптография с закрытым ключом и публичным адресом.
Поскольку в системе отсутствует централизованная база данных, то при регистрации вы просто получаете случайное число, так называемый закрытый ключ, или сид (seed), который представляет собой строку из букв, цифр или набор случайных слов. В случае Биткоина, который является самой известной криптовалютой, вы получаете случайное число из 2256 вероятностей. Такое число выглядит как единица с восьмьюдесятью нулями:
Количество возможных номеров счета чудовищно велико! Примерно столько же, сколько атомов в наблюдаемой части Вселенной. Обычно этот закрытый ключ отображается не в виде числа, а в шестнадцатеричном представлении из 64 цифр/букв. Например, так:
E9873D79C6D87DC0FB6A5778633389F4453213303DA61 F20BD67FC233AA33262
Большинство людей в криптосистеме не генерируют этот закрытый ключ самостоятельно, а позволяют это делать компьютерной программе. Закрытый ключ нужен для отправки денег так же, как нужен пароль для входа в учетную запись, чтобы отправить электронное письмо.
Здесь кроется важное отличие криптовалюты от регистрации в почте: публичный адрес выбираете не вы сами – он математически выводится из закрытого ключа. Представьте, что, когда вы входите в почту, все, что вам нужно ввести, – это пароль, а адрес электронной почты для этого конкретного пароля назначается автоматически. В Биткоине это работает с помощью эллиптической криптографии и функций SHA-256 и RIPEMD-160. Если вы хотите углубиться в эту тему, то введите в поисковике «Julian Hosp cryptography». У меня есть много видео и постов в соцсетях, где я объясняю эти тонкости.
В этих математических функциях важно то, что невозможно угадать «пароль» (закрытый ключ), если вы просто знаете «адрес электронной почты» (публичный адрес). Однако с математической точки зрения очень просто добраться до публичного адреса, если вы знаете свой закрытый ключ.
Проще говоря, представьте себе, что закрытый ключ – это случайное число, а связанный с ним публичный адрес – квадрат этого числа. То есть если ваш закрытый ключ это 8, то публичный адрес будет 8 во второй степени, или 64. Большинство из нас может вычислить это на бумаге. Но давайте пойдем от обратного. Если бы я сказал вам, что мой публичный адрес это 289, какой был бы тогда мой закрытый ключ? Если у вас нет калькулятора, то единственный способ это узнать – это подбор значений: что такое квадратный корень из 289? 15? Нет, слишком мало. 20? Нет, слишком много. Где-то между. 17. Верно. Теперь представьте, что это делается с числами, которые содержат 50 или более цифр. Было бы легко возвести любое из этих чисел в квадрат, но потребовалось бы много времени, чтобы произвести обратную операцию.
Возведение в квадрат было просто упрощением, потому что в реальных криптовалютах этот процесс в миллиарды раз сложнее. Даже если бы вы объединили все компьютеры для решения этих проблем, Вселенная схлопнулась бы раньше, чем вы смогли бы найти решение. Существует такое количество вероятностей, как и атомов в известной Вселенной. И вывести из публичного адреса закрытый ключ так сложно, что статистически более вероятно, что вы сможете бегать по стенам, а все ваши атомы одновременно подвергнутся квантовому туннелированию,[9] позволяя вам пройти через стену. Вы когда-нибудь испытывали подобное или видели, как это делает кто-то другой? Вот и я тоже нет. Поэтому никто не сможет угадать ваш закрытый ключ, а у двух людей он не может быть одинаковым. Опять же, более вероятно, что вы начнете бегать по стенам, не касаясь их, чем получите случайно закрытый ключ, который кто-то использовал для хранения биткоинов. Если вы мне не верите, то попробуйте пробежаться по стене. ☺
Вы можете спросить: «Что безопаснее – хранить миллиарды долларов в сейфе, место которого известно, и чтобы вскрыть его, нужно только прорвать систему безопасности (централизованную систему: банковскую или почтовую), или иметь огромное количество полностью открытых сейфов, внутри которых могут быть миллиарды долларов, но чтобы вскрыть такой сейф, понадобится времени столько, сколько существует Вселенная?» Пока это все не так хорошо знакомо, и мысль о случайном числе, которое теоретически может быть таким же, как и у кого-то другого, не вызывает доверия, особенно когда мы слышим новости о том, что некоторые суперкомпьютеры пытаются генерировать адреса с деньгами и преуспевают в этом. Как это возможно математически? Оказывается, изначальные создатели адресов не использовали систему с надлежащим генератором случайных адресов. Вот почему особенно важно использовать только сервисы с открытым исходным кодом, которые постоянно тестируются. А если вы не делаете этого, то похожи на человека, который в качестве пароля использует 1234.
[СОВЕТ]
В главе о кошельках вы узнаете об отличных сервисах, в которых нет такой проблемы, и генерация адресов там действительно случайна.
Для тех из вас, кто хочет понять настоящий криптографический процесс, ниже приведено описание такого процесса для биткоина. Эту часть можно пропустить, если вас не интересуют математические подробности.
Осторожно, режим ботана включен!
1. Начать со случайно выбранного закрытого ключа от 1 до 2256.
2. Использовать криптографию на эллиптической кривой, где закрытый ключ является «множителем».
3. Это ваш публичный ключ.
4. Выполнить функцию «Hash160» с помощью алгоритма хеширования SHA256, а затем функцию RIPEMD160.
5. Записать ключ в формате кодирования Base58 Check как «контрольную сумму» (аналогично, например, проверке номера кредитной карты).