Найти тему
Точка Зрения

Криптовалюты простыми словами?

Оглавление

Набрав «криптовалюты» в строке браузера, находим массу релевантной информации. Источников множество, но через полчаса скимминга становится скучно грести через фрагментированную писанину на финансовые темы, приправленную высшей математикой. Один источник, который простым языком выдаст читателю, далекому от криптографии и финансов, «базу» о криптовалюте, не просто найти. Пробуем собрать все в кучу, на примере всем известного «доллара виртуального мира» — Bitcoin.

Что такое биткоин?

Как деньгá – это просто число, сродни тому, что написано на бумажной купюре или отчеканено на монете. В том лишь разница что bitcoin храниться на цифровом носителе в памяти компьютера. Вся соль в том, как это работает, надёжно ли, и почему имеет цену.

Чтобы понять Bitcoin как систему, нужно поразмыслить о природе денег и заглянуть в дремучий лес криптографии. Криптография, среди прочего, используется в шифровании. В этом смысле она бывает симметричная и несимметричная.

Симметричная очень проста, с ней развлекаются даже дети. Договариваемся, что каждая буква секретного сообщения будет записываться как следующая по порядку в алфавите, а читаться как предыдущая. Так, сообщение «На Дерибасовской хорошая погода» в зашифрованном виде будет выглядеть как «Об Еёсёвбтпгтлпк цпспщба рпдпеб». Ключ один, все ясно. К сожалению, надёжность такого шифрования оставляет желать лучшего. Ключ легко подобрать или украсть в момент передачи собеседнику.

В этом плане несимметричная криптография – куда более крепкий орешек. Здесь ключа два: один для шифровки (открытый), и другой для расшифровки (личный). Оба связаны математикой, которая работает в одну сторону легко, а в обратную, «от противного», не работает вообще. Прочесть зашифрованное сообщение одним и тем же ключом невозможно. Открытый ключ можно раздавать на право и на лево чтобы желающие могли отправлять вам шифрованные сообщения. Личный ключ только у вас, его никуда отправлять не нужно. Тот, кто отправляет вам сообщение используя для шифровки ваш открытый ключ, знает, что прочесть это сообщение сможете только вы.

Как выглядят парные ключи в системе Bitcoin?

Личный ключ вы выбираете сами, ни с кем и ни с чем не консультируясь, и не спрашивая разрешения. Off-line, любых 78 цифр. Произвольно. Какой выберете – тот и будет ваш. Теперь, чтобы добраться до ваших биткоинов нужно сначала добраться до вашего личного ключа, а он в надёжном месте.

Пара ключей всегда связана сложными математическими алгоритмами, каковых множество. В Bitcoin открытый ключ получается путём обработки личного ключа алгоритмом цифровой подписи эллиптической кривой. Звучит жутковато, поэтому в подробности здесь вдаваться не будем. Скажем только что в обратном порядке это не работает и вывести ваш личный ключ из открытого не получится. За конкретным примером пожалуйте вот сюда: www.bitaddress.org. Пошевелите мышкой чтобы сгенерировать что-то совершенно случайное. Остальное этот ресурс сделает за вас. Вот что получилось у меня:

Личный и открытый ключи могут храниться в закодированных укороченных форматах. Если скопировать личный ключ в поле «Детали кошелька» на этом ресурсе, то можно увидеть ваши ключи в разных форматах и во всех подробностях. Заметим, что адресом Bitcoin кошелька становится «хэш» вашего открытого ключа. Об этом чуть позже. Заметим также что QR код – это просто графически закодированный текст, который превращается в простой текст QR сканером.

78 цифр, насколько это надежно? Что если выбранный мною off-line личный ключ уже кто-то выбрал?

Изобразительный пример: скажем, вы играете в лотерею. На каждом билете всего 8 цифр. Выигрышный билет только один и нужно угадать все цифры. При таком раскладе ваш шанс сорвать джекпот – один из 13 983 816. Аналогичное число для лотерейных билетов на 78 цифр – просто астрономически огромное.

