Как работает биткоин?

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

Как устроен биткоин?

Блокчейн — цепочка блоков, из которых собственно состоит биткойн.

Блок — единица записи информации в сети биткойн. Блок состоит из заголовка и списка транзакций.

Подбор bitcoin-блоков

Слово «блок» вы можете увидеть в программе-клиенте. Блок — это набор данных, который включает в себя:

  • хеш предыдущего блока;
  • некоторое количество новых транзакций;
  • «соль» (nonce) — последовательность битов, которую можно свободно менять.

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

Само собой, не каждый блок будет содержать заданное число нулей в начале хеша. А так как изменяемая часть блока только одна — это «соль» — мы будем перебирать все возможные варианты «соли», пока не получим нужный хеш. По правилам сети, на текущий момент за нахождение нового блока клиенту дается 25 биткоинов.

Вот этот перебор и называется «майнингом»генерацией биткоинов.

Сложность — это еще одно условие для нахождения блока. От сложности зависит такое число, меньше которого должен быть хеш. Каждые 2016 блоков сложность меняется. Это нужно для того, чтобы блоки появлялись раз в 10 минут, не чаще и не реже, несмотря на возрастающую или падающую мощность сети. Если мощность сети растет — сложность пересматривается и растет, если падает — падает и сложность.

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

SHA-256 — алгоритм шифрования, используемый сетью биткойн.

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

  1. решением задачи;
  2. фактом эмиссии новых монет;
  3. подтверждением валидности транзакций, прошедших в период с момента нахождения предыдущего блока и до времени нахождения этого блока;
  4. списком всех этих транзакций, с указанием кошельков отправителя и получателя, времени и суммы а также public message.

Теперь мы рассмотрим этот процесс немного глубже. Математически биткойн представляет собой хэш-функцию с большим количеством вариантов ответа, но искомым считается так называемый «красивый» хэш, который характеризуется тем, что начинается с 15 нулей. А это значит, что сеть считает все возможные варианты хэша, и как только находит «правильный» она объявляет что блок решен. В этот момент происходит эмиссия монет, которые начисляются тому майнеру который нашел блок, в блок записываются все транзакции и сеть продолжает считать хэш, ища следующее значение. Это очень упрощенное изложение сути процесса.

Теперь немного остановимся на деталях. Во первых следует знать что алгоритм, по которому происходит хэширование включает в себя некоторые элементы защиты от взлома. Например, хэш каждого блока алгоритмически непосредственно связан с предыдущим блоком. То есть, если условно представить себе хэш функцию в виде x*y*z=f, то х — это будет хэш предыдущего блока. Что это значит? Это значит что каждый последующий блок неразрывно связан с предыдущим, и если какой нибудь нечестный майнер в какой-то момент решит сгенерить невалидный блок, то остальные участники сети не подтвердят его, т.к. в нем не будет использован хэш предыдущего блока. А если он решит изменить и хэш предыдущего блока, то прийдется делать это и для предпредыдущего, и так далее до самого первого блока. Что потребует от него такое количество работы, которое на данный момент практически не под силу одному человеку или даже крупной организации. Это один из главных защитных механизмов биткойна от взлома.

Теперь давайте рассмотрим механизм награды. Когда найден новый блок в самом его начале записывается особая транзакция — «generated». Она свидетельствует о создании новых монет. Изначально награда за блок составляла 50 монет, но согласно алгоритму каждые 200 тысяч блоков она будет уменьшаться в 2 раза, например на данный момент она составляет 25 монет, а когда будет найдено 400 тысяч блоков станет 12,5 и так далее.

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

динамика роста криптовалют

На этом графике вы можете увидеть в какое время какое количество биткойнов будет доступно в мире

Во первых полезно знать что всего биткойнов может быть 21 миллион. Для начала это может показаться неудобным, ведь 21 миллион это слишком мало денег чтобы обеспечивать нормальное функционирование современной экономики. Но это также предусмотрено создателем и у биткойна есть такое качество как масштабируемость, т.е. 1 монету можно разделить не на 100 частей, как это обычно принято с традиционной валютой, а вплоть до 8 знака после запятой. Таким образом за единицу можно принять 0,00000001 БТС что в итоге нам дает 10^14 единиц валюты, или 100 триллионов. На данный момент суммарный ВВП Земли составляет порядка 70-80 триллионов, т.е. теоретически биткойн может заменить все деньги на Земле.

Однако давайте вернемся к графику. Как вы видите, он представляет собой экспоненциальную кривую, которая четко определяет сроки и объемы эмиссии новых монет. Каждый блок находится примерно раз в 10 минут, и этот показатель будет плюс-минус неизменным до того времени как будет добыта последняя монета. А будет она добыта в 2140 году. За счет чего достигается такое четкое следование графику?

