Параллельное выполнение транзакций в блокчейне.

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

Исследование, проведенное Binance, одной из ведущих криптобирж, посвящено именно этому вопросу. Параллельное выполнение в блокчейне – это концепция, зародившаяся давно, однако аналитики уже систематизировали и обобщили многолетний опыт. И хотя примером такой технологии является проект Solana, её разные вариации применяются в проектах Vara, TON, Sui, Sei, Aptos, Linera, Fuel и Monad.

Проблема последовательного выполнения

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

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

Как работает параллельное выполнение в блокчейне

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

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

Зависимость транзакций означает, что выходные данные одной транзакции используются в качестве входных данных для другой. Например, если Алиса отправляет эфиры Бобу, а потом Вася передает эфиры Кэрол, то выходные данные одной транзакции становятся входными данными для следующей. Или если и Алиса, и Кэрол передают эфиры Васе, то выходные данные нескольких транзакций используются для одной и той же цели.

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

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

Способы параллельного выполнения

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

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

Параллелизм данных – это принцип, когда одна инструкция обрабатывает множество данных (Single Instruction Multiple Data, или SIMD). SIMD – это низкоуровневое решение, которое позволяет более эффективно работать с данными, что особенно полезно для операций хеширования и верификации.

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

Недостатки параллельного выполнения

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

  1. Ситуация гонки: неопределенность результата, возникающая при неправильном определении независимых транзакций. Это может привести к конфликтам и неоднозначным исходам.
  2. Проблемы с повторным входом: возможность повторного внесения транзакций, что может нарушить целостность данных.
  3. Взаимоблокировки: когда две или более задачи бесконечно ожидают выполнения друг друга, что приводит к парализации системы.
  4. Некомпонуемость: возможность критических ошибок при использовании программного кода в различных условиях, несмотря на его правильность в отдельности.

Кроме того, выявлены еще две условно критические проблемы:

  1. Инверсия приоритетов: когда задача с низким приоритетом блокирует выполнение задачи с более высоким приоритетом из-за неправильной работы планировщика.
  2. Нехватка ресурсов: когда некоторые задачи потребляют больше ресурсов, чем им положено, лишая другие задачи необходимых ресурсов и замедляя работу системы.

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

Итог

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

Если статья оказалась полезной для Вас, угостите автора чашечкой кофе, чтоб были силы на новый контент =)

MiningFAQ.ru
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии