Математические основы биткойн-блокчейна / Хабр

 

Содержание

Что такое Биткоин от А до Я простыми словами. Теория и практика

В данной статье мы максимально коротко и простыми словами проведем ликбез всего, что касается криптовалют. Этот текст вы можете распечатать и показать своей бабушке, которая давно спрашивает “Внучок, что они всё про Бетховен говорят? Он же умер давно! Какие еще деньги?”. У нас на сайте есть кладезь знаний — Криптовалютная Библия, в ней собрана вся необходимая информация, чтобы понять, что такое криптовалюта, как инвестировать, как майнить и так далее. Все материалы написаны простым языком, однако не все хотят так глубоко вникать в вопрос.

Данный текст уникален, потому что мы “перелопатили” очень много информации и выдаем её вам понятным языком. Раньше это уже удалось Стивену Хокингу, который написал книгу по сложным аспектам мироздания и устройства вселенной Краткая история времени без математических формул. Говорят, что для Смольного института благородных девиц некий ученый тоже написал в своё время книгу по физике без единой формулы. Постараемся и мы повторить их успех, но не в физике, а в современных финансах, или даже правильнее сказать, в финансах будущего.

По ходу повествования мы будем давать ссылки на статьи Криптовалютной Библии, о которой мы уже говорили выше, если вы захотите углубиться в какой-то аспект работы криптовалют и понять его в деталях. В тексте есть некоторые упрощения, к которым можно “придраться” — мы совершенно не против. Все замечания ждём в Телеграм-чате Два Биткоина.

Биткоин — первая и главная криптовалюта

Существуют тысячи криптовалют. Первая криптовалюта, которая появилась в мире — Биткоин, на английском Bitcoin, краткое обозначение BTC. В данной статье мы для простоты будем говорить в основном про Биткоин.

Все другие криптовалюты представляют собой клоны Биткоина. Они были полностью или частично скопированы, где-то были добавлены новые идеи. Это стало возможным, потому что программный код Bitcoin открыт для всех желающих — это не секрет. Любой человек в мире может посмотреть, как он устроен и работает.

Поиск потерянных биткоинов

Код Биткоина находится на GitHub в репозитории bitcoin.

Вы ничего не понимаете в программировании? Не переживайте, авторы данной статьи тоже не понимают, но это не мешает нам с вами пользоваться криптовалютами.

Кстати, здесь сделаем первую оговорку. Нам с вами приходится на веру принимать то, что сделали программисты, которые придумали Биткоин. Стоит ли этого бояться? Не стоит. Вы же не знаете досконально, как устроен ваш автомобиль по винтику, или как работает компьютер в нем, верно? Так же и тут. Программисты по всему миру жаждут найти хоть какой-то огрех в работе сети Bitcoin, поэтому, уж поверьте, если бы там была ошибка, её бы давно нашли. Мы просто доверяем профессионалам, которые собирали нашу машину и тестировали её, то же самое с Биткоином: миллионы программистов в мире читают и изучают код Bitcoin каждый день.

Что такое криптовалюта, кто ей управляет? Можно ли пощупать Биткоин?

Биткоин — электронные деньги

Судя по названию “криптовалюта”, вы прекрасно понимаете, что речь идет о деньгах. Только эти деньги “крипто”, то есть зашифрованы каким-то образом. Что и как зашифровано — в данный момент нас с вами не интересует. Давайте считать, что криптовалюта это электронные деньги.

Что значит электронные? Смотрите, обычная валюта бывает напечатанная (банкноты) и электронная (счет в банке). Когда вы переводите деньги со своего счета на счет друга, платите коммунальные платежи через интернет-банк, когда вы платите банковской картой в магазине — во всех этих случаях вы не видите деньги. Они где-то виртуально на каких-то компьютерных серверах. Вы их не видите и не можете потрогать руками.

Биткоин существует более двенадцати лет

Вы можете пойти и снять 5 тысяч рублей в банкомате со своей банковской карты и положить под подушку. В этом случае ваши электронные виртуальные деньги станут реальными. Вы можете трогать их, любоваться ими, повесить на стену. В случае с Биткоином так сделать нельзя. Вы не можете пойти в кассу, обналичить Биткоин и положить под подушку в виде некой монеты BTC. Разумеется, вы можете обменять Биткоин на рубли и положить под подушку рубли, но это уже и будут рубли.

Страшно ли это? На наш взгляд — совершенно не страшно. Даже бабушки (большинство) уже давно получают пенсию на банковские счета, десятилетиями пользуются cберкнижками и не используют реальные деньги.

Сколько всего Биткоинов и рублей

