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

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

Основной задачей, которую необходимо решить для реализации такой системы, является исключение возможности двойного расходования средств. И здесь начинает работать криптография. Создается цепочка хэшей, в которой каждый последующий хэш генерируется с учетом предыдущего, а также информации обо всех проведенных транзакциях. Следовательно, чтобы подделать денежную единицу, необходимо пересчитать всю цепочку. И до тех пор пока суммарная вычислительная мощность компьютеров, принадлежащих «честным» узлам системы, превосходит ресурс потенциального «атакующего», система находится в безопасности. В этом смысле "биткоины" (электронная пиринговая криптовалюта) больше похожи не на привычные нам деньги, а на золото. Подобно золоту, ценность "биткоинов" обусловлена тем, что в природе их существует ограниченное количество, а "добыча" требует затраты ресурсов. Именно процессорное время и представляет собой тот самый материальный ресурс, который обеспечивает "биткоины". Это ключевой факт в понимании принципа действия данной валюты. Многие люди, впервые услышав о Bitcoin, решают, что вычислительные ресурсы добытчиков ВТС расходуются «впустую», что совершенно неверно.

Построение валютной единицы Bitcoin
«Рабочей единицей» Bitcoin является блок. Блок – это текст, который содержит информацию обо всех транзакциях, проведенных с момента генерации предыдущего блока. Заголовок блока – строка из 80 байтов, содержащая следующую информацию:
- Версия (4 байта) – версия протокола, использованная узлом, который сгенерировал данный блок.
- Предыдущий хэш (32 байта) – хэш заголовка предыдущего блока.
- Корень Меркля (32 байта) -- информация о транзакциях хэшируется не напрямую, а по алгоритму с древовидной структурой. Это позволяет нивелировать зависимость времени генерации блока от количества транзакций в нем.
- Временная марка (4 байта) -- выдается через каждые несколько секунд специальным сервером. Служит доказательством того, что блок был сгенерирован в указанное время.
- Биты?? (4 байта) -- цель, записанная в компактном формате. Цель – это 256-разрядное двоичное число. Задача, решаемая при генерации блока – подбор такого числа, при добавлении которого к заголовку хэш заголовка окажется меньше или равен цели.
- Число (4 байта) – подбор числа происходит не в случайном порядке, а подряд, от нуля до 232. Иногда может возникнуть ситуация, когда ни одно из возможных значений числа не подходит. В этом случае к блоку добавляется техническая транзакция, корень Меркля изменяется и перебор повторяется с нуля.
- Узел, которому удалось сгенерировать блок, получает в качестве вознаграждения 50 ВТС. Эта транзакция – первая в каждом блоке, поэтому заголовок хэша у каждого узла будет отличаться. В противном случае «выигрывал» бы всегда узел, обладающий самым быстрым вычислителем.
 

 

...

Это не вся статья. Полная версия доступна только подписчикам журнала. Пожалуйста, авторизуйтесь либо оформите подписку.
Купить номер с этой статьей в PDF