Каталог статей
Действительно ли безопасны транзакции с криптовалютой
Процесс майнинга биткойнов и трейдинга биткойнами набрал колоссальную популярность в последнее время. Стоимость криптовалют в основном сильно растет, а майнинг приносит неплохую прибыль тем, кто занимается этим всерьез. Цель данной статьи — не рассказать о прелестях и прибыльности этой деятельности, так как на наш взгляд, трейдинг криптовалютой достаточно рискован, а майнинг для получения хорошей прибыли требует специальных профессиональных знаний о качественном оборудовании. Нас интересует данный процесс с математической точки зрения или почему транзакции с криптовалютой действительно безопасны? О том, какие требования должны предъявляются к биржам по торговле криптовалютой, читайте в другой нашей статье.
Блокчейн и его безопасность
Каждая транзакция с использованием криптовалюты существует в электронном пространстве не сама по себе, согласно задумке создателей этого программного кода, она встает в блоки транзакций. При этом каждый блок выстраивается в цепочку. Об этом написано достаточно много статей, и мы не будем останавливаться подробно на механизме. Мы зададимся вопросом: насколько безопасны такие транзакции, учитывая, что они необратимы и анонимны, то есть какие-либо юридические споры по ним крайне затруднительны. Этот вопрос, в свою очередь, сводится к вопросу о том, может ли наш контрагент отправить нам биткойны, которых у него нет, или отправить их разным контрагентам два раза?
С первым вопросом все достаточно просто. Каждый блок транзакций содержит информацию о предыдущих транзакциях, в результате которых криптовалюта получена плательщиком. А вот второй вопрос гораздо сложнее. Ведь пользователь может отправить одни и те же деньги вам и другому пользователю или даже самому себе, пока транзакция не сформировалась в блок. Разберем эту ситуацию на примере биткойнов.
Почему отправка одних и тех же биткойнов технически маловероятна
Именно для предотвращения такого мошенничества формирование блоков так сильно математически затруднено. Формирование каждого блока представляет собой решение трудной математической задачи. На ее решение с использованием ресурсов всей вычислительной системы, задействованной в майнинге биткойнов, уходит 10 минут. На текущий момент вычислительная мощность сети майнеров биткойна превысила 64 экзафлопса (64*1018 операций в секунду). Это в 256 раз больше совокупной мощности 500 мощнейших суперкомпьютеров.
Если один пользователь отправляет одни и те же биткойны дважды, то он фактически формирует две цепочки транзакций, которые должны выстроиться в цепочку блоков. Согласно правилам системы, подтвержденной будет только та транзакция, цепь которой длиннее. Это означает, что для того, чтобы отправить второй раз те же биткойны другому пользователю или самому себе нужно выстроить эти транзакции в блоки, формирующую более длинную цепочку, то есть последовательно несколько раз решить эту сложную математическую задачу. Доля одного майнера в вычислительной мощности всей сети, ничтожно мала. Это означает, что решить первому данную математическую задачу несколько раз подряд фактически невозможно. Был случай в истории, когда один биткойн-пул сформировал 6 блоков подряд. В связи с этим транзакцию в основном считают подтвержденной, когда после нее выстроено еще 6 блоков.
Математическая задача майнинга биткойнов
Какова же математическая задача, которую так упорно решают майнеры? На самом деле она не так сложна с математической точки зрения, сколько просто длительна в плане решения. Суть ее состоит в том, чтобы подобрать исходные данные для блока таким образом, чтобы их хэш начинался на определенное заранее заданное количество нулей.
Хэш — это криптографическая функция, которая по особому алгоритму шифрует данные. Для биткойнов используется двойной SHA256. Суть SHA256 состоит в следующем.
Алгоритм SHA256
В качестве входных данных подается 8 4-байтовых слов. Функция большинства формирует выходное слово, которое побитово состоит из 0 и 1 таким образом, что если в первых трех входных словах на месте данного бита большинство нули, то его бит с тем же номером будет ноль, иначе единица. Функция Сигма1 циклически сдвигает первое слово на 2 бита, 13 бит и 22 бита, а затем складывает результаты по модулю 2. Функция Сигма2 также работает с пятым словом, сдвигая его на 6, 11 и 25 битов. Функция Ch реализует функцию выбора: если на данной битовой позиции бит пятого слова равен единице, то на выход идёт бит из шестого слова, иначе из седьмого.
Результаты вычислений Ch и Сигма1 после 32-битного сложения формируют новое первое слово. А результаты вычислений Ma и Сигма2 после 32-битного сложения формируют новое пятое слово. Все остальные слова сдвигаются вправо на одно. Затем весь раунд сначала повторяется также 64 раза.
Как видим, сам алгоритм длинный, но математически не сложный. Задача майнера состоит в другом: на выходе нужно подобрать хэш, в начале которого будет определенное заранее заданное количество нулей. При этом математического алгоритма по подбору входных слов для получения такого хэша во всяком случае пока не решена и считается неразрешимой, а это значит, что решается она только перебором с весьма низкой вероятностью нахождения нужного значения. Количество нулей в хэше подбирается в программе таким образом, чтобы задача решалась раз в 10 минут, и решить ее 6 раз подряд и более было невозможно.