По данным Центрального Банка России, всего было напечатано более 25 триллионов рублей наличными. Помимо этого на банковских счетах хранятся виртуальные электронные рубли. Сколько их? Никто не знает. Аналогичная история с долларом, евро, фунтом стерлингов или любой другой обычной валютой. Мы не знаем и не можем контролировать, сколько её существует, и сколько будет существовать завтра или через год. Процесс эмиссии (выпуска) рубля не контролируется и не может быть предсказан нами. И в любой момент правительство любой страны может напечатать еще бумажек.

С Биткоином все намного проще. Сейчас в мире чуть менее 19 миллионов Биткоинов (BTC). Каждый день появляется примерно 900 новых BTC, однако со временем количество ежедневно появляющихся Биткоинов падает. Всего в мире будет 21 миллион Биткоинов, если быть более точным 20,999,999.9769 BTC. Всё. Ни больше, ни меньше.

Крупные компании покупают Биткоин

Если Банк России решил напечатать 100 миллионов рублей, он берёт и печатает их. Он не будет спрашивать вас или нас. С Биткоином так не выйдет. Будет лишь 21 миллион монет. Вы не сможете “допечатать” еще парочку BTC позже — это невозможно.

Кто управляет валютами?

Обычными валютами управляют центральные банки стран. Рублем управляет Центральный Банк России, долларом — Федеральная Резервная Система США, евро подчиняется Европейскому Центральному Банку.

Россия и цифровые валюты

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

Как работает Биткоин? Как устроен перевод обычных денег и Биткоинов. Что такое майнинг и зачем он нужен?

Перевод рублей

Перевод обычных денег, например рублей, контролируется банками. Как это работает? Допустим, вы хотите перевести 1000 рублей вашей бабушке. У вас банковский счет в ВТБ, а у неё в Сбербанке. Вы заходите в специальное приложение банка ВТБ или на сайт ВТБ на телефоне или компьютере, вбиваете номер карты или банковского счета бабушки, сумму для перевода, при необходимости подтверждаете смс-сообщением — и вуаля, деньги у неё на счету.

Что только что произошло? Вы дали команду своему банку отправить 1000 рублей бабушке. Ваш банк взял с вашего счета 1000 рублей, отправил их в банк вашей бабушки. Далее банк вашей бабушки зачислил ей 1000 рублей на счет.

Любитель криптовалют уходит из банка инвестировать в Биткоин

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

Вы даже не можете отследить перевод. Дошел ли он? Дойдет через 20 минут или через сутки? Бабушка скажет “Милок, я не получала деньги”. Банк вам скажет “деньги ушли, ждите”. Совершенно непрозрачная система.

Перевод биткоинов

Все кошельки Биткоина связаны между собой. Они постоянно шепчутся друг с другом и передают друг другу информацию о всех переводах криптовалюты. Давайте сразу рассмотрим пример.

У вас есть 1 BTC, вы решили перевести 0.1 BTC своей бабушке. Точно так же как и в случае обычных денег у вас есть номер счета (адрес кошелька) бабушки. Видите, пока никакой разницы, разве что в номере счета Биткоина есть не только цифры, но и буквы, и знаков побольше. Номер банковского счета выглядит так 40817810099910004312, а адрес Bitcoin-кошелька так 32qoXh82StQpvgCwhQdKpxoLTrcAX5EqyG.

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

Как это произошло? Ваш кошелек передал информацию о переводе всем другим кошелькам. Однако только передать информацию недостаточно. Кто-то должен осуществить (одобрить) данный перевод. В случае с обычными деньгами это делали банки. В Биткоине это может сделать некий компьютер или группа компьютеров. За проведение переводов этот компьютер получает вознаграждение.

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

Все данные в системе Биткоина открыты для любого человека. Вся информация по переводам открыта. Эта информация, правда, обезличена. Например с кошелька bc1q3hq0rrkzvw48fgs3c9ceyxvjwe9zn5z0y7pkgc перевели 0.0138 монет BTC на кошелек 14o9CArVto8yPfo5W4bMSM7spmEK9E1q3Z, это произошло 21 сентября 2021 года в 00:46. Любой человек в мире может в этом убедиться.

Читать статью  Что за криптовалюта ним где ее взять?

Тут уже бабушка не сможет отмазаться, что деньги не пришли. Банк не скажет, что у него выходной, и поступление денег будет завтра. Вы сразу видите, что ваши деньги дошли до бабушки и лежат у неё на кошельке. Вы можете пойти и показать это другим членам семьи, все могут видеть ваш перевод, баланс вашего кошелька и баланс кошелька бабушки.

Что такое блокчейн

Помимо слов “биткоин” и “криптовалюта” вы наверняка слышали два других важных понятия “блокчейн” и “майнинг”. Оба они связаны друг с другом и являются основой работы криптовалют.