Теоретически, кто-нибудь мог бы намеренно генерировать миллионы или миллиарды счетов в секунду на мощном компьютере и ворошить их в поисках bitcoin. Но число вариантов настолько большое, что поиск того самого, действительно существующего счета с которого можно стащить пару баксов стал бы делом всей жизни, без всяких гарантий на успех. Вкладываться в такое безнадёжное дело просто не выгодно. Лучше направить эти ресурсы на честный заработок биткойнов (да, это тоже возможно).

Что такое «хэшинг», и для чего он в системе Bitcoin?

Криптографическая функция хэширования — это серия алгоритмов, которая превращает любой набор входных данных (текст, число) в «хэш». Хэш для данных — как отпечаток пальца для человека. Нет двух одинаковых, у каждого свой, и при этом понять, глядя на отпечаток, как выглядит человек совершенно невозможно. Одно и тоже сообщение проходя через хэшинг даёт одно и то же хэш-значение. Хэш легко посчитать, но из результата физически не реально высчитать что за данные были на входе. И ещё, сколько угодно малое изменение входных данных меняет хэш до неузнаваемости.

Глянем на конкретный пример хэширования одним из самых известных алгоритмом SHA256 (https://sha256.online/). Введем сообщения и сравним результаты.

«Который час?»: хэш

ee16a8b5a980d4047816a6588c2cb4cf0e09766e6e8513a98ff38bb073ca2b57

«Который час»: хэш b92c1ea57385cea5b66335f5d587706a847dd67d0ffbeee325404f4542c89fe2

Просто буква «К»: хэш

130b874a5c043180ecd31f62bf7dc6bc2c4156c2c1cc702ce7de87f4e945c58b

Заметим, что вводная инфа разной длины всё равно даёт хэш одной и той же длины в 64 символа. Тоже самое будет если ввести, скажем, все четыре тома романа «Война и мир». То есть теоретически, конечно, возможно перепробовать все возможные комбинации всех на свете слов, цифр, и символов на всех языках мира и найти что за сообщение было на входе. Но это чисто теоретически. На практике тратить такие ресурсы без гарантий на успех просто не выгодно. Мягко говоря.

Подведём итог: для чего нужен хэшинг? С помощью хэшинга можно сравнить два информационных сообщения и убедиться, что они одинаковые, не зная о чем эти сообщения. Это свойство и используется в Bitcoin.

Цифровые подписи

Широко используются в Bitcoin для переводов и оплат. Наверняка большинство из нас слышали о таком инструменте, но не многие интересовались принципом работы. Так вот, цифровая подпись получается, когда вы берёте сообщение, которое хотите подписать, и пропускаете его через математическую формулу с вашим личным ключом. То есть ваша цифровая подпись всегда разная и зависит от конкретного сообщения, которое вы подписываете. При этом любой, кто знает ваш открытый ключ, используя аналогичный подход может проверить, что данное сообщение подписали именно вы.

Bitcoin как система.

Bitcoin как система воплощен в компьютерной сети, участником которой может стать любой желающий. В сети нет главного, все участники равны и имеют одинаковые возможности. Самый простой способ стать узлом (участником) этой сети – установка бесплатной программы типа Bitcoin Core, которая имеет полный функционал, и выход в интернет. Это не единственная программа, просто самая популярная https://bitcoin-rpc.github.io/en/releases/. Сегодня таких полноценных узлов около 50-ти тысяч, их количество постоянно плавает. (https://bitnodes.io/nodes/all/#global-bitcoin-nodes). Все эти компьютеры соединены и постоянно шепчутся друг с другом, распространяя информацию о финансовых операциях по сети, чтобы все узлы были в курсе движения биткойнов. Это своего рода счетоводы, или бухгалтеры.

Программы на узлах работают по одинаковому принципу и приводят в исполнение универсальный Bitcoin-протокол (свод правил), который и определяет как что работает. Строго говоря, в системе Bitcoin нет счетов, есть просто адреса. Сколько биткойнов и какому адресу они принадлежат записывается в одну общую электронную бухгалтерскую книгу (гроссбух), которая называется blockchain (англ. цепочка блоков). Копия этой книги есть у каждого узла, и она непрерывно обновляется. Блоки в blockchain добавляют особые участники сети - майнеры (от англ. miner – рудокоп, шахтер). Посмотрим на деятельность бухгалтеров и майнеров попристальней.

Начнем с полного функционала программ типа Bitcoin Core, который заключается в следующем:

· Устанавливать соединение с другими участниками сети Bitcoin

· Загружать и хранить гроссбух Blockchain от других участников

· Видеть появление новых финансовых операций. Подтверждать их, хранить, и пересылать другим

· Видеть появление новых блоков blockchain. Подтверждать их, хранить, и пересылать другим

· «Майнить» (рудокопить) новые блоки

· Создавать и управлять Bitcoin адресами

· Создавать и отправлять финансовые операции

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

Итак, новая финансовая операция подписывается личным ключом отправителя и отправляется к ближайшему узлу-бухгалтеру. Он подтверждает её, опираясь на данные своей копии blockchain и аутентичности цифровой подписи отправителя. Если эта транзакция проходит проверку успешно, бухгалтер откладывает её для себя в отдельную кучку для хранения финансовых операций, ожидающих включения в blockchain, а также пересылает своим соседям по сети на проверку. Соседи по получению делают тоже самое до тех пор, пока все участники сети не будут в курсе. Теперь, чтобы финансовая операция была подтверждена на уровне всей сети Bitcoin, она должна быть одобрена как минимум половиной участников и добавлена в блок. Это важный момент. Склонить одного участника к мошенничеству легко, попробуйте склонить к этому тысячи людей, раскиданных по всей планете.

Зачем вообще нужно собирать все транзакции в блоки?

Финансовые операции в сети возникают непрерывно в разных частях мира, и их множество. Скорость интернета везде разная, а порядок записей в blockchain чрезвычайно важен. Допустим есть у вас один биткойн и вы, зная о задержках в интернете, продаете его в двух разных местах. Такое вполне может прокатить, потому что у каждого участника из-за лага в сети своё представление о порядке записей в гроссбухе. Так вот, чтобы упорядочить записи в blockchain, подтвержденные финансовые операции майнеры собирают в блоки. Образно говоря, блок в blockchain это как страница в бухгалтерской книге, в то время как каждая транзакция – это всего лишь строчка. Всем участникам гораздо легче быть синхронизированными если новые данные о финансовых операциях приходят страницами раз в десять минут (так задумано в системе), чем сыпятся непрерывно.

Теперь, когда ясно для чего нужно собирать финансовые операции в блоки, разберемся с тем, кто может создавать блоки, и как часто.

Целевая пауза примерно в десять минут между блоками выбрана в Bitcoin просто так, как компромисс. Этого времени достаточно для синхронизации всех участников сети, при всех задержках в интернете, да и людям не приходится долго ждать подтверждения своих переводов и оплат. Разные криптовалюты имеют разные паузы между созданием блоков. Как контролируется эта пауза?

Как мы отмечали ранее, все участники сети в системе Bitcoin имеют равные возможности. Это в том числе касается и создания блоков. Так вот, чтобы решить кто же создаст очередной блок, все желающие играют в азартную игру, которая должна длится примерно десять минут. Основа игры – скоростной хэшинг информации, содержащейся в блоке.

Каждый создатель берёт ожидающие включения в blockchain транзакции, о которых ему известно, и собирает их в блок специфического формата, до номинального значения размера блока в один мегабайт. В каждом блоке есть специальная часть, отдельная от финансовой информации, которую можно заполнять произвольным числом. Это число в криптографической терминологии называется nonce (number once). Её единственная функция – дать возможность создателям менять исходные данные для хэширования и, таким образом, менять хэш значение блока.

Система Bitcoin задаёт определённое хэш значение и создатели блоков начинают хэшить свои блоки, меняя значение nonce, до тех пор, пока не выпадет хэш, меньший целевого значения, выбранного системой. Чем меньше целевое значение, тем сложнее (и, соответственно дольше) приходится дрочиться создателям блоков чтобы получить достаточно маленький хэш. Так система Bitcoin регулирует паузу в создании блоков.

У кого первого выпал достаточно маленький хэш – тот молодец. По правилам Bitcoin его блок, после распространения по системе и проверки всеми участниками, становится следующей страницей в нашем электронном гроссбухе – blockchain. Этот процесс называется майнингом («рудокопанием», если угодно)

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

В функционале Bitcoin-программ есть возможность добровольно заплатить комиссию за свою финансовую операцию, чтобы создатели блоков занялись внесением вашей транзакции в blockchain в приоритетном порядке. А вторым и в настоящее время гораздо более важным стимулом для создателей блоков создавать блоки является «награда за блок». По сути, создатель блока может выписать себе чек от системы один раз за блок на определенную сумму. Идея состоит в том, что вознаграждения за блоки заведут Bitcoin-систему «с толкача», а затем постепенно исчезнуть, заменив их комиссией за транзакцию. Награда за блок была 50 биткойнов за блок в 2009 году и с тех пор уменьшается вдвое каждые 210 000 блоков, что при 10 минутах на блок соответствует примерно каждые 4 года. Сейчас это 3,125 биткойна за блок. Около $100 тыщ долларов. (Нужен мощный компьютер. С грустью глядя на свой старенький мак понимаю, что на таком корче много не нарудокопишь).

Подводя итог, отметим, что майнинг – это единственный способ произвести новые биткойны. Этот процесс конечен, и когда он закончится, на свете будет 21 миллион биткойнов. 19 миллионов уже замайнили, осталось ещё два.

Пару слов о хранении биткойнов. Вы можете услышать, что биткойны хранятся в электронных кошельках. Это не так. Право собственности на биткойны записано в blockchain, копии которой находятся у узлов-участников сети Bitcoin. Украсть их практически невозможно. Если кто-то хакнет одну какую-то копию, тысячи других узлов не примут взломанный вариант. Биткойн-кошельки хранят закрытые ключи (не биткойны!), а их программное обеспечение позволяет пользователю кошелька легко видеть, сколько монет он контролирует, и осуществлять платежи.

О природе денег и ценности Bitcoin.

Расплачиваясь биткойнами, вы платите, находясь в одноранговой (peer-to-peer) системе с получателем платежа. Вы платите ему напрямую, без посредников. Вас не просят предъявить паспорт, на вас невозможно наложить санкции, или содрать с вас налоги. Это круче чем платить наличкой на рынке. Все прозрачно. Заверено тысячами участников сети. Если вы и получатель согласны, то никто не может вам помешать таким способом расплатиться. В этом и заключается ценность Bitcoin.

Теперь возьмем обычные валюты. Они все фиатные, не имеющие никакой внутренней ценности в отличии, например, от золотых монет в былые времена. Наш российский рубль является деньгами, потому что так гласит закон РФ, а не потому, что он сам по себе что-то стоит. То есть, если за рублём стоит обещание государства российского, то в тех частях мира, где на это обещание начхать, своим рублём можно вытереть одно место. Мы используем рубль по двум причинам: он является законным платёжным средством в РФ, и в России платить налоги можно только рублём. Эти качества никак, даже отдалённо не перекрывают то, что предлагает Bitcoin.

Нет ничего подозрительного в том, что ни одна страна не признала Bitcoin законным платёжным средством на сегодняшний день. Всеобщее признание такой валюты разрушит всю существующую финансовую систему, упразднит существование банков, и лишит контроля над людьми в финансовой сфере.

-2