// Без комментариев — параллельное программирование сложно; Выбор подмножества столбцов является NP-полным и сбалансированная атака на блокчейны Proof-of-Work


Сложно ли параллельное программирование, и если да, что с этим делать?

Выбор подмножества столбцов является NP-полным

Балансировочная атака на блокчейны Proof-of-Work: испытательный стенд R3 в качестве примера

Иногда новости достаточно хорошо сообщаются в других местах, и нам нечего добавить, кроме как обратить на это ваше внимание.

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

Сложно ли параллельное программирование, и если да, что с этим делать?

Параллельное программирование важно. Сейчас и в будущем это единственный способ сделать что-либо быстрее. Каждому программисту говорят, что параллельное программирование сложно, настолько сложно, что вам действительно следует избегать его любой ценой. Затем внутри большинства из нас есть голос, который говорит: «Продолжайте, это не может быть так сложно». Прежде чем сдаться, вам, вероятно, следует прочитать этот опрос:

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

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

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

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

Выбор подмножества столбцов является NP-полным

Проблема выбора подматрицы S данной матрицы M, которая оптимизирует аппроксимацию AS матрицы M, важна во многих практических приложениях. Другими словами, насколько близко матрица может подойти к пространству, занимаемому всего k ее столбцов.

Если вы исправите S, то A, который оптимизирует приближение, легко вычислить, но насколько сложно найти оптимальную подматрицу. Кажется, как бы сложно это ни было:

Пусть M — вещественная матрица размера r × c, а k — натуральное число. В задаче выбора подмножества столбцов (CSSP) нам нужно минимизировать количество ∥M − SA∥, где A может быть произвольной матрицей размера k × c, а S пробегает все подматрицы размера r × k матрицы M.

Эта проблема и ее приложения в численной линейной алгебре обсуждаются уже несколько десятилетий, но ее алгоритмическая сложность остается открытым вопросом. Мы показываем, что CSSP является NP-полным.

Более того, в статье доказывается, что для рациональных матриц проблема NP-полна.

Балансировочная атака на блокчейны Proof-of-Work: испытательный стенд R3 в качестве примера

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

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

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

Мы количественно оцениваем наш вероятностный анализ со статистикой, взятой из консорциума R3, и показываем, что одной машине требуется 20 минут для атаки на консорциум. Наконец, мы запускаем частную цепочку Ethereum в распределенной системе с настройками, аналогичными R3, чтобы продемонстрировать осуществимость подхода и обсудить применение атаки Balance к Биткойну.

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

Чтобы быть в курсе новых статей на I Programmer, подпишитесь на нашу еженедельную рассылку новостей, подпишитесь на RSS-канал и подпишитесь на нас в Twitter, Facebook, Google+ или Linkedin.

Комментарии

Оставьте комментарий или просмотрите существующие комментарии с помощью Disqus


Добавить комментарий