Майнеры предпочитают сначала обрабатывать транзакции с более высокой комиссией.
После того, как блок добыт, этот порядок закреплен навечно. Этот порядок называется индексом транзакции.
И каждый полный узел хранит всю цепочку блоков.
Все это препятствует масштабируемости приложений blockchain.
Скорость обработки транзакций в блокчейне не является удовлетворительной по сравнению с централизованной обработкой.
Что такое масштабируемость?
Масштабируемость – это способность системы удовлетворительно работать на практических всех уровнях нагрузки.
Нагрузка в контексте блокчейна может быть транзакциями, количеством узлов, количеством участников и количеством аккаунтов и других атрибутов blockchain.
В случае блокчейна наиболее важной характеристикой является скорость транзакций или количество транзакций в секунду.
Это критическая характеристика для многих приложений, начиная от платежной системы и до управления цепочками поставок, чтобы система могла хорошо работать.
Например, для биткойна, в 2017 году, средняя комиссия сети достигла 15–20 долларов США, а скорость подтверждения транзакции стала доходить до нескольких дней.
Таким образом, можно сказать, что количество транзакций в секунду является показателем масштабируемости блокчейна.
Наиболее очевидным способом увеличения скорости транзакций является увеличение количества транзакций на блок.
Биткойн пытался сделать это двумя способами: с помощью вилки Segregated Witness и с помощью увеличения максимально разрешенного размера блока.
В Segregated Witness транзакции и подписи разделяются для обеспечения большего количества транзакций на блок.
Цифровая подпись занимает до 60 % пространства в транзакции.
И SegWit – это процесс, с помощью которого размер блока увеличивается путем удаления данных подписи из транзакций. Когда определенные части транзакции удаляются, это освобождает пространство для добавления дополнительных транзакций в блок.
Таким образом, подписи и скрипты выделяются в обособленную структуру, именуемую отдельным свидетелем.
И теперь, чтобы проверить все транзакции, узлу нужно загружать расширенный блок – это основной блок + отдельный свидетель.
Это была мягкая вилка, которая была реализована в 2017 году.
Она работает в текущей версии блокчейна биткойна.
Однако ограничение размера блока все равно фиксируется на одном мегабайте.
Второе предложение по увеличению масштабируемости состояло в том, чтобы помимо отдельного свидетеля, еще увеличить предел размера блока до большего размера в два мегабайта.
И это улучшение называется Segregated Witness 2X.
Это была запланированная жесткая вилка, которая должна была состояться в ноябре 2017 года, но не прошла из-за отсутствия поддержки сообщества.
Однако при этом часть сообщества, не приняв SegWit2x, произвела жесткий форк сети биткойна, увеличив размер блока биткойна до 8 Мб.
И свою ветку они назвали Bitcoin Cash.
15 мая 2018 года был обновлён протокол сети Bitcoin Cash с целью увеличения размера блока до 32 МБ.
Теперь давайте рассмотрим, как Ethereum относится к размеру блока.
В Ethereum размер блока может меняться и ограничен лимитом газа, указанным в заголовке блока.
Лимит газа на блок – это максимально допустимое количество газа в блоке для определения того, как много транзакций может поместиться в блок.
Например, у нас есть 5 транзакций, и каждая транзакция имеет лимит газа в 10, 20, 30, 40 и 50. Если лимит газа на блок – 100, тогда первые 4 транзакции могут поместиться в блок.
И майнеры решают какие транзакции поместить в блок.
Если попытаться включить транзакцию, которая использует больше газа, чем текущий лимит газа на блок – она будет отвергнута сетью и ваш Эфириум клиент выдаст вам сообщение “Транзакция превышает лимит газа на блок”.
Протокол позволяет майнеру блока регулировать лимит газа на блок на 0.0976 % в любом направлении.
Кто в Ethereum решает какой будет лимит газа на блок? – Майнеры. Отдельно от регулируемого протокола, стратегия с лимитом газа около 5,000,000 стоит по умолчанию в большинстве клиентов.
Майнеры могут изменить это, но многие этого не делают и оставляют настройки по умолчанию.
Этот размер переменного блока улучшил транзакционную скорость.
Читать дальше