Перейти к основному контенту

Криптографические основы блокчейн-идентичности: адреса и ключи

Теперь, когда вы освоили общую структуру блокчейна, пришло время углубиться в самый маленький, но наиболее важный компонент, который обеспечивает его работу: вашу ончейн-идентичность. Эта идентичность полностью построена на криптографии и служит вашим единственным учетным данным для управления вашими цифровыми активами.


1.4 Адреса и ключи: криптографические основы блокчейн-идентичности​

Приватный ключ определяет "кто может тратить деньги", а адрес определяет "где находятся деньги", формируя ядро вашей блокчейн-идентичности.

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


Пара ключей: источник контроля​

В основе каждого блокчейн-аккаунта лежит "пара ключей", которая включает приватный ключ и публичный ключ.

  1. Приватный ключ
  • Суть: Это чрезвычайно большое 256-битное случайное число, похожее на строку из 256 "0" или "1", полностью случайное. Его возможные комбинации превышают общее количество атомов во Вселенной, что делает его практически невозможным для угадывания или подбора методом грубой силы.
  • Функция: Это единственный источник контроля над вашими активами. Обладание приватным ключом дает вам абсолютную власть над всеми активами по соответствующему адресу. Он используется для "подписи" транзакций, доказывая сети: "Это я согласился на этот перевод".
  • Железное правило: Приватный ключ всегда должен оставаться офлайн и в секрете! Раскрытие вашего приватного ключа равносильно передаче миру ключа от вашего банковского хранилища. "Не ваши ключи — не ваши монеты" — это золотое правило в мире блокчейна.
  1. Публичный ключ
  • Генерация: Публичный ключ выводится из вашего приватного ключа с помощью односторонней функции, называемой "Криптография на эллиптических кривых" (ECC). Этот процесс необратим, что означает, что вы можете легко вычислить публичный ключ из приватного ключа, но не наоборот.
  • Функция: Публичный ключ можно безопасно передавать кому угодно. Его основная роль — проверка подписей. Когда сеть получает транзакцию с подписью, любой может использовать публичный ключ отправителя, чтобы убедиться, что подпись действительно была сгенерирована парным приватным ключом, тем самым подтверждая легитимность транзакции.

Различные блокчейны используют различные алгоритмы эллиптических кривых, наиболее распространенными из которых являются:

  • secp256k1: Широко используется в экосистемах Bitcoin и Ethereum.
  • ed25519: Принят блокчейнами нового поколения, такими как Solana и Polkadot, благодаря своим характеристикам производительности и безопасности.

Адрес: "читаемое сокращение" публичного ключа​

Хотя публичный ключ может быть общедоступным, он обычно представляет собой длинную и сложную строку, неудобную для использования и обмена. Поэтому "адрес" служит более коротким, удобным для пользователя представлением публичного ключа, подобно номеру вашего банковского счета или адресу электронной почты.

Пример процесса генерации адреса Ethereum:

  1. Начните с вашего публичного ключа.
  2. Выполните вычисление хеша Keccak-256 для публичного ключа.
  3. Возьмите последние 20 байт (т.е. 40 шестнадцатеричных символов) результата хеширования.
  4. Добавьте префикс 0x в начале, и это станет обычным адресом Ethereum, который мы видим.
  5. (Необязательно) Согласно спецификации EIP-55, некоторые буквы в адресе изменяют регистр для формирования адреса с контрольной суммой. Если вы введете неверный символ, адрес не пройдет проверку контрольной суммы, что эффективно предотвращает ошибочные переводы.

Форматы адресов других сетей:

  • Bitcoin: Существует несколько форматов, таких как Legacy-адреса, начинающиеся с 1, SegWit-совместимые адреса, начинающиеся с 3, и нативные SegWit-адреса, начинающиеся с bc1q.
  • Мультичейн-стандарты: Чтобы различать адреса разных сетей во все более сложном мультичейн-мире, появились различные схемы кодирования адресов, такие как bech32, ss58 и т. д.

Почему не использовать публичный ключ напрямую в качестве адреса?

  • Короче и удобнее: Хешированная строка адреса короче.
  • Повышенная безопасность: Непрямое раскрытие публичного ключа может защитить от потенциальных будущих атак квантовых компьютеров. Квантовые компьютеры теоретически могут выводить приватные ключи из публичных ключей, но не могут выполнять обратное проектирование хешированных адресов. До того как вы впервые отправите транзакцию с этого адреса (в этот момент публичный ключ транслируется вместе с подписью), ваш публичный ключ скрыт, что делает активы относительно более безопасными.