Мы уже говорили, что данные о всех переводах в системе Биткоина доступны каждому человеку. Эти данные хранятся в блокчейне. В переводе с английского “blockchain” — “цепочка блоков”. Не стоит пугаться этого термина. Блокчейн следует представить как книгу учета, у которой каждая страница пронумерована по порядку, на каждой странице написано время её создания и список переводов, которые были осуществлены в этот момент времени. Страница книги называется блоком.

Пример страницы книги (блока).

  • Номер страницы: 456701
  • Время: 3 ноября 2017 08:08
  • Адрес 1CKXsyrhF9zfzizZb1x9zwkHczjxNRc6by перевел 0.065 BTC адресу 15pRb5SZDLWNVuQx3PqcueYarHy3u83LdA.
  • Адрес 1NuUvBpCSHCa2Ltsj4KEVF1wb1kK6xyZQz перевел 4 BTC адресу 17G52MMSn9tadonQKbo2Ch6oB7PygUc6c7.

Кстати, это реальные данные в сети Биткоин. Вы можете посмотреть их по ссылке. Для простоты можем просто считать, что Вася перевел Маше 0.065 BTC, а Катя перевела Пете 4 BTC.

Суммы транзакций в блоке

Аналогичные книги учета существовали еще со времен Древнего Рима. Однако у блокчейна есть своя особенность. Как только вы закрыли одну страницу и начали заполнять новую, вы не можете исправить или изменить ничего, что было на прошлых страницах. Никогда. Поэтому и говорят о “цепочке”, в такую книгу учета нельзя вклеить страничку где-то посерединке. Это невозможно.

Чтобы попрактиковаться давайте вместе составим книгу учета, то есть блокчейн. Мы берем тетрадку с бесконечным количеством листов и начинаем писать с первого листа. Все кошельки в сети Биткоина разговаривают друг с другом. Нам поступает информация:

  • Игорь перевел Сергею 2 BTC
  • Олег перевел Снежане 3 BTC
  • Коля перевел Толе 4 BTC

И так далее. Разумеется, у нас нет имен Игорь или Сергей, а только обезличенные адреса, типа 15pRb5SZDLWNVuQx3PqcueYarHy3u83LdA.

Мы записываем всю информацию на первый лист тетради. Информация о переводах продолжает поступать. Мы пишем.

  • Маша перевела Свете 1 BTC
  • Семен перевел Коле 3 BTC
  • Настя перевела Джону 5 BTC

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

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

Весь блокчейн всегда доступен любому человеку, вы можете зайти на любую страницу “книги учета”, посмотреть, кто кому перевел какую сумму и когда это было. Вы также можете посмотреть остаток баланса на любом из кошельков в системе Биткоин. Любопытно, не правда ли? Вы не увидите там имени Маша или Петя, вы увидите только адреса, однако вся информация будет доступна. Если хотите убедиться в этом, воспользуйтесь, например, сайтом blockchain.com

Вроде просто, не правда ли? Отлично, с блокчейном разобрались, теперь пора переходить к майнингу. Вам ведь правда захотелось стать таким нужным и полезным человеком, без которого не закрыть новый блок в блокчейне (не перевернуть страницу книги учета по имени Биткоин). Да еще и говорят, за это неплохо платят.

Что такое майнинг

Майнинг Биткоина — процесс, при котором вычислительное оборудование решает математическую задачу. Эта задача одинаковая для всех компьютеров в мире. Решивший задачу переворачивает страницу в “книге учета” Биткоина, то есть создает новый блок в блокчейне, тем самым подтверждает все переводы, которые накопились с момента закрытия прошлого блока. Как только задача решена, появляется следующая задача. Весь мир начинает решать её. Важно быть именно первым, кто решит задачу, потому что только первый решивший получает вознаграждение.

Сложновато? Давайте еще раз разберем весь процесс майнинга по пунктам.

  1. Всё вычислительное оборудование, которое задействовано в майнинге Биткоина решает одну и ту же задачу.
  2. На открытую страницу “книги учета” под названием блокчейн Биткоина пользователи записывают все переводы: Игорь перевел Сергею 2 BTC, Олег перевел Снежане 3 BTC. Однако все эти переводы еще не действительны. Пока они просто копятся.
  3. Один из майнеров решил задачу.
    1) Все переводы, что были записаны, подтверждаются.
    2) Майнер получает вознаграждение.
    3) Майнер вписывает свое имя (адрес своего кошелька) в только что закрытый блок.
  4. Весь мир, вместе с удачливым майнером, начинает искать решение новой задачи для следующей страницы “книги учета” (блока).

Как часто меняется задача? Программный код Биткоина написан таким образом, что для нахождения ответа на задачу требуется, примерно, 10 минут. Это осуществляется очень простым алгоритмом. Чем больше майнеров работают над решением задачи, тем сложнее эта задача. И наоборот: если количество майнеров уменьшается, задача упрощается.