Ведь производительная мощность сети растет просто фантастическими темпами. Это также было предусмотрено создателем и в формулу задачи был введен дополнительный параметр, который называется сложность. Сложность отвечает за то, чтобы новые блоки находились по заранее утвержденному графику — раз в 10 минут. Если хэшрейт сети растет и она начинает находить блоки быстрее, то каждые 2016 блоков включается механизм проверки, который оценивает скорость нахождения блоков и мощность сети и если они отклоняются от заданного значения то изменяет сложность, так чтобы вернуть все к желаемым показателям. Таким образом сеть сама регулирует себя, не допуская отклонений от заданного графика эмиссии.

биткоин

Теперь давайте рассмотрим из каких элементов состоит сеть биткойн. Простейший ее узел — это кошелек.

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

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

Следующий важный параметр вашего кошелька это адрес. Адрес представляет собой уникальную буквенно-числовую строку длиной в 34 символа, например вот такую — 1AndaMRzGuKLaF6kjL4BoYX4p3GnoV7Fbo. Очень важно не путать понятие кошелька и адреса — кошелек  один, а адресов у него может быть сколько угодно. Это еще одно из преимуществ биткойна, позволяющее вам дифференцировать свои финансовые потоки. Для того чтобы получить свой адрес вам необходимо запустить свой кошелек и перейти на вкладку «Получение монет» (Receive). Изначально там уже будет один адрес, но если у вас будет необходимость то вы можете создать сколько угодно еще нажав кнопку «Новый адрес». Зачем это нужно? Если вы обычный человек и вам нужен один адрес то вы вполне можете обходиться первым. Но если вы например ведете частную предпринимательскую деятельность, получая одинаковые платежи от разных людей, то вам нужен какой-то инструмент чтобы понимать от кого пришел платеж. Разные адреса — это как раз такой инструмент. Принимая платеж от человека вы каждому даете уникальный адрес и потом всегда сможете проверить от кого поступили деньги.

Также можно отметить что отправляя платеж вы можете добавить к нему публичное сообщение (public message), которое впоследствии будет записано в блок и сохранится навсегда в блокчейне.

Майнеры

Следующим важным узлом сети являются майнеры. Майнеры это собственно люди благодаря которым биткойн существует. Т.к. в сети постоянно проходят транзакции им соответственно всегда нужны подтверждения. Подтверждения это новые блоки, а новые блоки находят майнеры. Так что же такое майнинг и кто такие майнеры? Майнинг – это процесс поиска новых блоков, а майнерами называют:

  1. программное обеспечение, которое собственно и осуществляет управление поиском блоков (например cgminer или bfminer);
  2. аппаратную часть (компьютеры с соответствующими видеокартами или АСИКи);
  3. а также тех людей которые этим занимается.

майнинг

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

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

Мощность (Hashrate) сети Сложность (Difficulty)
2010 0,0000007 Тхэш/с 1
2013 25 Тхэш/с 2 980 000
2014 13 755 Тхэш/с 1 418 000 000

Чтобы вам стали более понятны эти цифры приведу небольшое сравнение. На планете Земля есть рейтинг супер-компьютеров, 500 самых вычислительно продуктивных машин человечества. Так вот, если сложить их вычислительную мощность вместе, они будут в 200 раз менее производельными чем сеть биткойн. Это опять таки к слову о попытке взломать биткойн грубой силой.

Как же получилось что мощность сети настолько выросла за какие-то пару лет? Конечно, это во многом связано с тем, что биткойн в какой-то момент стал финансово выгодным. Когда его цена выросла до нескольких долларов за штуку особенно умные люди задумались как бы оптимизировать процесс их добычи и повысить свою прибыль? Тогда на смену обычным процессорам пришли видеокарты. Оказалось что графические процессоры намного лучше подходят для перебора хэша и это было первой революцией в сфере майнинга. Когда эта информация стала достоянием общественности видеокарты ATI Radeon сметались с полок магазинов подчистую. Но человеческая изобретательность не знает предела, и в какой-то момент инженеры и программисты собравшись вместе придумали АСИК — чудо машину для копания биткойнов. Т.е. АСИК они конечно не придумали, они были известны давно, они придумали как сделать АСИК конкретно для биткойна. Первые разработки начались в 2012 году, но фактически они поступили в продажу и получили распространение в 2013. Результат этого вы можете видеть на графике.

Рост мощности сети биткоин

На этом графике вы можете видеть рост мощности сети биткойн и сложности с момента создания до 2014 года

Информация с сайта: http://bitcoin-evolution.com/bitcoin-inside/

Как работает биткоин ?

А теперь немного детальней о том, что такое хеш и как он работает

Биткоины образуются из успешного решения сложной математической задачи. На этих решениях основывается устойчивость всей сети. Чтобы ее обрушить, хакерам понадобится потратить столько же времени, сколько потратили его в совокупности «майнеры». Для этого понадобятся невероятные вычислительные мощности, потому что даже мощнейший суперкомпьютер мира в 1837 раз слабее, чем все компьютеры сети bitcoin вместе взятые.

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

Хеш

Вот так, например, вычисляется md5-хеш слова «хеш»:

$ echo 'хеш' | md5sum

6962fab449d4a713c8189dba4025d405 -