Кошелек: инструмент для управления несколькими ключами​

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

  • Самостоятельный кошелек (Self-custody Wallet): Приватный ключ полностью контролируется пользователем. Примеры включают MetaMask, Phantom или аппаратные кошельки. Вы имеете 100% владение активами, но также несете 100% ответственность за сохранность приватного ключа.
  • Кастодиальный кошелек (Custodial Wallet): Приватный ключ хранится сторонней платформой (например, централизованной биржей) за вас. Вам нужно только войти с именем пользователя и паролем, чтобы использовать его. Это удобно, но вы доверяете платформе сохранность ваших активов, сталкиваясь с рисками кражи платформой, ее исчезновения или регуляторных заморозок.
  • HD-кошелек (Иерархический детерминированный кошелек): Это стандарт для современных кошельков. Через протоколы, такие как BIP-32/39/44, вам нужно только создать резервную копию набора из 12 или 24 слов мнемонической фразы, и кошелек может детерминированно генерировать бесчисленное множество иерархически организованных приватных ключей и адресов, используя это "семя". Это означает, что вам нужно только надежно сохранить одну мнемоническую фразу, чтобы восстановить все ваши учетные записи, что значительно упрощает управление и резервное копирование.

Подпись: доказательство "Я согласен с этой транзакцией"​

Когда вы инициируете транзакцию, происходит следующий криптографический процесс:

  1. Ваше программное обеспечение кошелька хеширует детали транзакции (кому отправить, сколько и т. д.) для генерации уникального "отпечатка" транзакции.
  2. Затем кошелек вызывает ваш приватный ключ для цифровой подписи этого отпечатка транзакции (используя алгоритмы, такие как ECDSA или EdDSA).
  3. Эта транзакция и прикрепленная цифровая подпись транслируются в сеть.
  4. Любой узел в сети может использовать ваш публичный ключ для проверки этой подписи. Если проверка проходит, это доказывает:
  • Подлинность: Транзакция действительно была авторизована владельцем приватного ключа, соответствующего публичному ключу.
  • Целостность: Содержимое транзакции не было изменено каким-либо образом с момента ее подписания.

Этот процесс является неотрекаемым, потому что подпись уникально связана с приватным ключом, а вывод приватного ключа из подписи вычислительно невозможен. Чтобы предотвратить перехват кем-либо вашей подписанной транзакции и ее повторную трансляцию (атака повторного воспроизведения), транзакции обычно включают Nonce (одноразовый инкрементный счетчик) и Chain ID (для различения разных сетей, таких как основная сеть Ethereum и тестовая сеть) для обеспечения безопасности.


Безопасность и лучшие практики​

Защита приватного ключа — это защита всего. Вот признанные в отрасли лучшие практики:

  • Офлайн-генерация/подпись: Использование аппаратных кошельков (таких как Ledger, Trezor) для генерации приватных ключей и подписи транзакций в среде, изолированной от интернета, является золотым стандартом для защиты крупных активов.
  • Мультиподпись (Multisignature): Принятие модели M-из-N (например, адрес требует совместной подписи 2 из 3 приватных ключей для использования средств) значительно рассеивает риск единой точки отказа, обычно используется для DAO или управления корпоративными казначействами.
  • Новые решения для восстановления: Технологии, такие как социальное восстановление или многосторонние вычисления (MPC), пытаются разделить контроль над приватным ключом, балансируя децентрализованную безопасность с удобством использования, когда пользователи забывают пароли.
  • Физическое резервное копирование: Запишите мнемоническую фразу на бумаге или специальной металлической пластине и храните ее в нескольких безопасных, огнеупорных и водонепроницаемых местах. Никогда не делайте скриншоты, фотографии и не загружайте в облачные сервисы!

🤔 Упражнения для читателя​

  1. Если вы немного разбираетесь в программировании, попробуйте использовать ethers.js (JavaScript) или аналогичные библиотеки для локальной генерации случайного приватного ключа, затем экспортируйте соответствующий публичный ключ и адрес Ethereum. Далее попробуйте подписать произвольную строку (например, "Hello, Blockchain!") этим приватным ключом и проверить действительность подписи с помощью публичного ключа.
  2. В обозревателе блоков найдите адрес Bitcoin, начинающийся с 1... (Legacy), 3... (SegWit P2SH) и bc1q... (Native SegWit). Сравните их форматы и длины, а также подумайте о причинах этих эволюций.

📚 Дополнительное чтение​

  • "Mastering Ethereum" Глава 4: Ключи, адреса, кошельки - Чрезвычайно подробное объяснение того, как работают ключи, адреса и кошельки Ethereum.
  • Оригинальные тексты BIP-32 / BIP-39 / BIP-44 - Предложения по улучшению Bitcoin, определяющие стандарты для современных HD-кошельков и мнемоник, обязательны к прочтению для понимания базовой логики кошельков.
  • "Threshold Signatures in Practice" - Сосредоточьтесь на передовой технологии пороговых подписей, найдите соответствующие статьи с последних академических конференций (например, IEEE S&P), чтобы понять криптографические основы MPC-кошельков и других технологий.

К этому моменту вы освоили криптографический краеугольный камень ончейн-идентичности. В следующем разделе (1.5) мы свяжем все полученные знания, чтобы проанализировать "Жизненный цикл транзакции: от клиента до ончейн-подтверждения", проведя вас через полный путь транзакции от вашего кошелька до окончательного подтверждения всей сетью.