Использование Биткоина и других криптовалют

В отличие от обычных денег, криптовалюты обезличены, но полностью прозрачны. Такой вот парадокс. Это значит, что вы можете посмотреть любые переводы Биткоина за всю историю его существования. В графе “Отправитель” или “Получатель” не будет имен, однако будут адреса кошельков — вот эти кракозябры, которые мы с вами уже видели, например, 1CKXsyrhF9zfzizZb1x9zwkHczjxNRc6by.

С одной стороны это предоставляет полную анонимность. С другой стороны, если совместить живого человека и его адрес Биткоина, можно увидеть абсолютно все его переводы. На какие адреса и сколько он переводил. Надо сказать, что у любого человека может быть бесконечной число адресов Биткоина, однако не всегда удается оставаться полностью анонимным.

Важный момент, отличающий Биткоин от Рубля, Доллара или Евро в том, что Биткоин никем и никак не регулируется и не охраняется. Простой пример.

Если вы перевели 1000 рублей не своей бабушке, а на счет другого человека. Что вы будете делать? Обратитесь в банк, напишите заявления, с большой долей вероятности вам помогут и вернут ваши средства.

Если вы перевели 0.1 BTC не своей бабушке, а на чужой адрес, в большой долей вероятности вы никогда их не вернете. Нет механизма, чтобы вернуть деньги. Вы никак не сможете связаться с получателем, чтобы он “отдал по-хорошему”. Нет Биткоин-полиции. У вас нет вообще никаких рычагов.

В этом плане криптовалюты скорее похоже на наличные деньги. Если наличные деньги украли, найти их будет невозможно. Хранение криптовалют может быть также опасно, как и хранение наличных. Разве что наличные имеют размер, это куски бумаги, много их не спрячешь, а вот биткоины в любом количестве можно уместить на флешке, да что уж говорить, в одном маленьком файлике на компьютере.

Важное отличие криптовалютных переводов от переводов обычных валют. Если вы перевели Биткоин и этот перевод уже запечатан в блокчейн, значит деньги ушли от вас и дошли адресату. Другого не дано. Любой человек в мире может в этом убедиться.

Если вы перевели рубли со счета на счет, они могли из одного места уйти, на другое прийти через день, через два, а могли вообще потеряться по дороге из-за плохой работы банков.

Где и как можно использовать криптовалюты?

Обычно криптовалюты используют для следующих целей.

  1. Инвестирoвание. Процесс покупки криптовалют, чтобы получить доход от роста их цены.
  2. Оплата. Вы покупаете товары или услуги за криптовалюту. К сожалению, не многие продавцы в мире принимают криптовалюты, однако ситуация с каждым годом улучшается. Например, в Сальвадоре Биткоин признали официальным платежным средством, за Биткоин можно покупать автомобили и недвижимость, да и PayPal позволяет приобретать криптоактивы жителям США и Великобритании.
  3. Майнинг. Процесс получения криптовалюты путем вычислений на своем оборудовании. Простыми словами, у вас есть оборудование для майнинга, оно работает и приносит вам доход.

Майнинг никогда не стоит путать с инвестированием. Разумеется, один и тот же человек может быть и майнером и инвестором, однако разница все же есть. Майнинг — это доход здесь и сейчас. Инвестирoвание это “на перспективу”.

Хранение Биткоина

Независимо от того как именно вы хотите использовать Биткоин, вам нужно завести кошелек. Выбор кошелька — важный аспект. Безопасность вашей криптовалюты в ваших руках. Еще раз напоминаем, если у вас украдут криптовалюту или вы её сами потеряете, никто её не восстановит! Какой бы вы ни выбрали кошелек, есть риск потерять ваш Биткоин. В зависимости от кошелька и способа хранения, риск выше или ниже.

Если вы не собираетесь хранить большие суммы и только начинаете свой криптовалютный путь, мы рекомендуем вам один из мультивалютных криптокошельков. Они доступны на компьютере и на мобильном телефоне. Например Coinomi или Trust. Обязательно сохраните пароли и специальные фразы восстановления в надежных местах, как рекомендуют создатели кошельков.

На ступень безопаснее будут так называемые аппаратные кошельки. Специальные флешки, которые вы вставляете в компьютер, чем-то похоже на ключи 1С в компьютере бухгалтера. Основная опасность в случае таких кошельков — покупка с рук или в непроверенных источниках. Аппаратный кошелек обязательно должен быть новым и купленным напрямую у фирмы-изготовителя.

Тот самый биткоин

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

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

Оплата, покупка, продажа, обмен Биткоина и других криптовалют

