Опубликован: 01.02.2018 | Доступ: свободный | Студентов: 1352 / 260 | Длительность: 17:50:00
Лекция 3:

Транзакции Биткоина

< Лекция 2 || Лекция 3: 123456 || Лекция 4 >

Блоки Биткоина

В большинстве примеров, которые были рассмотрены до настоящего момента, были использованы единичные транзакции. Рассмотрим, зачем транзакции помещаются в блоки.

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

Рассмотрим структуру данных блокчейна ( рис. 3.20).

Структура блока Биткоина

Рис. 3.20. Структура блока Биткоина

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

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

Рассмотрим, как это выглядит на низком уровне ( рис. 3.21).

Реальная структура блока Биткоин

Рис. 3.21. Реальная структура блока Биткоин

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

Самая важная часть, конечно, заголовки ( рис. 3.22).

Заголовок блока Биткоин

Рис. 3.22. Заголовок блока Биткоин

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

Транзакция монетной базы

Рис. 3.23. Транзакция монетной базы

В дереве Меркла существует особая транзакциятранзакция монетной базы. Именно она создает новые биткоины ( рис. 3.22). В предыдущей лекции мы говорили о вознаграждении за создание блока, которое на текущий момент равно 25 биткоинам (block reward). Это горизонтальная награда майнинга, которая задается системой и держится в течение 4 лет. В действительности, она всегда будет чуть больше 25 Биткоинов, поскольку она включает в себя также пошлины за сделки, когда-либо собранные с каждой сделки, включенной в блок (transaction fees). Указатель на транзакцию вывода в сделке с монетной базой всегда будет нулевым.. Это как бы говорит, что поскольку здесь создаются новые Биткоины, то этому процессу ничего не предшествует. Не существует предыдущей транзакции, которая была совершена, чтобы создать эти монеты. У сделки с монетной базой есть интересный параметр, в который можно списать всё, что угодно. В самом первом блоке, когда ли добытом в Биткоине, в этом параметре содержалась цитата из газеты. Эта цитата была из "The Times of London", и в ней рассказывалась история про канцлера, спасавшего банки, что было с одной стороны политическим комментарием, объяснявшем мотивацию появления Биткоина, и с другой стороны, данью уважения Биткоину, так как его самый первый блок был добыт вскоре после выхода выпуска этой газеты.

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

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

< Лекция 2 || Лекция 3: 123456 || Лекция 4 >