Как функционирует Биткоин?

12.04.2016

Как функционирует Биткоин?
Люди, которые только узнают о Биткоине, часто задумываются о принципах и особенностях работы криптовалюты. Но из-за неверных предположений многих «специалистов» у новичков формируется неправильное мнение о Bitcoin. Задача статьи расставить все точки над «i» и дать исчерпывающую информацию в отношении столь уникальной криптовалюты.

 

Деньги ли это?

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

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

 

Проблемы майнинга

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

 

Ограниченность ресурса

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

В случае с Биткоин ситуация схожа. Здесь также со временем скорость добычи снижается. При этом общее число монет ограничено и составляет 21 миллион (больше эмитировать невозможно). Время на оформление одного блока — около 10 минут. Первоначальное вознаграждение за добытый блок составляет 50 Биткоин. Каждые четыре года объем премии уменьшается в два раза. Сегодня он составляет 25 Bitcoin.

 

Материальная основа

Слиток золота может быть использован в качестве расчетной единицы один раз, то есть дважды произвести обмен на товар или услугу не получится. Аналогичной является ситуация и для обычных денег, которые есть либо у продавца товара, или же у покупателя. Такая же система заложена и в работе Биткоина. Но здесь эта особенность обеспечена механизмом операций, которые объединены в целые цепочки. В каждой монете содержится информация о том, откуда она взята и кому поступает, что позволяет произвести точную проверку цепи Bitcoin на валидность.

Цепь блоков

Электронная валюта построена таким образом, чтобы информация о транзакциях обязательно где-то хранилась. В случае с Биткоин роль такого хранилища выполняет цепь блоков. Последние имеют формат JSON. Именно здесь и происходит последующая передача средств.

В современном программном обеспечении цепи блоков криптовалюты скачиваются полностью, что обеспечивает децентрализацию системы, то есть наличие всей информации о блоках у каждого из участников сети. При этом информация не поддается шифровке — ее можно с легкостью проследить. Есть даже ресурс, через который можно разведать данные о проведенных сделках и блоках. Название этого сайта — Bitcoin Block Explorer.

Все участники сети, которые занимаются добычей криптовалюты, условно делятся на две категории:

- Первые работают над созданием нового блока;

- Вторые — не работают.

Во второй категории людей втрое больше. Возникает вопрос, а какой смысл в создании блоков? Суть узлов — в хранении истории транзакций, проходивших в момент создания, то есть за десятиминутный период.

Принцип действия построен на следующем алгоритме:

  1. Один участник сети формирует операцию и производит ее рассылку другим майнерам. Те добавляют проведенную операцию к блоку и работают дальше над его созданием.
  2. В определенный момент какому-либо из участников удастся завершить создание блока и «запечатать» его.
  3. Готовый блок направляется в сеть для проверки на валидность.
  4. Если проблемы не обнаружены, то старый блок считается завершенным, а новый уже формируется майнерами и становится элементом общей цепи.

Описанный выше процесс является цикличным.

 

Тонкости блока

Чтобы разобраться в структуре криптовалюты, стоит понять особенности строения блока. Последний состоит из заголовка и перечня операций. В заголовке есть следующие составляющие:

  1. Hash — хэш заголовка или SHA-256. Особенности этого хэша — определенная случайность и предсказуемость времени расчета. Стоит отметить, что хэшированию подвергается исключительно заголовок, а транзакции в расчет не берутся. Следовательно, объем проводимых операций с криптовалютой почти не сказывается на сроках расчета хэша.
  2. Ver — показатель, который указывает на версию схемы блока. Сегодня этот параметр для всех идентичен и равен «единице».
  3. Prev_block. Здесь по названию можно понять, что речь идет о блоке, который шел предыдущим в цепи. Это качество обеспечивает безопасность сети и невозможность подделки Биткоина. Поменять один из блоков в цепи невозможно, ведь хэши прошлого и будущего блока зависимы друг от друга. Если поменять один блок, то будет изменяться и вся цепочка в целом.
  4. Merkle root — перечень проведенных операций в сети. Суть в том, что хэш блока должен находиться в зависимости от операций с криптовалютой. Это позволяет исключить подделку Биткоин. При этом вычисление напрямую займет много времени из-за большого числа операций. Вот почему сначала происходит хэширование самих операций, а уже потому эти хэши применяются для расчета хэша блока.

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

5.Time — uint32_t. По этому параметру можно судить о времени формирования блока. На сегодня крайним является 2016 год.

  1. Bits — ключевой параметр, представляющий собой одну из форм целевого показателя хэша. О валидности сгенерированного блока можно говорить, когда параметр его хэша меньше целевого значения. В свою очередь, по упомянутому показателю судят о сложности формирования блока криптовалюты. Чем ниже целевой параметр, тем ниже вероятность подбора необходимого хэша в период одной итерации. Это качество можно обновлять раз в 14 дней.

Процесс происходит по следующему алгоритму:

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

- Производится сравнение этого числа с эталонным параметром.

- При наличии большого числа блоков сложность растет и наоборот.

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

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

Рассмотреть это проще на примере. Хэш уже завершенного блока будет обновлен после генерации нового блока. В свою очередь, обновление Merkle root произойдет в случае прибавления новой операции (на это уходит несколько секунд). Обновление Merkle root для Bits происходит реже — раз в 14 дней. Чтобы не ждать, пока полностью завершиться процесс, и был создан nonce.

  1. Size — величина блока, байт.
  2. N_tx — общее число операций в перечне.

 

Транзакции

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

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

В практической сфере это реализуется, благодаря ряду свойств:

  1. Hash — хэшу всей транзакции. Хэширование каждой операции происходит по два раза - при расчете хэша операции и при расчете хэша блока. В процессе генерации хэш вновь образованного блока ссылается на хэш блока прошлого. В свою очередь, новая операция ссылается на хэш уже проведенной транзакции. Если в случае корректировки операции «деформации» хэша не произойдет, то изменятся остальные хэши, а вся цепь будет отвергнута.
  2. Ver. Как уже упоминалось, это версия схемы операции, которая равна «единице».
  3. Vin_sz - число уже прошедших операций, из которых средства переведены на другие адреса. Их может быть от одной и больше.
  4. Vout_sz — общее число адресов, на которые осуществляется перевод средств (от одного и больше).
  5. Size — объем операции, выражается в байтах.
  6. Lock_time — параметр, который равен нулю в случае неиспользования. Суть в том, чтобы создавать отсрочку проводимых операций и их добавление не в текущий, а в последующий блок. По этому свойству можно понять, сколько блоков пропустит операция перед установкой в новый блок. При этом появляется возможность внести корректировки в операцию и переподписать ее.
  7. In — свойство, которое содержит в себе перечень источников проведенных операций. В роли входов применяются выходы прошлых сделок — prev_out. При этом для каждого из выходов характерны свои свойства:

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

- Hash — хэш прошлой операции.

- ScriptSig. Здесь сторона-отправитель обязуется указать, что в транзакции принимают участие личные средства, а не какие-либо другие. В качестве доказательства указывается публичный ключ получателя прошлой операции. Также добавляется подпись операции ECDSA, сделанная с помощью лично ключа. Благодаря этому удается доказать, что в транзакции участвуют личные, а не чужие деньги.

Есть еще один список Out, который идет после перечня In. К свойствам выхода стоит отнести:

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

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

Суммарный объем средств на входе операции должны быть равен объему средств на выходе. Но если это так, то откуда же берутся новые Биткоины? Принцип прост:

- Вне зависимости от блока его первая операция в перечне всегда имеет один вход со свойством coinbase.

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

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

 

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


Назад