Для операций покупки и продажи Биткоина, а также обмена его на другие криптовалюты существуют специальные криптовалютные биржи и сервисы обмена. Большая часть из них требует регистрации и предоставления личной информации — например, паспорта. Можно найти и те биржи, которые до сих пор работают в анонимном режиме.

В любом случае обмен одной криптовалюты на другую обычно осуществляется намного проще, чем обмен криптовалюты на рубли. Все что вам нужно сделать, зайти на одну из бирж, где вам доступны различные варианты обмена. Самые известные биржи в мире: Coinbase, Gemini, Kraken, Binance. Далеко не все работают с клиентами из стран СНГ.

Для покупки или продажи Биткоина можно также воспользоваться Telegram-ботом. Это рабочий вариант, особенно для покупки и продажи небольших сумм.

Криптовалюта в России легальна?

Закон о цифровых финансовых активах и цифровой валюте был принят 1 января 2021 года. Согласно этому закону, криптовалюта может быть объектом инвестирования, но не может использоваться для оплаты товаров и услуг.

Как видите, с точки зрения закона оплачивать Биткоином в России ничего нельзя. В других странах законодательство бывает иным. Где-то криптовалюта разрешена, где-то запрещена, где-то её статус до сих пор никак не регулируется.

Майнинг

Майнинг не такая уж и сложная штука, как вам могло показаться с первого взгляда. Страшное слово “криптовалютная ферма”, которым пугают в новостях по телевидению (обычно когда кто-то не платит за электричество), не такое уж и страшное.

Оборудование для майнинга

Существует два вида оборудования для майнинга:

  1. Специальные устройства для майнинга, так называемые ASIC (Интегральная схема специального назначения). Представляет из себя небольшую металлическую коробку, внутри которой расположены микросхемы, а по бокам стоят вентиляторы для охлаждения.
  2. Компьютерные видеокарты. Те же самые видеокарты, которые используются для компьютерных игр. Для увеличения производительности обычно собирают специальные компьютеры, с открытым корпусом для лучшего охлаждения и устанавливают не одну, а несколько видеокарт в один компьютер.

Майнинг Биткоина осуществляется только с помощью ASIC-устройств, а Ethereum майнится на видеокартах.

Видеокарты против ASIC

Ещё в майнинге есть удача. Подробнее об этом важном показателе читайте в отдельном материале.

И ASIC’и и видеокарты потребляют много электроэнергии, а при работе они сильно греются. Помните об этом.

Сложно ли начать майнинг?

В современном мире сложность майнинга очень высокая, и процесс идет только через так называемые майнинг-пулы. Майнинг-пулы это серверы, которые объединяют майнеров. Майнеры работают вместе и получают вознаграждение. Майнинг-пул распределяет это вознаграждение честным образом и выплачивает заработанную криптовалюту каждому майнеру.

Если у вас есть стационарный игровой компьютер, в котором установлена видеокарта, вы можете начать майнить уже сегодня — это не сложно. Зайдите на 2CryptoCalc, посмотрите, какую из криптовалют выгодно майнить на вашей видеокарте. Далее следуйте инструкциям майнинг-пула. Вам нужно будет скачать специальную программу-майнер и установить кошелек той криптовалюты, которую вы собрались майнить.

Antminer Bitmain S19 Pro

Если вы хотите майнить именно Биткоин, обычная видеокарта вам не поможет. Единственный вариант — покупка специального ASIC-устройства. Одно из самых продвинутых на данный момент Antminer Bitmain S19 Pro. Потребляет 3.5 КВт от сети и шумит как самолет. Дома такой не поставишь.

Однако настройка его совсем не сложная, все что вам нужно: вбить в настройках ASIC’а адрес майнинг-пула, адрес своего Bitcoin-кошелька, подключить устройство к интернету и включить в розетку.

Применяем знания на практике

Вы решили, что достаточно теории, и пора приступать к практике? В этом небольшом разделе мы приведем два самых часто встречающихся примера “приобщения” к миру криптовалют.

Вы решили стать криптовалютным инвестором

  1. Отложили 10 тысяч рублей с зарплаты и хотите купить на них Биткоин.
  2. Устанавливайте кошелек. Подойдет Coinomi прямо в вашем мобильном телефоне.
  3. Устанавливаем приложение — iOS/Android.

Монеты в Coinomi

Фраза восстановления для Биткоина в Coinomi

Получение монет в Coinomi

Ура. Теперь вы криптоинвестор. Осталось только дождаться, пока 1 Bitcoin будет стоить один миллион долларов.

Вы решили стать криптовалютным майнером

У вас есть компьютер, на котором вы режетесь в GTA, что ему простаивать?

    В компьютере установлена видеокарта Nvidia 1080. Заходим на 2CryptoCalc.com, выбираем вашу видеокарту и смотрим, какая криптовалюта самая выгодная для майнинга.

