Закрыть

Что такое блок Биткоина и за что отвечает его размер

В закладки
Аудио
Что такое блок Биткоина и за что отвечает его размер
Содержание

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

Что такое блок в Биткоине?

Блок — это информация о транзакциях в сети Биткоина. Каждый блок можно представить себе в виде страницы в бухгалтерской книге (блокчейне). В случае с криптовалютами страницы нельзя «вырвать» — блоки заносятся в блокчейн навечно. Представьте, что бухгалтер записал все транзакции за последние десять минут в бухгалтерскую книгу, прошил её и поставил печать. Теперь страницу не получится вырвать, ведь все заметят нехватку данных и не захотят пользоваться такой книгой. Забавный момент: сразу после запуска сети Биткоина в 2009 году размер его блоков составлял 36 мегабайтов. 14 июля 2010 года он был уменьшен до одного мегабайта.

Почему размер блока так важен?

Согласно замыслу создателя криптовалюты Сатоши Накамото, «бухгалтерская книга» пополняется новыми страницами раз в 10 минут. Иногда немного быстрее, иногда чуть медленнее, но в среднем это именно 10 минут. Размер каждой страницы (блока) ограничен, то есть количество записываемых туда транзакций тоже ограничено. В итоге у нас есть два лимита: на число транзакций в блоке и периодичность его нахождения.

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

В начале 2013 года блоки Биткоина были заполнены в среднем на 125 килобайт. К маю 2015 года этот показатель уже вырос до 425 килобайт, при этом блоки стабильно заполнялись полностью несколько раз в день. То есть транзакций пользователей было достаточно.

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

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

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

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

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

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

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

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

  1. Hash — хеш (алгоритм SHA-256). Этот hash носит случайный характер, поэтому время его определения легко предсказать. Стоит отметить, что хешированию подлежит только заголовок, а к операциям в криптовалютной цепи это не относится. Количество транзакций не оказывает значительного воздействия на расчёт хеша.
  2. Prev_block — свойство хеша прошлого блока в цепи блокчейн. Наличие такой характеристики повышает надежность сети и усложняет ее подделку. Если внести правки в один блок, придётся переделывать остальные.
  3. Version — версия блочной схемы (сегодня она одна — 1).
  4. Time — uint32_t — свойство, характеризующее период, за который создаётся очередной блок. По замыслу создателя Bitcoin, последний элемент цепи будет добыт в 2106 году.
  5. Mrkl_root — перечень хешей операций. Суть в том, что хеш блока находится в прямой взаимосвязи с операциями в сети. Цель — защита цепи от подделки. Непосредственное вычисление при большом числе операций занимает много времени. Вот почему сначала хешируются операции в цепи, а далее хеши применяются для расчета хешей блока. Необходимость таких действий объясняется следующей разницей — обновление хеша транзакции происходит после добавления к элементу цепи новой операции. Вычисление хеша заголовка происходит чаще — до 3–5 тысяч в секунду.
  6. Bits — главный параметр блока, сокращённый вариант значения хеша. Следующий элемент признается сетью и добавляется к цепи в том случае, если его хеш не превышает параметр bits. От этого параметра зависит сложность добычи нового блока. Обновление числа осуществляется с периодичностью раз в 14 дней. Принцип расчета прост. Сначала вычисляется объем созданных блоков за 14 дней, после чего полученное число сравнивается с эталонным значением. Как отмечалось, на создание блока уходит 10 минут. С ростом блоков сложность возрастает и наоборот. В результате система подстраивается под количество участников и общую мощность подключенного оборудования.
  7. N_tx — число операций в перечне.
  8. Nonce — параметр, который подбирается до момента, пока значение хеша не будет ниже bits. Для того, чтобы новый хеш имел отличия от прошлого, должен различаться хоть один из параметров. Версия неизменна, хеш прошлого блока обновляется с появлением нового элемента цепи, список хешей меняется при включении в него новой транзакции, время обновляется каждую пару секунд, а целевой параметр — раз в 14 дней. Чтобы не ожидать обновления любого из перечисленных свойств, существует параметр nonce.
  9. Size — величина блока (измеряется в байтах).

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

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

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

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

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

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

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

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

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

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

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

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

Общий объем средств на входе операции с криптовалютой идентичен с числом монет на выходе. Раз в 4 года происходит снижение вознаграждения вдвое, что стабилизирует число криптовалюты в обороте. Если вдруг появится мошенник, который подставит блок и присвоит 100 монет, то он не приживется в цепи из-за отторжения честными участниками сети. Вот почему чем больше пользователей, тем надежнее система.

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

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

Hash(хеш): 00000000000008c21dbf4715d5da1a

288061faa21e930dd8df6ae25c8b56d868.


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

c55ffe1937a6ef2bc467d9c524312da2.


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


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


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


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


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

2c108223c14sea908ff99b0ab8fe947.


Nonce: 3723463451.

Сравнение блока с банками

В качестве аналогии можно сравнить обычные банковские транзакции с операциями в сети Биткоин.

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

Блокчейн — обозреватель блоков

Рассмотрим популярный обозреватель блоков — blockchain.com. Сайт имеет русскоязычный интерфейс и понятную структуру. Перейти в обозреватель можно следуя пути: Данные — Проводник, или нажать на окошко поиска. 

В строке поиска необходимо прописать данные, информацию о которых вы хотите узнать:

  1. Адрес Биткоина.
  2. Txid транзакции.
  3. Высота (номер) блока.

Например, вы хотте получить информацию о биткойн-адресе: 1PfGzi59sW7eDtHuRBKaFV7QyuRkdY3pA2. Нужно скопировать его и вставить окно поиска. В соседнем поле выбрать криптовалюту Bitcoin и нажать «Поиск».

Появится страница с полной информацией:

  • Текущий баланс.
  • Число транзакций, Txid и суммы.
  • Адрес отправителя или получателя транзакции.

Информация о транзакции

При переводе криптовалюты с кошельков и криптобирж, при обмене между людьми и в других случаях предоставляется TXID (TxHash). Это и есть идентификатор транзакции, по которому можно отследить был ли совершен перевод, подтверждена или нет операция, узнать адрес отправителя и точную сумму перевода. Это очень важная информация и необходимо знать, как и где посмотреть статус биткоин-транзакции.

Для этого указываем TXID в окне обозревателя:

 

Появится информация: 

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

На примере ниже, транзакция имеет одно подтверждение (нужно как минимум 6):

Информация о блоках

Для просмотра сведений о блоке нужно указать в блокчейн-обозревателе его высоту (номер). Отобразятся следующие данные: 

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

Другие мониторинги сети Bitcoin

  1. localbitcoinschain.com — обозреватель блоков в сети Биткоин от биржи LocalBitcoins. Поддерживаются Segwit и Bech32 адреса.
  2. live.blockcypher.com. Принцип получения данных не отличается от других ресурсов: вводим адрес, идентификатор транзакции, блок и получаем показатели блокчейн-сети. Например:

Обозреватели блокчейн Ethereum и токенов ERC-20

Для получения показателей сети Эфириум и токенов, использующих его платформу, предлагаются ресурсы:

  1. etherscan.io.
  2. ethplorer.io.

Рассмотрим первый вариант. Указываем в строке поиска: адрес, ID транзакции (Thash), блок, название (тикен) токена, Ethereum Name Service (ENS). Например, адрес 0xf3F7236A40Ba62be

795a3A5a6b8589A64870e167:

Можно узнать: баланс, транзакции и их Txhash, высоту блока и т.д. Также доступна нформация о токене, например, BNB (Binance Coin):

Общие вопросы о блоках

Рассмотрим ответы на самые популярные и часто задаваемые вопросы касательно блоков в различных блокчейнах.

Какое максимальное количество блоков?

Максимального количества не существует, блоки просто продолжают добавляться в конец цепочки со средней скоростью:

Монета

Время блока

Bitcoin

10м 52с

Ethereum

13.42с

Bitcoin Cash

9м 46с

Litecoin

2 м 32 с

Tron

3c

BitcoinSV

9м 38с

Dash

2 м 38 с

Zcash

1 м 15 с

Ethereum Classic

13.15c

Что будет, когда все монеты одной криптовалюты будут сгенерированы?

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

Предыдущая статья Следующая статья
Комментарии: 0
Оставить комментарий
Сервис подписки в данный момент находится в завершающей стадии разработки. Регулярная отправка новостных материалов на Ваш email начнется в ближайшее время. Повторная подписка не потребуется.