Что на самом деле представляет собой криптокошелёк
Спросите десять человек, что такое криптокошелёк, и большинство ответит, что это место, где хранятся ваши монеты. Такая картинка кажется естественной: кожаный кошелёк хранит банкноты, значит, криптокошелёк должен хранить криптовалюту. Это и есть самое полезное заблуждение, которое стоит развеять, прежде чем двигаться дальше, потому что почти всё запутанное в крипте начинает обретать смысл, как только вы его исправите.
Криптокошелёк не хранит монеты. Ваши монеты — это не файлы, и они не находятся «внутри» какого-либо приложения или устройства. Это записи в общем публичном реестре — блокчейне, — который тысячи компьютеров по всему миру поддерживают в синхронизированном состоянии. На самом деле кошелёк хранит набор ключей: секретных чисел, которые доказывают, что именно вы, и только вы, имеете право распоряжаться балансом, записанным в реестре на ваше имя.
Проще говоря: блокчейн хранит деньги, а кошелёк хранит доказательство того, что эти деньги ваши. Кошелёк похож не на портмоне, а скорее на связку ключей.
Баланс хранит блокчейн, а не кошелёк
Полезно представить блокчейн как огромную публичную таблицу, которую может читать кто угодно, но никто не может тайно изменить. У каждого счёта есть строка, и в каждой строке указан баланс. Когда кто-то отправляет вам биткойн, ни один объект не перемещается на ваше устройство. Сеть просто обновляет таблицу: одна строка уменьшается, ваша строка увеличивается.
Ваш кошелёк читает эту таблицу, чтобы показать вам число. Удалите приложение кошелька — число не исчезнет: строка по-прежнему есть в каждой копии реестра по всему миру. Переустановите кошелёк, снова передайте ему ключи — и баланс мгновенно появится. В приложении никогда ничего не было «внутри». Приложение было лишь окном в реестр и инструментом для подписания инструкций по его изменению.
Вот почему потерять телефон — это не то же самое, что потерять деньги, а потерять ключи — именно это.
Закрытые ключи: секрет, который контролирует всё
Закрытый ключ — это сердце кошелька. Это очень большое случайно сгенерированное число — настолько большое, что угадать его практически невозможно. Тот, кто владеет закрытым ключом, может авторизовать транзакции со счёта, которым этот ключ управляет. Нет ни отдельного пароля, ни службы поддержки, ни формы восстановления доступа. Ключ и есть полномочие.
Это работает в обе стороны. Это значит, что ни один банк или компания не может заморозить или изъять ваши средства. Это также значит, что нет никого, кто мог бы отменить ошибку. Если кто-то скопирует ваш закрытый ключ, он сможет распорядиться вашим балансом, и сеть это примет, потому что с точки зрения реестра действительная подпись — это действительная подпись. Поэтому защита закрытого ключа — это и есть вся работа по обеспечению безопасности кошелька.
Большинство кошельков не показывают вам сам закрытый ключ. Вместо этого они показывают фразу восстановления — обычно 12 или 24 обычных слова. Эта фраза представляет собой понятное человеку зерно, из которого математически выводятся все ваши ключи по стандарту BIP-39. Любой, у кого есть эти слова, может восстановить ключи, поэтому фраза восстановления заслуживает ровно такой же осторожности, как и сами ключи: запишите её, храните офлайн и никогда не вводите на сайтах.
Открытые ключи и адреса: то, чем можно безопасно делиться
У каждого закрытого ключа есть соответствующий открытый ключ, полученный из него с помощью односторонней математики. «Односторонняя» — здесь ключевое слово: вы можете мгновенно вычислить открытый ключ из закрытого, но ни один компьютер не способен выполнить вычисление в обратную сторону и восстановить закрытый ключ из открытого. Эта асимметрия лежит в основе всей современной криптографии — на ней держится и сам дизайн биткойна, как описано в техническом документе Bitcoin.
Из открытого ключа кошелёк выводит адрес: более короткую строку из букв и цифр, которую вы сообщаете, чтобы получать средства, — часто она показывается в виде QR-кода. Адресом можно безопасно делиться публично. Худшее, что кто-либо может с ним сделать, — это отправить вам деньги или посмотреть ваш баланс. С него нельзя тратить, потому что для траты нужен закрытый ключ, а закрытый ключ никогда не выходит из-под вашего контроля.
Итак, кошелёк работает с тремя связанными вещами:
- Закрытый ключ — секретный. Доказывает право собственности и подписывает транзакции. Никогда им не делитесь.
- Открытый ключ — выводится из закрытого ключа. Используется для проверки ваших подписей.
- Адрес — выводится из открытого ключа. Им можно делиться, чтобы другие могли вам платить.
Подписи: как кошелёк доказывает, что это вы
Когда вы отправляете криптовалюту, ваш кошелёк формирует транзакцию — сообщение со словами «переведи эту сумму с этого адреса на тот адрес» — а затем подписывает её вашим закрытым ключом. Подпись — это математическая операция, которая делает кое-что тонкое: она доказывает, что сообщение одобрено владельцем закрытого ключа, ни разу не раскрывая сам ключ.
Каждый компьютер в сети может проверить эту подпись по вашему открытому ключу. Если она совпадает, транзакция действительна и записывается. Если изменить хотя бы один символ сообщения, подпись больше не подойдёт, и сеть её отклонит. Именно это на практике означает фраза «кошелёк — это то, что доказывает ваш контроль над монетами». Ваш баланс меняется только тогда, когда действительная подпись, сделанная вашим ключом, говорит, что так и должно быть.
Это также объясняет лозунг, который вы будете постоянно слышать в крипте: не ваши ключи — не ваши монеты. Если ключи держит биржа или приложение, то именно оно — а не вы — создаёт подписи и реально контролирует средства. Кошелёк, в котором ключами владеете только вы, называется самостоятельным хранением, и именно на этой модели построен SSP. Если хотите увидеть это на практике, прочитайте Знакомство с SSP Wallet: самостоятельное хранение с мультиподписью 2-из-2.
Что такое кошелёк — и чем он не является
Стоит чётко проговорить обе стороны.
Криптокошелёк является: связкой ключей, инструментом подписания транзакций и окном в блокчейн. Он генерирует и защищает ваши ключи, формирует и подписывает транзакции, рассылает их по сети и считывает реестр обратно для вас в виде баланса и истории.
Криптокошелёк не является: сейфом, в котором лежат монеты, банковским счётом со службой поддержки или местом, которое «держит» ваши деньги в каком-либо физическом смысле. Он не содержит ценность; он управляет ценностью, которая живёт в цепочке.
Практическое следствие: если ваши ключи существуют только в одном месте, это место — единая точка отказа. Потеряете его — потеряете ключи; позволите злоумышленнику добраться до него — ключи станут его. Именно этот разрыв закрывает SSP, распределяя полномочия подписания между двумя устройствами, так что ни одно скомпрометированное устройство не может само распорядиться средствами.
Куда двигаться дальше
Теперь у вас есть мысленная модель, на которой строится вся остальная крипта: монеты живут в блокчейне, ключи живут в кошельке, а подпись — это то, что связывает их. Всё остальное — горячее или холодное хранение, программные или аппаратные кошельки, браузерные и мобильные кошельки — это разные ответы на один и тот же вопрос: где живут ключи и насколько хорошо они защищены?
Следующие статьи этой серии разбирают эти ответы по одному. Начните с Горячий кошелёк против холодного кошелька, чтобы увидеть, как нахождение онлайн или офлайн меняет риск кошелька, затем перейдите к Программный кошелёк против аппаратного кошелька, чтобы понять, как ключи хранятся физически. Когда будете готовы перейти от теории к практике, Настройка вашего первого кошелька SSP проведёт вас шаг за шагом.