Самый прибыльные криптовалюты для майнинга

Ethereum в Coinomi

Фраза восстановления для Эфириума в Coinomi

Получение эфиров в Coinomi

Архив майнинг-пула 2Miners

Ура. Теперь вы криптовалютный майнер.

Благодаря этому материалу вы стали разбираться в криптовалютах, не правда ли? Поделитесь им с друзьями и заходите в наш Telegram-чат.

Математические основы биткойн-блокчейна

Сегодня биткойн продолжает набирать популярность, а индустрия разрабатывать все новые приложения для работы с криптовалютой. Одной из причин такой популярности является строгая математическая база, на которой строится биткойн.

Благодаря этому система функционирует в условиях полного отсутствия доверия между участниками сети, исключая воздействие человеческого фактора.

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

/ Изображение Hernán Piñera CC BY

Фундаментальной частью биткойна являются криптографические алгоритмы. В частности, алгоритм ECDSA — Elliptic Curve Digital Signature Algorithm, который использует эллиптические кривые (elliptic curve) и конечные поля (finite field) для подписи данных, чтобы третья сторона могла подтвердить аутентичность подписи, исключив возможность её подделки. В ECDSA для подписи и верификации используются разные процедуры, состоящие из нескольких арифметических операций.

Эллиптические кривые

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

Для коэффициентов a = 0 и b = 7 (используемых в биткойне), график функции принимает следующий вид:

Эллиптическая кривая

Эллиптические кривые имеют несколько интересных свойств, например, невертикальная линия, пересекающая две некасательные точки на кривой, пересечет третью точку на кривой. Суммой двух точек на кривой P + Q называется точка R, которая является отражением точки -R (построенной путем продолжения прямой (P; Q) до пересечения с кривой) относительно оси X.

Сумма двух точек на кривой (источник)

Если же провести прямую через две точки, имеющие координаты вида P (a, b) и Q (a, -b), то она будет параллельна оси ординат. В этом случае не будет третьей точки пересечения. Чтобы решить эту проблему, вводится так называемая точка на бесконечности (point of infinity), обозначаемая как O. Поэтому, если пересечение отсутствует, уравнение принимает следующий вид P + Q = O.

Если мы хотим сложить точку саму с собой (удвоить её), то в этом случае просто проводится касательная к точке Q. Полученная точка пересечения отражается симметрично относительно оси X.

Удвоение точки (источник)

Эти операции позволяют провести скалярное умножение точки R = k*P, складывая точку P саму с собой k раз. Однако отметим, что для работы с большими числами используются более быстрые методы.

Эллиптическая кривая над конечным полем

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

y² = x³ + ax + b (mod p)

Например, 9 mod 7 = 2. Здесь мы имеем конечное поле от 0 до 6, и все операции по модулю 7, над каким бы числом они ни осуществлялись, дадут результат, попадающий в этот диапазон.

Все названные выше свойства (сложение, умножение, точка в бесконечности) для такой функции остаются в силе, хотя график этой кривой не будет походить на эллиптическую кривую. Эллиптическая кривая биткойна, y² = x³ + 7, определенная на конечном поле по модулю 67, выглядит следующим образом:

Эллиптическая кривая биткойна, определенная на конечном поле по модулю 67 (источник)

Это множество точек, в которых все значения х и у представляют собой целые числа между 0 и 66. Прямые линии, нарисованные на этом графике, теперь будут как бы «оборачиваться» вокруг поля, как только достигнут барьера 67, и продолжатся с другого его конца, сохраняя прежний наклон, но со сдвигом. Например, сложение точек (2, 22) и (6, 25) в этом конкретном случае выглядит так:

Сложение точек (2, 22) и (6, 25) (источник)

Если хотите посмотреть, как выглядят другие эллиптические кривые, то поэкспериментировать можно на этом сайте.

ECDSA в биткойне

В протоколе биткойна зафиксирован набор параметров для эллиптической кривой и её конечного поля, чтобы каждый пользователь использовал строго определенный набор уравнений. Среди зафиксированных параметров выделяют уравнение кривой (equation), значение модуля поля (prime modulo), базовую точку на кривой (base point) и порядок базовой точки (order). О вычислении порядка базовой точки вы можете почитать здесь. Этот параметр подбирается специально и является очень большим простым числом.

В случае биткойна используются следующие значения:

Уравнение эллиптической кривой: y² = x³ + 7

Простой модуль: 2 256 — 2 32 — 2 9 — 2 8 — 2 7 — 2 6 — 2 4 — 1 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F

04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8

Жирным шрифтом выделена координата X в шестнадцатеричной записи. За ней сразу следует координата Y.