А вот это — хеш песни «Fly Into The Night» группы «Darkseed»:

$ md5sum 'music/Darkseed/2003 - Astral Adventures/02 - Fly Into The Night.mp3'

aad61cd8736c953c5fe617f3c780cc2f music/Darkseed/2003 - Astral Adventures/02 - Fly Into The Night.mp3

Подбор хеша

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

$ echo 'aaaaaaaaaaaaaaaaaa' | md5sum

34446078bc933d4300dca0057e7193ae -

$ echo 'aaaaaaaaaaaaaaaaab' | md5sum

ced1e1638b956a382166aa1dae4e7dc0 -

$ echo 'aaaaaaaaaaaaaaaabb' | md5sum

82baf37d76cc893286c061eb71084c72 -

$ echo 'aaaaaaaaaaaaaaabbb' | md5sum

459c7a87cde5df2b808c42a316bca959 -

И так пока мы не встретим нужный нам хеш. Очень долго и утомительно. Может занять тысячи лет.

Обратите внимание, что в дальнейшей части статьи мы постарались максимально детально раскрыть суть работы всех системы алгоритма работы биткойн.

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

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

Сервер временных меток

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

Сложные вычисления

Для сервера временных меток в децентрализованной сети используется алгоритм типа Hashcash. Сложные вычисления — это процесс поиска значений, которые в процессе хеширования алгоритмом SHA-256, порождают искомый хэш, начинающийся с нулевых битов. С увеличением числа требуемых нулевых битов экспоненциально растет и время вычислений, результат проверяется вычислением всего одного хэша.

Подтверждение по принципу «один IP-адрес — один голос» легко дискредитируется тем, кто контролирует множество IP адресов, ведь, по сути, проверяемые вычисления это: «один процессор — один голос». Когда наибольшие вычислительные мощности находятся под контролем честных участников, честная логическая цепочка растет быстрее, чем любая цепочка участников-мошенников. Далее будет доказано, что у атакующего шансы догнать честную цепочку экспоненциально падают при подключении новых блоков.

Сеть

Для работы сети предпринимаются следующие шаги:

  1. всем узлам широковещательно посылается новая транзакция;
  2. узел (каждый!) размещает новые транзакции в своем блоке;
  3. узел (каждый!) активизирует сложные вычисления для расчета «своего» блока;
  4. узел нашел решение «своего» блока и широковещательно рассылает этот блок всем остальным узлам;
  5. если все транзакции в блоке правильные (не просроченные), то узел принимает;
  6. подтверждение принятия узлом блока заключается в том, что данный узел начинает работу по генерации следующего блока в хэш-цепочке, учитывая хэш блока принятого как хэш предыдущий.

Для узлов всегда самой корректной считается самая длинная цепочка, и они постоянно работают над ее ростом. Когда два узла широковещательно (и одновременно!) рассылают различные версии последующего блока, то могут принимать любую из версий в различное время.

При этом начинается работа узла именно с более ранним блоком, а иная версия сохраняется на случай, если она потом «вырастет» в более длинную цепочку.

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

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

Стимул

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

Это добавление новых «монет» сродни промывке золотого песка в поисках самородка, только в этом случае тратится время процессора и электроэнергия.

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

Именно стимул заставляет узлы быть «честными». Если атакующий сумеет взять под контроль вычислительную мощность бОльшую, чем все «честные» узлы, то он встанет перед выбором: обманывать и воровать или самому эти новые «монеты» генерировать. И выгоднее играть по правилам и не уничтожать систему вместе со своим состоянием.

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

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

Заголовок блока «тянет» примерно 80 байт (без транзакций). Генерация блоков — каждые 10 минут, то есть: 80байт×6×24×365=4.2MB в год. Закон Мура полагает прирост в 1.2Гб за год, то есть необходимое дисковое пространство — не проблема.

Упрощенная проверка платежей

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

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

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

Комбинирование и разделение суммы

Передавать монеты можно по отдельности, бывает неудобно выполнять отдельную транзакцию для каждого цента. Именно для того, чтобы суммы можно было делить и комбинировать, в транзакции предусмотрено множество входов-выходов. Как правило, имеется или один вход от предыдущей транзакции (большей!), или множество входов скомбинированных малых сумм, и хотя бы два выхода: 1 — для платежа и 1- для возврата сдачи (если она есть).

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

Конфиденциальность

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

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

Данная информация была взята с сайта https://crypto-wallet.ru/bitcoin-algoritm/ и хорошо дополняет нашу статью.

Если у вас останутся вопросы или что-то будет недостаточно осветлено в наших материалах, пожалуйста, оставляйте свои комментарии ниже. Мы обязательно учтем при создании других материалов.
Opt In Image
🚀 ПОДПИШИСЬ И ПОЛУЧАЙ ПЕРВЫМ КРИПТОНОВОСТИ ОТ BTC-SPOT.COM
✉ Следи за всеми новостями в мире криптовалют!
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Понравилась статья? Жми поделиться:
Нет комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.