Что такое высота блока в майнинге
Майнинг и как он работает: матчасть
Привет, %username%!
Я расскажу и покажу как работает основа генерации денег в криптовалютах — майнинг. Как создается первый блок, новые блоки и как появляются деньги из ниоткуда.
Чтобы было проще понять, мы напишем свой импровизированный майнер для импровизированной криптовалюты HabraCoin.
Сначала упрощенный ликбез, куда без него.
Кошельки
Каждый кошелек — это случайно сгенерированная пара ключей. Собственно, адрес кошелька — это хэш от публичного ключа. Так его можно однозначно идентифицировать.
Транзакция
Это запись о том, с какого кошелька на какой какая сумма переводятся. А так же, время и дата операции. Эта запись (её хэш) подписывается закрытым ключом отправителя и рассылается всем в округе в ожидании подтверждения.
Подтверждение
Чтобы о транзакции узнали и все себе её записали, необходимо её подтверждение, которое получается в результате создания нового блока.
Это служебные данные + список транзакций + номер кошелька майнящего + волшебное число.
Цепочка блоков
Последовательность, в которой каждый следующий блок включает в себя Id предыдущего.
Начало
Итак, есть некоторое количество народа, можно один. Назовём его Хаброша. Он решает запустить свою систему криптовалюты HabraCoin.
Поскольку выделенных серверов у этой валюты нет, то все её участники равноправны и должны как-то договариваться о валидности транзакций. То есть, нужен механизм, который обеспечит:
Для этого он формирует блок из существующих на данный момент неподтвержденных транзакций, номера предыдущего блока, номера своего кошелька и т.д. Для самого первого блока транзакций у нас нет, номера предыдущего блока у нас нет, ничего толком нет. Только адрес кошелька Хаброши да дата со временем.
Так же, в алгоритме HabraCoin указаны следующие вещи.
Ограничение скорости
Как мы видим, сам факт создания блока говорит о том, что его создатель получает за это вознаграждение. И чтобы это вообще имело смысл, скорость и сложность создания блоков следует ограничить. Иначе сами понимаете, тонны блоков из ничего и никакого толку.
Как этого добиться?
Если помните, все блоки состоят из нескольких полей. Мы берем эти поля, конкатенируем, получаем из них массив байт. Это массив байт отдаем хэш функции, получаем результат и смотрим: меньше то, что получилось с учетом текущей сложности, или нет?
Если нет, то изменяем этот массив байт до тех пор, пока не получим нужное значение. А именно:
В каждом блоке есть поле, называемое nonce. Это число размером несколько байт, которое нужно увеличивать на единицу, дописывать к блоку и опять считать от него хэш. Поскольку хорошие хэш функции выдают более-менее равновероятностные значения, то мы не знаем заранее, сколько раз придется повторять процесс. Может 1-2 раза, а может миллиарды.
Тот, кому удалось получить хэш, удовлетворяющий условиям сложности, рассылает всем блок с включенными в него транзакциями. На случай, если несколько человек сделали это одновременно, вводится условие, что несколько цепочек блоков существовать вместе не могут, а побеждает самая длинная. Таким образом, если у нас есть две цепочки:
то победит та, для которой 4й блок найдут раньше времени. А меньшая цепочка выкидывается и её транзакции снова попадают в очередь на подтверждение.
Комиссия
Все у себя в кошельках видели поле «комиссия» при совершении транзакции. Эта комиссия идет людям, занимающимся генерацией блоков. То есть, они в первую очередь будут выбирать из всех транзакций, ожидающих подтверждения, те, которые содержат в себе комиссию. После формирования блока считается, что вся комиссия, содержащаяся в транзакциях, отходит к его (блока) создателю.
То есть, когда кончится вознаграждение за генерацию блока (если это прописано в алгоритме валюты), то майнерам останется лишь комиссия, а халявные транзакции могут быть никогда не обработаны.
Давайте смоделируем ситуацию и поможем Хаброше скрафтить какой нибудь блок.
Под спойлером программа (в виде Junit теста), которая ради приличия генерирует 2 случайных пары ключей, формирует какое то подобие транзакции (даже подписывает её, все по честному!), а потом ищет такую к ней добавку, чтобы первые 2 байта хэша были нулевыми. Типа сложность такая. Работает пару минут, а потом действительно выдает хэш, который можно быстро проверить, сконкатенировав байты транзакции и счетчика.
Пример получившегося блока:
1824B9ADF09908222CF65069FDE226D32F165B3CF71B7AA0039FDFEF75EAA61610909EBFFBAC023480FC87FCF640C4A
009B82C4A6D25A0F4B8A732AE54EF733E792681137BA378577DFDC2732D192DAF323966EAD4ADC9635D7A12EDD50E34
9F660622D186AF3C03BF7D265F2AA7EB125056F4BF45BE519E8B22B845B28065110000006400000142E5D667CB01CEE
EDD0AC15EC4C491819A99030BD5FEF7CD2B469F2B90BA13D7981EDCD0708353D13390B8564F496C44FAC2777B0AF79D
C94CBF36D0CC0F047E807889F34C4DC5FEB724699C257391F84F3DDD70B84F841D115F4EFEAF4E58779042F35257E5C
035046037DE740718D199A8F06AD7A58E37CCCD4CC5E95295DCC2C5F3C70847BD59FA57BCC5FF4B208F93948FCFD763
EC1E5C85B61C43EB64B77A9F53B28785D7DE2335333003260A0839D53927976751A8D8967B2BB325909D86E82BC4125
2A28ECF6F0E7476BB99B29585EB0E75410000
Вот мы и заработали пару хабракоинов для Хаброши. Статья конечно поверхностная, так что готов к вашим вопросам.
Высота блока
Что такое высота блока?
Высота блока конкретного блока определяется как количество блоков, предшествующих ему в цепочке блоков. Блокчейн – это зашифрованная база данных, которая последовательно записывает реестр транзакций в структуры данных, известные как блоки. Блокчейны используются в качестве базовой технологии для таких криптовалют, как биткойн.
Высота блока может указывать на местоположение транзакции, которая была завершена в прошлом месте в цепочке блоков, или относиться к текущей длине или размеру цепочки блоков. Диаграмма высоты блока показывает, насколько постоянно новые блоки обнаруживаются в цепочке блоков с течением времени при различных уровнях сложности майнинга.
По состоянию на апрель 2021 года высота блока для цепочки блоков Биткойн превышает 677 350 блоков, при этом ежедневно добавляется примерно 144 новых блока.
Ключевые выводы
Понимание высоты блока
Блокчейн содержит серию последовательных блоков, отсюда и название блокчейн. Эти блоки, по сути, представляют собой блоки данных, которые используются для хранения транзакционной информации сети. Каждый блок содержит защищенную и общедоступную запись транзакций, которые произошли или были проверены в интервале между предыдущим блоком и рассматриваемым блоком.
Самый первый блок в блокчейне называется генезис-блоком. Он имеет нулевую высоту блока, так как в цепочке блоков ему не предшествуют блоки. Общая высота цепочки блоков принимается равной высоте самого последнего блока или самого высокого блока в цепочке.
Краткий обзор
Высота блока также иногда рассчитывается как текущая длина цепочки блоков минус один.
Особые соображения: майнинг биткойнов
Чтобы понять высоту блока, полезно понять процесс добычи криптовалюты и то, как новые блоки добавляются в цепочку блоков. Давайте посмотрим на биткойн. Здесь с каждым блоком связана математическая задача.
Майнеры постоянно обрабатывают и записывают транзакции в рамках своего рода соревнований. Они соревнуются, чтобы «завершить текущий блок», чтобы выиграть биткойны. Когда майнер-победитель может решить эту проблему, ответ передается другим узлам майнинга и подтверждается. Каждый раз, когда майнер решает проблему, ему передаются новые 12,5 BTC (символ валюты Биткойн), которые поступают в обращение.
Первая запись в этом следующем блоке – это транзакция, которая награждает победившего майнера (который завершил предыдущий блок) вновь отчеканенными BTC. Сложность математической задачи регулирует скорость создания новых биткойнов, поскольку новые блоки не могут быть отправлены в сеть без ответа. Учитывая тот факт, что в среднем на решение проблемы уходит около 10 минут, каждые 10 минут чеканится около 12,5 новых биткойнов.
От А до Я: Словарь блокчейна
Слова «биткоин», «майнинг», «эфир» слышны со всех сторон. Однако на этом язык вселенной криптовалют не заканчивается. Если вы хотите разобраться в технологии, чтобы получить возможность пользоваться инструментом по полной, эта маленькая шпаргалка вам пригодится.
Аббревиатура от англ. Application Specific Integrated Circuit, «интегральная схема специального назначения». В отличие от графических процессоров, ASIC специально созданы для майнинга и позволяют значительно снизить энергопотребление.
Децентрализованное приложение (Dapp) представляет собой программу с открытым исходным кодом, которая работает автономно и хранит свои данные в цепочке блоков.
Ethereum
Основанная на блокчейне децентрализованная платформа для приложений и умных контрактов. Нацелена на решение проблем, связанных с цензурой, мошенничеством и вмешательством третьей стороны.
Виртуальная машина Ethereum (англ. Ethereum Virtual Machine) — полная по Тьюрингу виртуальная машина, которая позволяет выполнять любые сценарии на языке EVM Byte Code. Каждый узел сети работает под управлением EVM, чтобы сохранить единообразие в цепочке блоков транзакций.
Peer to Peer
Peer to Peer (Р2Р) — одноранговая децентрализованная сеть, построенная на равноправии участников. Они взаимодействуют друг с другом напрямую с помощью единого посредника.
Proof of Stake
Алгоритм распределения, при котором размер вознаграждения зависит от числа имеющихся монет. Другими словами, чем больше монет в кошельке, тем выше вознаграждение.
Proof of Work
Алгоритм распределения, который предусматривает активную роль участников в майнинге данных. Чем больше «работает» участник и чем выше его вычислительная мощность, тем крупнее размер вознаграждения.
Scrypt
Тип криптографического алгоритма, разработанный для валюты лайткоин. По сравнению с SHA-256 вычисления происходят быстрее и требуют меньшей вычислительной мощности.
SHA-256
Криптографический алгоритм, который применяется в криптовалютах вроде биткоина. SHA-256 требует значительной мощности компьютеров, а процесс вычислений занимает долгое время, заставляя майнеров объединяться в группы для совместной работы.
Solidity
Язык программирования на платформе Ethereum для разработки умных контрактов.
Testnet
Тестовая цепочка блоков транзакций. Используется разработчиками, чтобы не тратить деньги в основной цепочке.
Адрес
Адреса используются для отправки и получения криптовалюты. Обычно адрес представляет собой строку буквенно-цифровых символов.
Атака 51%
Когда более половины вычислительной мощности криптовалютной сети контролирует некая организация или группа лиц, становится возможным проведение конфликтующих транзакций или злонамеренное нанесение вреда.
Биткоин
Первая децентрализованная криптовалюта с открытым исходным кодом. Работает в глобальной одноранговой сети без посредников и центрального эмитента.
Пакет данных в цепочке блоков транзакций. Содержит в себе информацию о проведенных операциях с криптовалютой.
Блок-проводник
Онлайн-инструмент, позволяющий просматривать транзакции в блокчейне. Проводник предоставляет полезную информацию, такую как скорость хеширования и изменение числа транзакций.
Блок транзакций
Информация о произошедших транзакциях собирается в блог для последующего хеширования и добавления в блокчейн.
Блокчейн
Блокчейн (цепочка блоков транзакций) — публичная цепочка из формируемых блоков транзакций. Запись данных в блокчейн осуществляется добавлением новых блоков. Цепочка хранит сведения обо всех транзакциях, когда-либо имевших место, начиная с первичного блока.
Ветвление
Ситуация, когда несколько новых блоков считают предыдущим один и тот же блок. Другими словами, цепочка блоков разветвляется, и в различных частях сети существуют ее параллельные версии.
Вознаграждение блока
Сумма, которую получит майнер, успешно вычисливший хеш во время добычи. Проверка транзакций в блокчейне генерирует в процессе новые монеты, и майнер получает их долю.
Высота блока
Число элементов в цепочке между данным и первичным блоком.
Гибридная система PoS/PoW
Позволяет применять Proof of Stake и Proof of Work в качестве алгоритмов распределения в сети. Этот метод помогает достичь баланса между майнерами и держателями монет, создавая систему управления, которая учитывает интересы как инсайдеров (держателей), так и аутсайдеров (майнеров).
Децентрализованную автономную организацию можно представить как корпорацию, которая работает без участия человека на основе строгого набора деловых правил.
Двойное расходование
Ситуация, когда некая денежная сумма расходуется повторно.
Жесткое ветвление
Тип ветвления, в результате которого все недействительные транзакции становятся действительными, и наоборот. Этот тип ветвления требует, чтобы все узлы и пользователи обновили программное обеспечение до последней версии.
Комиссия
Все транзакции с криптовалютами включают небольшую комиссию. Комиссия выплачивается майнеру, когда тот успешно обрабатывает блок.
Консенсус
Консенсус достигается, когда все участники сети подтверждают достоверность транзакции, гарантируя идентичность информации на всех компьютерах.
Кошелек
Файл с секретными ключами. Обычно содержит программу для просмотра и ввода транзакций в определенной цепочке блоков, для которой предназначен кошелек.
Криптовалюта
Также известна как токен. Представляет собой цифровой актив.
Криптографическая хеш-функция
Выдает уникальную хеш-сумму транзакции переменного размера. Примером криптографической функции является алгоритм SHA-256.
Майнинг
Деятельность по поддержанию распределенной среды и проверке транзакций. За свои услуги майнеры получают вознаграждение, обычно в форме монет. В настоящее время майнинг может быть прибыльным бизнесом при правильной реализации. Майнинг может обеспечить стабильный дополнительный доход, если выбрать наиболее эффективное и подходящее оборудование и верную цель.
Мультиподпись
Мультиподпись обеспечивает дополнительный уровень безопасности, требуя для авторизации транзакции более одного ключа.
Мягкое ветвление
Отличается от жесткого ветвления тем, что только действительные транзакции признаются недействительными. Поскольку старые узлы признают новые блоки действительными, мягкое ветвление, по существу, обратно совместимо. Для этого типа ветвления необходимо, чтобы его одобрило большинство майнеров, в то время как жесткое ветвление требует, чтобы новую версию согласовали абсолютно все узлы.
Оракул
Служит мостом между реальным миром и блокчейном, поставляя данные для умных контрактов.
Первичный блок
Первые несколько блоков цепочки.
Подтверждение
Обработка транзакции сетью и добавление ее в блокчейн.
Полная по Тьюрингу
Выражение «полная по Тьюрину» означает способность ЭВМ реализовать любую вычислимую функцию. Примером полноты по Тьюрингу является EVM.
Публичный адрес
Криптографический хеш открытого ключа. В отличие от частных (секретных) ключей, они могут быть свободно опубликованы в сети.
Распределенная база
Распределенная база хранит информацию с сети децентрализованных узлов. Она необязательно должна быть связана с цифровой валютой; может быть закрытой и с доступом по разрешению.
Распределенная сеть
Тип сети, в которой вычислительная мощность и данные распределены по множеству узлов, а не собраны в едином центре.
Секретный ключ
Строка символов, открывающая доступ к токенам в определенном кошельке. Секретный ключ действует как пароль и известен только владельцу адреса.
Скорость хеширования
Производительность оборудования для майнинга, измеряемая в количестве хеширований в секунду.
Сложность
Показывает, насколько легко может быть обработан блок данных о транзакциях.
Копия базы данных, которой управляет участник сети.
Умный контракт
Набор определенных правил, внесенных в блокчейн при помощи языка программирования. Его исполнение гарантируется участниками сети.
Хеширование
Применение хеш-функции к выходным данным. Используется для подтверждения транзакций с криптовалютами.
Централизованная база
Учетная база данных, обслуживаемая организацией.
Цифровая подпись
Цифровой код, который генерирует механизм шифрования с открытым ключом, прикрепляемый к электронному документу для проверки его содержимого и идентификации отправителя.
Что такое блок Биткоина и за что отвечает его размер
Количество обрабатываемых транзакций в сети Биткоина зависит от одного важно параметра — размера блока. Блоки являются главной составляющей цепочки блокчейна, в которой есть информация о переводах BTC вообще за всю историю Биткоина. И хотя главные свойства блоков были заданы ещё анонимным создателем криптовалюты Сатоши Накамото, дебаты о целесообразности ограничений об их размере не утихают даже сегодня.
Что такое блок в Биткоине?
Блок — это информация о транзакциях в сети Биткоина. Каждый блок можно представить себе в виде страницы в бухгалтерской книге (блокчейне). В случае с криптовалютами страницы нельзя «вырвать» — блоки заносятся в блокчейн навечно.
Представьте, что бухгалтер записал все транзакции за последние десять минут в бухгалтерскую книгу, прошил её и поставил печать. Теперь страницу не получится вырвать, ведь все заметят нехватку данных и не захотят пользоваться такой книгой.
Забавный момент: сразу после запуска сети Биткоина в 2009 году размер его блоков составлял 36 мегабайтов. 14 июля 2010 года он был уменьшен до одного мегабайта.
Почему размер блока так важен?
Согласно замыслу создателя криптовалюты Сатоши Накамото, бухгалтерская книга пополняется новыми страницами раз в 10 минут. Иногда немного быстрее, иногда чуть медленнее, но в среднем это именно 10 минут. Размер каждой страницы (блока) ограничен, то есть количество записываемых туда транзакций тоже ограничено. В итоге у нас есть два лимита: на число транзакций в блоке и периодичность его нахождения.
Если желающих отправить биткоины будет слишком много, блоки заполняются очень быстро, и образуется очередь на попадание в них. Говоря умными словами, увеличивается мемпул — очередь из переводов в сети Биткоина, которые ждут подтверждения. Это приводит к росту комиссий за транзакций, ведь кто больше заплатит, тот быстрее попадёт в блок и проведёт перевод.
В начале 2013 года блоки Биткоина были заполнены в среднем на 125 килобайтов. К маю 2015 года этот показатель уже вырос до 425 килобайт, при этом блоки стабильно заполнялись полностью несколько раз в день. То есть транзакций пользователей было достаточно.
Зачем нужно расширять блоки?
За несколько лет существования Биткоина предложение увеличить размер блока звучало десятки раз. Сторонники этого действия считают, что только так BTC сможет выдержать огромную нагрузку при распространении во всём мире. С увеличенными блоками в сети криптовалюты будет проводиться больше транзакций за тот же период времени, то есть ей сможет пользоваться больше людей.
4 мая 2015 года главный научный сотрудник Bitcoin Foundation Гэвин Андресен опубликовал статью, которую в оригинале можно найти по запросу «Why increasing the max block size is urgent». В ней разработчик заявил, что увеличение размера блока — необходимая мера для Биткоина.
Если количество транзакций будет действительно огромным, сеть криптовалюты станет слишком загруженной и непродуктивной. В конце концов люди перестанут использовать Биткоин, потому что время проведения каждого перевода монет вырастет в разы.
Чуть позже Андресен заявил, что займётся разработкой аналогичного клиента Bitcoin XT, первая версия которого была выпущена в декабре 2014 года ещё одним критиком размера блока Биткоина Майком Хёрном.
В июне 2015 года руководства крупнейших китайских пулов для добычи криптовалюты F2pool, BTCChina, Antpool, Huobi и BW подписались под предложением увеличить блок Биткоина из-за растущего количества транзакций. В этом же месяце Андресен опубликовал предложение по улучшению Биткоина (BIP — Bitcoin Improvement Proposal) 101. В нём разработчик предложил отказаться от фиксированного ограничения на максимальный размер блока и перейти на новую модель, в котором лимит будет расти с предсказуемой скоростью.
Что было в BIP 101?
BIP 101 предполагал увеличение размера блока до 8 мегабайтов с 11 января 2016 года. Затем лимит должен был удваиваться каждые 730 дней вплоть до января 2036 года.
Считалось, что благодаря увеличению блока до 8 мегабайтов Биткоин сможет обрабатывать до 24 транзакций в секунду. BIP 101 понравился многим криптоэнтузиастам и крупным майнинговым пулам. И всё же у нововведения были противники. Создатель Bittorrent Брам Коуэн заявил, что столь резкие изменения в протоколе криптовалюты противоречат её главной идее.
16 августа 2015 года BIP 101 был интегрирован в код Bitcoin XT. И хотя апгрейд поддерживался многими, его интеграция не смогла придать популярности альтернативному клиенту Биткоина.
Какие предложения по увеличению размера блока понравились комьюнити?
Bitcoin XT, Bitcoin Unlimited, Bitcoin Classic и Segwit2x были популярными инициативами в 2016 году, однако ни одна из них не привела к расширению лимита блока Биткоина.
В январе 2016 года было решено отказаться от поддержки BIP 101 в Bitcoin XT и просто перейти на единовременное увеличение размера блоков до 2 мегабайтов. Это привело к серьёзному падению интереса к Bitcoin XT. К январю 2017 года менее 30 нод (узлов) в сети клиента поддерживались майнерами. Ещё год назад их количество превышало 650 единиц.
Через месяц был создан Bitcoin Classic путём форка оригинального Биткоина. Инициатива получила поддержку от Coinbase, Bitstamp, Circle, Роджера Вера и Гэвина Андресена. К сожалению, в 2017 году майнеры Bitcoin Classic не смогли достичь консенсуса по поводу очередного форка, после чего создатели криптовалюты решили прекратить её разработку, высказав свою поддержку Bitcoin Cash.
Примерно в одно время с созданием Bitcoin Classic консорциум крупнейших майнинговых пулов, кошельков и бирж Bitcoin Roundtable обсудил планы в отношении протокола Segregated Witness. Речь шла об увеличении размера блока оригинального Биткоина до 2 мегабайтов.
Что такое SegWit?
Segregated Witness или SegWit это улучшение, в котором размер блока освобождается за счёт выноса данных о подписях транзакций во внешний блок, именуемый «отдельным свидетелем». Именно так переводится словосочетание «Segregated Witness». Благодаря этому в один блок можно вместить почти в четыре раза больше транзакций.
31 марта 2017 года было предложено ввести SegWit путём софтфорка, за ним должен был состояться хардфорк SegWit2x для расширения размера блока до 2 мегабайтов. Детали апгрейда были обсуждены во время нью-йоркского соглашения, в котором приняли участие 58 крупнейших владельцев узлов сети Биткоина. Сообщается, что на тот момент они контролировали 83.28 процента мощности всех вычислительных устройств для добычи криптовалюты.
SegWit был принят в августе 2017 года, а вот по SegWit2x майнерам так и не удалось достичь консенсуса — апгрейд был отменён за несколько дней до его предполагаемой интеграции.
Почему разделился блокчейн Биткоина?
Консенсус в комьюнити по поводу «правильного размера блока» так и не был достигнут. В августе 2017 года состоялся хардфорк криптовалюты, который привёл к разделению её блокчейна.
1 августа 2017 года под эгидой Роджера Вера был создан Bitcoin Cash. В форке Биткоина размер блока был увеличен до 8 мегабайтов, при этом интеграция Segregated Witness была отклонена. В мае 2018 Bitcoin Cash прошёл через новый хардфорк, в ходе которого блоки вовсе были увеличены до 32 мегабайтов. Правда, эта инициатива так и не сделала альткоин популярнее оригинального Биткоина. Да и смысла в ней не было. Как оказалось, майнеры BCash всё так же используют блоки на 2 мегабайта, ведь в большем объёме нет смысла.
Заглядывайте в чаш крипточат миллиардеров. Там обсудим все подробности.