Порядок: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141

Этот набор параметров для эллиптической кривой известен как secp256k1 и является частью семейства стандартов SEC (Standards for Efficient Cryptography), предлагаемых для использования в криптографии. В биткойне кривая secp256k1 используется совместно с алгоритмом цифровой подписи ECDSA (elliptic curve digital signature algorithm). В ECDSA секретный ключ — это случайное число между единицей и значением порядка. Открытый ключ формируется на основании секретного: последний умножается на значение базовой точки. Уравнение имеет следующий вид:

Открытый ключ = секретный ключ * G

Это показывает, что максимальное количество секретных ключей (следовательно, биткойн-адресов) — конечно, и равняется порядку. Однако порядок является невероятно большим числом, так что случайно или намеренно подобрать секретный ключ другого пользователя нереально.

Вычисление открытого ключа выполняется с помощью тех же операций удвоения и сложения точек. Это тривиальная задача, которую обычный персональный компьютер или смартфон решает за миллисекунды. А вот обратная задача (получение секретного ключа по публичному) — является проблемой дискретного логарифмирования, которая считается вычислительно сложной (хотя строгого доказательства этому факту нет). Лучшие известные алгоритмы ее решения, вроде ро Полларда, имеют экспоненциальную сложность. Для secp256k1, чтобы решить задачу, нужно порядка 2 128 операций, что потребует времени вычисления на обычном компьютере, сопоставимого со временем существования Вселенной.

Когда пара секретный/публичный ключ получена, её можно использовать для подписи данных. Эти данные могут быть любой длины. Обычно первым шагом выполняется хеширование данных с целью получения уникального значения с числом битов, равным битности порядка кривой (256). После хеширования, алгоритм подписи данных z выглядит следующим образом. Здесь, G — базовая точка, n — порядок, а d — секретный ключ.

  • Выбирается некоторое целое k в пределах от 1 до n-1
  • Рассчитывается точка (х, у) = k * G с использованием скалярного умножения
  • Находится r = х mod n. Если r = 0, то возврат к шагу 1
  • Находится s = (z + r * d) / k mod n. Если s = 0, то возврат к шагу 1
  • Полученная пара (r, s) является нашей подписью
  • Проверка, что и r, и s находятся в диапазоне от 1 до n-1
  • Рассчитывается w = s -1 mod n
  • Рассчитывается u = z * w mod n
  • Рассчитывается v = r * w mod n
  • Рассчитывается точка (x, y) = uG + vQ
  • Если r = x mod n, то подпись верна, иначе — недействительна

uG + vQ = u + vdG = (u + vd)G = (zs -1 + rds -1 )G = (z + rd) s -1 G = kG

Последнее равенство использует определение s на этапе создания подписи.

Безопасность ECDSA связана со сложностью задачи поиска секретного ключа, описанной выше. Помимо этого, безопасность исходной схемы зависит от «случайности» выбора k при создании подписи. Если одно и то же значение k использовать более одного раза, то из подписей можно извлечь секретный ключ, что и произошло с PlayStation 3. Поэтому современные реализации ECDSA, в том числе используемые в большинстве биткойн-кошельков, генерируют k детерминировано на основе секретного ключа и подписываемого сообщения.

Что есть биткоин с точки зрения математики

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

Одним из ключевых понятий криптовалюты биткоин является ключ ECDSA, аббревиатура от Алгоритма Цифровой Подписи с Эллиптическими Кривыми. С его помощью возможно «подписать» данные таким образом, что третьи лица могут легко проверить подлинность подписи, но подделать ее невозможно. Оставить подпись сможет только сам ее автор. В биткоинах «данные», которые подписываются — это ни что иное, как транзакция, которая и передает право собственности на биткойны от одного пользователя другому. Для проверки подписи в алгоритме существуют две процедуры, состоящие из нескольких арифметических операций.

Для того, чтобы подписать данные, алгоритм ECDSA использует эллиптические кривые и конечные поля. Подробнее о них:

Эллиптическая кривая, с точки зрения математики, представляет собой уравнение y² = x³ + ах + b

Для а = 0 и b = 7 (а это именно та версия, которую использует Биткойн), эта кривая выглядит так:

Эллиптические кривые имеют некоторые полезные свойства. Например, не-вертикальная прямая, пересекающая кривую в двух точках, всегда будет пересекать ее и в третьей точке, лежащей на кривой. Другим свойством является то, что если не-вертикальная прямая является касательной к кривой в одной из точек, то она обязательно пересекает кривую еще ровно в одной точке.

Мы можем использовать эти свойства, чтобы определить две операции над точками, составляющими кривую: сложение точек и удвоение.

