Что такое один блок биткоина

Биткоин за 5 минут: Блок

Базовой составляющей блокчейна является блок — единичная порция связанных в цепочку данных (информации).

Как мы уже знаем, блокчейн Биткоина — это некий бухгалтерский реестр или книга ( ledger), в которой записаны абсолютно все транзакции, совершенные с монетами биткоина.

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

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

Таким образом, все блоки, записанные в блокчейн, изменить уже невозможно! Вообще, любое редактирование записанной в блокчейн информации (транзакций) запрещено. Можно только дописывать новые блоки.

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

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

Но, вернемся к блокам блокчейна Биткоина.

Каждый блок состоит из заголовка ( Head), в котором хранится служебная информация, и полезной информации ( Payload) — собственно записи транзакций.

В заголовке блока содержится следующая информация:

– версия блока;
– дата и время создания блока;
– хэш-код заголовка блока;
– хэш-код предыдущего блока;
– хэш-код всех транзакций в блоке;
– специальные параметры nonce и bits, которые записываются при майнинге (подробнее об этом я расскажу с статье «Биткоин за 5 минут: Майнинг»).

Для понимания нам важны хэши в заголовке.

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

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

Работает это так:

  1. Сначала считаются хэши всех транзакций в блоке.
  2. Потом считаются хэши от суммы хэшей пар транзакций.
  3. Далее считаются хэши от суммы получившихся пар хэшей и далее по такой же схеме, пока не получится один единственный хэш-код — он и будет хэшем транзакций в блоке.

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

Именно заголовки позволяют отслеживать целостность содержимого самих блоков.

Теперь перейдем к собственно содержимому ( Payload) блока…

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

В действительности транзакция, записанная в блок блокчейна, сложнее, поскольку протокол Биткоина оперирует такими понятиями, как Входы (Inputs или In) и Выходы (Outputs или Out).

Входы (In) — это транзакции, пополняющие биткоин-адрес, а Выходы (Out) — это суммы, которые переводятся на другие биткоин-адреса.

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

Собственно структура записи транзакций в блокчейне Биткоина содержит:

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

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

Примечание: На самом деле, баланс определяется путем подсчета всех непотраченных Выходов (т.н. UTXO — unspent transaction output) этого адреса.

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

Читайте также:  Видеокарта 1гб для майнинга

Например, если имеется входящая транзакция (Вход) на 1 биткоин (BTC), а нужно перевести куда-то 0,8 BTC, то создается транзакция с одним Входом и двумя Выходами: на 0,8 BTC — собственно перевод и на 0,2 BTC — возврат на биткоин-адрес отправителя.

Еще важный момент — это т.н. комиссия за транзакцию ( transaction fee), которую получают майнеры — люди, которые записывают новые блоки транзакций в блокчейн.

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

Как происходит запись нового блока в блокчейн, я опишу в статье «Биткоин за 5 минут: Майнинг».

Подписывайтесь и читайте!

Ранее по теме «Биткоин за 5 минут»:

Источник

Что такое один блок биткоина

Понравилась статья? Поделись:

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

Содержание

Строение блока [ править ]

Поле Описание Размер
Magic no. Значение всегда равно 0xD9B4BEF9 4 байта
Размер блока (blocksize) Число последующих байтов, оставшихся до конца блока 4 байта
Заголовок блока (blockheader) Состоит из 6-ти компонентов 80 байтов
Счётчик транзакций (transaction counter) Положительное целое число VI = VarInt 1-9 байтов
Транзакции (transactions) Список транзакций Множество транзакций

Что такое блок? [ править ]

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

Так как за нахождение блока выдается награда в 12.5 BTC, блок так же содержит Bitcoin-адрес, на который отправлена награда. Запись об этой транзакции называется – generation transaction, т.е. транзакция создания Bitcoin, в списке транзакций блока она всегда находится на 1м месте. Bitcoin транзакции транслируются на всю сеть отправителем – узлы собирают информацию о них и, руководствуясь определенными условиями, включают их в найденный блок.

Сложность [ править ]

Сложность задачи регулируется сетью Bitcoin таким образом, чтобы, в среднем, находилось 6 блоков в час (1 блок в 10 минут). Каждые 2016 блоков (примерно каждые 2 недели) в сети меняется сложность – каждый Bitcoin клиент сравнивает, насколько быстрее (медленнее) находились блоки по сравнению со стандартными значениями и, на основании этих данных, происходит регуляция сложности в большую (меньшую) сторону.

Форк [ править ]

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

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

Источник

Блок Биткоина — что это такое и как он устроен?

  1. Как формируется блок Bitcoin
  2. Структура блока Биткоина — заголовок
  3. Структура блока Биткоина — транзакции
  4. Пример блока Биткоина
  5. Характеристики блока Биткоин
  6. Премия за блок
Читайте также:  Что лучше майнить eth или etc

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

Как формируется блок Bitcoin?

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

Для попадания блока в blockchain требуется найти параметр хеша заголовка, показатель которого ниже заданного предела. Цель майнера — подобрать верные входные данные путём перебора вариантов. Для решения задачи применяется мощное оборудование — видеокарты, ASIC-чипы.

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

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

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

Структура блока Биткоина — заголовок

Как отмечалось, блок состоит из заголовка и перечня операций. Свойства заголовка:

    Hash — хеш (алгоритм SHA-256). Этот hash носит случайный характер, поэтому время его определения легко предсказать. Стоит отметить, что хешированию подлежит только заголовок, а к операциям в криптовалютной цепи это не относится. Количество транзакций не оказывает значительного воздействия на расчёт хеша.

Prev_block — свойство хеша прошлого блока в цепи блокчейн. Наличие такой характеристики повышает надёжность сети и усложняет ее подделку. Если внести правки в один блок, придётся переделывать остальные.

Version — версия блочной схемы (сегодня она одна — 1).

Time — uint32_t — свойство, характеризующее период, за который создаётся очередной блок. По замыслу создателя Bitcoin, последний элемент цепи будет добыт в 2106 году.

Mrkl_root — перечень хешей операций. Суть в том, что хеш блока находится в прямой взаимосвязи с операциями в сети. Цель — защита цепи от подделки. Непосредственное вычисление при большом числе операций занимает много времени. Вот почему сначала хешируются операции в цепи, а далее хеши применяются для расчета хешей блока. Необходимость таких действий объясняется следующей разницей — обновление хеша транзакции происходит после добавления к элементу цепи новой операции. Вычисление хеша заголовка происходит чаще — до 3–5 тысяч в секунду.

Bits — главный параметр блока, сокращённый вариант значения хеша. Следующий элемент признаётся сетью и добавляется к цепи в том случае, если его хеш не превышает параметр bits. От этого параметра зависит сложность добычи нового блока. Обновление числа осуществляется с периодичность раз в 14 дней.
Принцип расчёта прост. Сначала вычисляется объём созданных блоков за 14 дней, после чего полученное число сравнивается с эталонным значением. Как отмечалось, на создание блока уходит 10 минут. С ростом блоков сложность возрастает и наоборот. В результате система подстраивается под количество участников и общую мощность подключенного оборудования.

N_tx — число операций в перечне.

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

Читайте также:  Какие видеокарты могут майнить cfx

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

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

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

Список транзакций в блоке реализуется с помощью таких свойств:

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

Vout_sz — число адресов, куда переводятся средства (может колебаться от одного и больше).

Vin_sz — число прошлых операций, в которых средства перечисляются новым получателям (от 1 и больше).

Ver — версия (пока неизменна — 1).

Size — объём операции (единица измерения — Байты). Формат — JSON.

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

In — свойство, в состав которого входит перечень входов транзакции. Здесь применяются выходы прошлых операций, о которых упоминалось ранее (prev_out). Все выходы имеют индивидуальные свойства, а именно — Hash (хеш прошлой операции), n (порядковый номер операции) и scriptSig. Отправитель обязан доказать, что переводит личные средства. Это происходит путём указания общедоступного ключа прошлой операции, а также включения частного ключа (подписи ECDSA). Этого достаточно, чтобы доказать акт применения собственных денег.

  • Out — перечень выходов. Как и ранее, здесь имеются определенные свойства — Value и ScriptPubKey. Первое включает в себя объём средств, направляемых адресату. Информация берётся из прошлых операций, поэтому общее число не может быть больше итоговой суммы уже выполненных транзакций. Свойство Valuo прописывается с наномонетах (это делается, чтобы исключить появление дробей). Второе свойство представляет собой определенный сценарий. Он состоит из хеша общедоступного ключа и оператора языка. Суть — изучение транзакции и подтверждение её валидности.
  • Общий объём средств на входе операции с криптовалютой идентичен с числом монет на выходе. Раз в 4 года происходит снижение вознаграждения вдвое, что стабилизирует число криптовалюты в обороте. Если вдруг появится мошенник, который подставит блок и присвоит 100 монет, то новый не приживётся в цепи из-за отторжения честными участниками сети. Вот почему чем больше пользователей, тем надёжнее система.

    Пример блока Биткоина

    С учетом приведённой выше информации можно привести пример блока Биткоина:

    Previous block (прошлый блок): 000000000000056a7dcf273f627c2a17c55ffe1937a6ef2bc467d9c524312da2.

    Difficulty (сложность): 1 690 895.803053. Bits — 1a09ec04.

    Transactions (транзакции): 185.

    Total BTC (общее число Биткоинов): 4251.63216934.

    Size (размер): 58.914 kilobytes.

    Merkle root (список хешей): 98c5d975bf556f0344770eee7ab31688a2c108223c14sea908ff99b0ab8fe947.

    Характеристики блока Биткоин

    Главные характеристики блока Bitcoin:

      Добыча блока происходит с периодичностью раз в 10 минут.

    Каждый блок способен хранить не более одного мегабайта информации. Этот лимит прописан в коде криптовалюты, но пропускная способность остаётся высокой. После оптимизации планируется увеличить объем данных до 2 Мб. Для примера Bitcoin Cash имеет объём, равный 8 Мб.

    В один блок, имеющий размер 1 мегабайт вмещается до 3–5 тысяч операций, в которых участвуют два кошелька с ограниченным числом выходов и входов. На текущий момент пропускная способность сети — семь операций за 1 секунду. С ростом числа пользователей дефицит этого показателя всё более заметен, что и привело к появлению Bitcoin Cash.

  • Число операций, которые входят в один блок, снижается по нескольким причинам — проведение транзакции с большим числом адресов (актуально для пулов), а также применение компаниями цепи clockchain для отправки информации или содержания реестра.
  • Источник

    Оцените статью