Есть ли в Биткойне какой-либо механизм, который позволяет ему динамически адаптироваться к потоку транзакций?

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

Как сеть Биткойн адаптируется к увеличению или уменьшению количества транзакций за временной интервал?

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

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

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

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

Как сеть Биткойн решает эту проблему?

(Разумеется, при более широком внедрении каждые 10 минут будет совершаться более пары сотен или тысяч транзакций?)

Это не решает эту проблему :)

Ответы (2)

Почему есть предел? Почему бы нам не изменить его?

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

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

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

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


Какие еще есть решения?

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

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

Сайдчейны также появляются в сети, например, Liquid Network , созданная Blockstream. Обратите внимание, что сайдчейны не увеличивают масштабируемость, но они могут увеличить масштаб , хотя опять же с другим предположением о безопасности и доверии, чем у базовой цепочки биткойнов.

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


В заключение: давайте еще раз посмотрим, что может представлять собой «транзакция».

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

[Биткойн-транзакции] не имеют ничего общего с транзакциями Visa, с которыми их обычно сравнивают. Мне нравится называть их контейнеровозами, а не посылками.

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

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

Очень подробный ответ с множеством отличных ссылок, помогающих получить более широкую картину. Большое спасибо!
Люблю аналогию с транзакцией как с «контейнеровозом». Очень подробные разъяснения по этому поводу есть в книге Андреаса М. Антонопулоса Mastering Bitcoin , которую я только что закончил читать.

Количество действительных данных tx, которые могут подтверждаться каждые 10 минут, ограничено:

  • 1mb (сериализация tx без свидетелей)
  • Общий вес блока 4 м:

Вес одной транзакции1 * TX-bytes(incl. witness) + 3 * TX-bytes(without witness)

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

Итак, вы говорите, что (если эти ограничения не будут смягчены в рамках хард-форка) Биткойн не сможет масштабироваться и не сможет совершать более 2000-3000 транзакций каждые 10 минут — это правильно? (Если это так, то это будет фундаментальный недостаток дизайна, который не позволит Биткойну когда-либо стать доминирующей валютой. В это трудно поверить...)
Биткойн не масштабируется. Это необходимо для децентрализованной проверки, обеспечивающей безопасность системы. Софтфорки, такие как segwit, обеспечивают логическое увеличение количества подтверждений транзакций на блок, но это не является масштабированием в строгом смысле этого слова. Рассмотрите возможность использования молнии или сайдчейнов в качестве альтернативных способов транзакций вне сети.