Для сложения точек, P + Q = R, мы проводим через точки P и Q прямую, которая, по свойствам эллиптических кривых, пересекает кривую в некоторой третьей точке R. Затем мы находим точку на кривой, симметричную точке R относительно оси X. Именно эта точка R и будет считаться суммой P и Q. Это легче всего понять это, глядя на следующую схему:

Это все хорошо, но как бы нам сложить точку саму с собой? Для этого, определяется операция удвоения точки, P + P = R. При удвоении, мы проводим прямую, касательную к данной эллиптической кривой в точке P, которая, согласно свойствам кривой, должна пересекать ее еще в одной точке R‘. Точка R, симметричная Rотносительно оси X, и будет считаться точкой удвоения P. На графике это выглядит следующим образом:

Эти две операции можно использовать, чтобы определить операцию скалярного умножения, R = a P, определяемую как добавление точки Р самой к себе a раз. Например:

R = 7P
R = P + (P + (P + (P + (P + (P + P)))))

Процесс скалярного умножения, как правило, можно упростить, используя комбинацию сложения и удвоения точек. Например:

R = 7P
R = P + 6P
R = P + 2 (3P)
R = P + 2 (Р + 2P)

Здесь операция 7P была разбита на два этапа удвоения точек и два сложения точек — в итоге, вместо 7 операций нужно произвести всего четыре.

Собственно, теперь вы знаете об эллиптических кривых все, что о них стоит знать.

Конечные поля

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

Самый простой способ проиллюстрировать это — расчет операции «остаток от целочисленного деления», или оператор модуло (MOD). Например, 9/7 дает 1 с остатком 2:

Здесь мы имеем конечное поле от 0 до 6, и все операции по модулю 7, над каким бы числом они не осуществлялись, дадут результат попадающий в этот диапазон.

Скрещиваем кривые с полями

ECDSA использует не просто эллиптические кривые, а эллиптические кривые в контексте конечного поля, что значительно меняет их ​​внешний вид. Причем меняет его так, что теперь эти самые кривые даже родная мама не узнает. Допустим, та же самая красивая эллиптическая кривая Биткойна, y² = x³ + 7, которая изображена выше, но только определенная на конечном поле по модулю 67, выглядит как такая вот странная крякозябра:

Однако, заметим в ее оправдание, что хотя она и стала неузнаваемой для непосвященных, лежащие в основе этой «кривой» уравнения или ее особые свойства ничуть не изменились. Просто теперь это множество точек, в которых все х и у значения представляют собой целые между 0 и 66 Отметим также, что «кривая» по-прежнему сохраняет свою горизонтальную симметрию.

Правда, процесс операций над точками: сложения и удвоения — сейчас будет немного отличаться визуально. «Прямые линии», нарисованные на этом графике, теперь будут оборачиваться «вокруг поля», как только они достигнут магического барьера 67, как в древней аркадной игре «Asteroids», и продолжаться с другого его конца, сохраняя прежний наклон, но со сдвигом. Поэтому, сложение точек (2, 22) и (6, 25) в данном дискретном варианте выглядит следующим образом:

«Оборачивающаяся прямая», проходящая через эти две точки, в итоге уперлась в третью точку (47, 39), а симметричная ей «относительно оси X» будет (47, 28). Вот эта-то точка и станет результатом нашей операции.

Применим свою математическую мудрость к криптографии

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

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

Для всех этих параметров, Биткойн использует очень-очень большие (ну просто офигенно невообразимо огромные) числа. Это важно. На самом деле, все практические применения ECDSA используют огромные числа. Ведь безопасность этого алгоритма опирается на то, что эти значения слишком большие чтобы подобрать что-то простым перебором или «брутфорсом».

В случае Биткойна, эти значения таковы (запись чисел дана не в десятичном, а в более компактном шестнадцатеричном виде, привычном программистам):

Уравнение эллиптической кривой: y² = x³ + 7

Простой модуль = 2256 — 232 — 29 — 28 — 27 — 26 — 24 — 1 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F

Базовая точка = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8

Порядок = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141

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

Вооружившись всеми этими базовыми знаниями, в следующей статье мы будем готовы применить эту математику к Биткойну и выяснить, наконец, что же там происходит в недрах нашего биткойн-клиента, когда мы нажимаем на кнопку «Оплатить». Ну, а пока вы ждете второй части, можете слегка освежить свои знания относительно анатомии биткойн-адресов и транзакций. А если вы разработчик, то можно полюбопытствовать, что же там происходит внутри этого таинственного API биткойн-протокола.

Источник https://2bitcoins.ru/chto-takoe-bitkoin-ot-a-do-ya/

Источник https://habr.com/ru/company/bitfury/blog/340378/

Источник https://cryptorussia.ru/news/chto-est-bitkoin-s-tochki-zreniya-matematiki

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: