Размер блока в зависимости от количества транзакций

Широко известно, что биткойн имеет ограничение 1 MBна блок.

Однако средний размер блока в настоящее время составляет около 0.6 MB:

Биткойн средний размер блока

( исходные данные )

Согласно этой ветке , средний размер биткойн-транзакций составляет 512 B. Для простоты я не рассматриваю 80 Bзаголовок блока.

Учитывая это, сегодня можно уместить 1200транзакции в блоке. Учитывая, что новый блок будет добываться каждые 10 минут, текущая пропускная способность сети составит 2 tps:

1200 transactions/block / 10 min/block / 60 sec/min = 2 transactions/s

Это кажется очень низкой пропускной способностью, особенно по сравнению со средней скоростью Paypal и средней скоростью ~115tpsVisa ~2000 tps.

Теперь представьте, что я хочу построить сайдчейн, способный обрабатывать такой же трафик, как сеть Visa. Я хочу поддерживать большинство параметров блокчейна Биткойна (10 мин/блок, ~512 Б/транзакция), но иметь возможность обрабатывать файлы 2000 tps.

В этом случае размер моего блока будет следующим:

2000 transaction/s * 512 B/transaction * 60 s/min * 10 min/block = 586 MB/block

Верна ли приведенная выше оценка или я что-то упускаю?

Если это правильно, каковы последствия перехода от 1 MBразмера блока к 586 MB?

Ответы (2)

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

Ваши цифры кажутся примерно правильными. Возможны ли блоки размером 600 МБ в вашей боковой цепи, зависит от того, как будет работать ваша боковая цепь. Если вы избавитесь от безопасности Proof-of-Work и от аппаратного обеспечения уровня центра обработки данных и полосы пропускания между сторонами, которые в какой-то степени доверяют друг другу, то проблем не будет. Вероятно, в этом случае также имеет смысл уменьшить время блокировки, например, 60 МБ каждую 1 минуту. На самом деле, блоки, вероятно, больше не имели бы смысла, почему бы просто не добавить базу данных одиночных транзакций с некоторыми контрольными суммами для безопасности?

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

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

Это не значит, что у Биткойна не так много более крутых трюков в рукаве. В настоящее время развертывается SegWit, который позволит уменьшить размер блоков для определенных узлов и сделать их более поддающимися сокращению, а эффективный размер блока составит около 1,75 МБ. А также открывает пути для многих других интересных улучшений эффективности, таких как значительное уменьшение размера транзакций с несколькими подписями.

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

Масштабирование редко сводится к простому повороту одной ручки, простому увеличению существующей вещи. Умные решения оказывают гораздо большее влияние, предлагая лучшие компромиссы.

Извините, что я не ответил на ваш точный вопрос о перечислении всех последствий перехода на большой размер блока. Их много, и каждая из них может привести к бесконечной дискуссии о сбрасывании велосипедов и размахивании руками. Наиболее важным является то, что после того, как блок был добыт, он должен как можно скорее распространиться по всему миру, иначе есть риск, что другой майнер найдет другой блок, где один из этих блоков будет «осиротевшим» (потерянным). Больше потерянных блоков приводит к более централизованному майнингу, поскольку у более крупных майнеров больше шансов выиграть такую ​​гонку. Таким образом, "ASAP" в случае 10-минутного интервала имеет порядок секунд. Теперь это не означает, что все 600 МБ нужно будет передать на все узлы по всему миру в течение нескольких секунд, но это все еще довольно сложная задача.

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

спасибо за исчерпывающий ответ. Я слежу за новостями о биткойнах, которых не было больше года. Это скорее концептуальный вопрос: «отказ от криптографического механизма подтверждения работы не делает решение неблокчейновым
@HenriqueBarcelos да, вроде как. Концепция блокчейна предназначена для повышения эффективности PoW: связывая блоки вместе, изменение одного старого блока требует нового PoW не только для одного блока, но и для ВСЕХ блоков с тех пор. Без PoW вы, возможно, по-прежнему захотите связывать транзакции так, чтобы изменение транзакций потребовало перезаписи всей контрольной суммы для более новых транзакций (целостность данных), но на самом деле больше нет необходимости помещать транзакции в блоки. На самом деле это уже не блокчейн, а больше похоже на связанный список с указателями на хеш вместо указателей на память.

Верна ли приведенная выше оценка или я что-то упускаю?

Ваши оценки кажутся (более или менее) правильными.

Если это правильно, каковы последствия перехода с размера блока 1 МБ на 586 МБ?

Два основных, которые я вижу, это:

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

Более подробный список смотрите здесь .

Обратите внимание, что эти проблемы/недостатки увеличения размера блока были подняты для увеличения на 4, 8 или 32 МБ... увеличение на 586 МБ было бы слишком чрезмерным. И если вы сохраните параметры, аналогичные биткойну, у вас будут те же проблемы в боковой цепи.

Итак, в принципе, было бы лучше изменить и другие параметры, чтобы улучшить производительность этой цепочки? Учитывая 32 MiBограничение размера блока, уменьшив среднее время добычи блока до 30 s, я смогу обработать ~2200 tps. Но это может повлиять на безопасность моей цепочки, верно?
Если вы уменьшите время блока до 30 секунд, блоки размером 32 МБ никогда не смогут должным образом распространяться по сети до наступления следующего блока. Это сложная проблема, и я не знаю никаких исследований по этой теме, чтобы дать вам указания. Тем не менее, я бы посоветовал вам изучить (поэкспериментировать) некоторые альткойны и их возможности. Например, Zetacoin имеет время блокировки 30 секунд. Список альткоинов SHA256, включая время их блокировки, можно найти здесь .
@HenriqueBarcelos Причина, по которой Сатоши придумал 10 минут, заключается в этой задержке распространения: если 10% из 10 минут тратится на распространение блока, то это означает, что ~ 10% мощности майнинга тратится впустую, и это дает значительное несправедливое преимущество майнеры, которые получают блок первыми по сравнению с последними. Так что, во всяком случае, вы хотели бы увеличить время блокировки. Хотя даже это не очень помогает, и расчеты быстро займут часы или дни.