Текущая загрузка сети биткоин. Bitcoin в режиме критической перегрузки. Остерегайтесь обвала! Что такое транзакции в сети Bitcoin

Сеть Биткойн – самая крупная и устойчивая распределенная компьютерная сеть в мире. Об этом свидетельствуют показатели вычислительной мощности системы, недавно перевалившие за 1 зетафлоп (миллион петафлопов), что в восемь раз превышает суммарную мощность всех суперкомпьютеров мира.

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

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

Итак, самый быстрый на сегодняшний день суперкомпьютер, китайский Tianhe-2 , имеет показатель производительности 33.86 петафлопса/сек, что составляет приблизительно 0.001% от мощности сети Биткойн.

Мониторинг состояния сети

По мере того как Биткойн совершенствуется и развивается, все активнее конкурируя с различными системами розничных платежей, такими как Visa и MasterCard, а также с глобальными платежными сервисами вроде Swift бесперебойное функционирование децентрализованной сети становится первым необходимым условием ее жизнеспособности.

«Официальный сайт Биткойна» Bitcoin.org проделал большую работу, обобщив архивы всех предупреждений об опасности и сбоев сети.

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

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

Проект Bitnodes может помочь в определении размеров базовой биткойн-сети, так как он обнаруживает все работающие «полные узлы» сети. Поиск осуществляется следующим методом: сообщение getaddr отправляется рекурсивно для установления связи со всеми доступными узлами в списке, начиная с первоначальных. Система производит эту перекличку каждые 24 часа и отображает результаты на карте мира, вместе с рейтингами и данными о версии биткойн-клиента.

Проект Bitnodes запущен в апреле 2013 при поддержке Bitcoin Foundation в качестве информационного спонсора. Последний отчет о доступных узлах в Биткойн-сети можно увидеть .

  1. Репликация данных

Обмен информацией в сети Биткойн не происходит мгновенно. Но насколько быстро распространяется информация о биткойн-транзакциях? Созданная BitcoinStats шкала репликации данных показывает, как быстро транзакция достигает 50 процентов всех участников пиринговой сети (т.е. сколько времени прошло между тем, как транзакция или блок попали в сеть и тем моментом, когда большинство узлов сети получило это обновление). Сейчас этот показатель колеблется в районе 3.9-6 секунд.

  1. Списки стартовых серверов

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

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

Дополнительная шкала демонстрирует скорость реакции системы до предоставления списков доступных узлов, измеряемую в милисекундах (время, прошедшее с момента отправки запроса до получения ответа).

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

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

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

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

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

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

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

Чем менее правдоподобны временные показатели, которые демонстрируют лидеры списка майнеров до завершения блоков, тем больше вероятность того, что они используют стратегию «селфиш майнинга». В настоящее время, метрика говорит о том, что с вероятностью 94% эго-майнинга не происходит.

Coinometrics поясняет принципы своей метрики:

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

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

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

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

11. Общий объем блокчейна

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

12. Стандартный размер блоков

В последние несколько дней на сеть Bitcoin с разных сторон свалилось одновременно несколько напастей. По отдельности подобные события случались и раньше, но теперь сразу все факторы соединились вместе. Создается впечатление, что какая-то таинственная, но могучая сила подвергает Биткойн тяжелым и изощренным испытаниям для того, чтобы проверить - годится ли он на роль мировой платежной системы?

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

1. Еще в конце июня, в связи с , "банковскими каникулами" и даже для греков, активность в сети Bitcoin возросла. Множество людей заинтересовались криптовалютой, как независимым от государственного контроля средством сохранения своих сбережений во время финансовой нестабильности. Сами по себе эти события скорее полезны для Биткойна, но теперь создали дополнительную нагрузку.

2. Дискуссии о недостаточном ограничении размера блока в 1 Мб шли давно, с переменным успехом и даже конфликтами, но две недели назад, наконец, было об увеличении лимита до 8Мб в начале 2016 года.

3. 23 июня биржа Coinwallet.eu всем, что изменение размера блока действительно необходимо. Это ей удалось, но предельно практический метод доказательства устроил в сообществе изрядный переполох. Причем, компания предупредила, что проведет второй этап "тестирования".

