© Reuters. В жертву эффективности: как работает параллельное выполнение транзакций в блокчейне ETH/USD +2,94% Добавить/Убрать из портфеля Добавить в список Добавить позицию
Позиция успешно добавлена:
Введите название портфеля активов Тип: Покупка Продажа Дата: Колич.: Цена Цена пункта: Кред. плечо: 1:1 1:10 1:25 1:50 1:100 1:200 1:400 1:500 1:1000 Комиссия: Создать новый список Создать Создать портфель активов Добавить Создать + Добавить другую позицию Закрыть SOL/USD +6,11% Добавить/Убрать из портфеля Добавить в список Добавить позицию
Позиция успешно добавлена:
Введите название портфеля активов Тип: Покупка Продажа Дата: Колич.: Цена Цена пункта: Кред. плечо: 1:1 1:10 1:25 1:50 1:100 1:200 1:400 1:500 1:1000 Комиссия: Создать новый список Создать Создать портфель активов Добавить Создать + Добавить другую позицию Закрыть
Исследование Binance
Криптобиржа Binance выпустила целое исследование, посвященное параллельному выполнению в блокчейне. Само решение появилось довольно давно, однако аналитики уже теоретически обобщили многолетние наработки. О технологии известно в первую очередь благодаря проекту Solana, однако решение в разном виде используют Vara, TON, Sui, Sei, Aptos, Linera, Fuel и Monad.
Проблема последовательного выполнения
Сдерживающим пропускную способность в блокчейне является проблема последовательного выполнения. В решении с последовательным выполнением каждая транзакция должна проверяться всей сетью, что приводит к значительному потреблению энергии и увеличению нагрузки на майнеров или валидаторов.
Параллельное выполнение призвано развести задачи и обрабатывать за раз большее количество транзакций, что должно благотворно сказываться на пропускной способности и обеспечивать лучшее масштабирование сети.
Специалисты из Binance обращают внимание, что эволюция вычислительных машин движется в сторону многозадачности и многопоточности. Доказательством может служить тот факт, что частоты процессоров за последние 20 лет не сильно ушли вперед – вместо этого увеличилось количество ядер. Это более эффективное решение, так как с подавляющим большинством задач несколько более слабых ядер справятся быстрее одного мощного.
Программирование следует этому тренду – современные решения пишутся таким образом, чтобы максимизировать положительный эффект от многопоточности. Поэтому в моде решения, где множество задач решается параллельно.
Как работает параллельное выполнение в блокчейне
Говоря максимально просто, параллельное выполнение позволяет обрабатывать множество транзакций одновременно. В условиях больших вычислительных мощностей и их многозадачности параллельное решение кажется наиболее эффективным.
Но есть ряд проблем, из-за которых последовательные блокчейн-решения являются более надежными и безопасными. Главная – зависимые транзакции. Что если параллельно будут обработаны две транзакции, в которых, например, один и тот же адрес отправляет криптовалюты на два разных адреса. Если выполнение этих транзакций будет полностью параллельно, то владелец кошелька сможет дважды потратить свои монеты. А такое не приветствуется.
Поэтому зависимые транзакции можно выполнять только последовательно. Зависимость транзакций – ключевой концепт, который означает, что:
Из этого очевидно, что распараллелить можно только независимые друг от друга задачи. Это, в свою очередь означает, что скорость блокчейна с параллельным выполнением всегда будет ограничена по самой длинной цепочке зависимых задач. И там не менее, независимых задач довольно много, поэтому для параллельных решений в блокчейне места предостаточно.
Различные способы параллельного выполнения
Недостатки параллельного выполнения
На фоне простых последовательных решений параллельные конструкции далеко не всегда смотрятся выигрышно. Скорее напротив, они значительно менее безопасны, предсказуемы и просты.
Авторы исследования суммировали уязвимые места параллельного выполнения и выявили ряд критических:
- ситуация гонки (неопределенность результата, возникающая при неправильном определении независимых транзакций);
- проблемы с повторным входом;
- взаимоблокировки, когда две или более задачи бесконечно ожидают выполнения друг друга. Каждая из них не может выполниться до тех пор, пока не выполнится другая;
- некомпонуемость, когда программный код сам по себе может быть правильным, но выдавать критические ошибки при использовании в разных условиях.
Также условно критическими (то есть критическими в определенных ситуациях) видятся еще две проблемы:
- инверсия приоритетов или состояние, при котором задача с низким приоритетом может косвенно блокировать задачу с более высоким приоритетом из-за неправильной работы планировщика;
- нехватка ресурсов, когда некоторые задачи потребляют больше ресурсов, чем им положено, лишая другие задачи необходимых им ресурсов.
Вывод
Погоня за пропускной способностью может обойтись довольно дорого. Параллельное выполнение – сложная конструкция, которая привносит много проблем, обеспечивая, однако, существенную прибавку к производительности.
Читайте оригинальную статью на сайте Bits.media
В жертву эффективности: как работает параллельное выполнение транзакций в блокчейне