4. 4 июля возникло критическое основных майнинговых пулов, вызванное переходом на обязательное соблюдение BIP66 - изменения протокола Bitcoin до блоков версии 3 (v3). В результате сеть на некоторое время разделилась на две фактически равных ветви и произошло отделение и потеря (для майнеров) двух цепочек в 6 и 3 блока соответственно. На сегодняшний день почти все пулы перешли на блоки третьей версии, кроме двух крупнейших - F2Pool (бывший Discus Fish) и Antpool. Поэтому, "тревожный" статус в сети до сих пор не отменен и раздвоения блокчейна все еще возможны.

5. Но самое интересное началось вечером 7 июля - кто-то запустил атаку на сеть "спамом транзакций" - то есть генерацией огромного количества мелких транзакций, которые полностью забивали все новые блоки. На данный момент не известно, кто и с какой целью проводит эту атаку. Несмотря на общедоступность блокчейна, анонимность Bitcoin не дает точно установить происхождение этих транзакций. Сейчас обнаружено около 400 связанных адресов, которые непрерывно передают друг другу по 1000 сатоши (0.00001 BTC), выплачивая при этом комиссии, следовательно, атака обходится ее инициатору недешево. Вот один из этих адресов , а следуя по цепочке, можно найти и остальные.

Что происходит?

Постараемся описать ситуацию на текущий момент. Еще вчера стала быстро расти очередь неподтвержденных транзакций. Ранее она крайне редко превышала 10 000, теперь же по данным Blockchain.info постоянно держится выше 20 000:

Общий размер всех неподтвержденных транзакций составляет почти 22 мегабайта, то есть для их отправки требуется в среднем 22 полных блока, но транзакции продолжают постоянно прибывать. Поэтому, размер очереди почти не меняется. Ситуация усугубляется тем, что в сети возникает достаточно много "пустых" блоков, содержащих только 1-2 транзакции. Каждый блок включает минимум одну транзакцию - в ней майнеры получают добытые монеты. Происходит ли это по техническим причинам или от желания владельцев пулов быстрее получить блок - неизвестно. Каждый пустой блок отодвигает очередь еще на 10 минут.

Последствия атаки хорошо видны на некоторых графиках на Blockchain.info:

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

Помимо крупных неприятностей, произошли и более мелкие. В частности, около 21:00 МСК на некоторое время "завис" один из основных информационных ресурсов о Bitcoin - Blockchain.info.

Произошло это вследствие двух блоков, которые не смог прочитать block explorer - и от F2Pool, которые, тем не менее, прошли в основной блокчейн. Сервис теперь работает, но по-прежнему не показывает транзакции из этих двух блоков.

Что будет дальше?

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

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

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

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

Однако, не только свободные децентрализованные системы страдают от технических недостатков. По иронии судьбы, именно сегодня из-за технического сбоя на несколько часов прекратила работу одна из крупнейших торговых площадок мира - Нью-Йоркская фондовая биржа (NYSE). По сообщениям СМИ, причиной стало неудачное обновление некоторых систем. Никто в мире не застрахован от подобных неприятностей.

Сложность сети биткоин это основной показатель, который определяет «легкость » нахождения блока. Сеть настроена таким образом чтобы блоки находиились примерно раз в 10 минут, а так как вычислительная мощность растет практически неуклонно, то должен быть параметр, который компенсирует этот рост. Этим параметром и является сложность , которая пересчитывается каждые 2016 блоков (примерно раз в две недели).

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

И немного технической информации: сложность (difficulty ) - относительная сложность генерации необходимой подписи блока. Сложность = 1 соответствует достижимой цели, в которой тридцать два первых бита нули. Соответственно, для генерации подписи блока нужно в среднем (2 32 * сложность) попыток (ХЕШ SHA-256). Сложность пересчитывается всеми биткоин-клиентами примерно раз в 2 недели, так чтобы скорость генерации блоков составляла примерно 6 блоков в час. Текущая сложность сети биткоин составляет 49 первых бит хэша должны быть нулями а дальше 23 бита хэша должны быть меньше 6A93B3