728x90

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

Атака «double-spending» (удвоенное расходование) состоит в том, чего же в начале торговец убеждается в проведении транзакции на оплату, опосля что он транслирует собственный продукт, а опосля получения продукта покупателем образовывается новенькая транзакция, которая и принимается паутиной Биткоина заместо первой. У торговца не делать остается ни продукта, ни средств — и то и альтернативное будет у злодея.

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

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

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

blockchain of bitcoin

Рис.1. Деревце начинается снизу, стрелки демонстрируют с какого блока на какой же идет гиперссылка в заголовке блока. (a) Вероятный случай построения дерева. (b) Помеченная ветка недействительна, поэтому чего же ее длинна компилирует исключительно 3 блока, в то время а как бытует наиболее длинноватая ветка. (c) Черная ветка, а как и ровная, имеет самую большую длину, потому некими узлами числится реальной. (d) Когда обнаруживается новейший коалиция, который ссылается исключительно на один из предшествующих блоков, то какая-то ветка становится длиннее и принимается всеми узлами, а как действительная.

Договоримся, чего же транзакция имеет n подтверждений, коли она включена в коалиция, который является частью работающей цепочки, и бытует n блоков, включая заданный и все дальнейшие, идущие от него. Числится, чего же обезопасить транзакцию от double-spending может достаточное число таковых подтверждений.

Для проведения удачной атаки double-spending требуются последующие шаги:

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

Outline of double-spending

Рис. 2. Воплощение атаки double-spending.

(a) Состояние паутине до воздействий злодея. (b) Ветка слева содержит в себе транзакцию отправки btc торговцу. Имеет 2 доказательства. В итоге что торговец передал собственный препарат. В это же время у злодея сгенерирован коалиция, включающий атакующую транзакцию. (c) Коли атакующему удается разработать цепочку длиннее, то он публикует ее в паутина, и биткоины ворачиваются ему же.

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

Для моделирования ситуации создадим несколько упрощающий допущений, кои будем задействовать в следующем анализе:

  1. Общая скорость майнинга в общей паутине и у атакующего останется константной. Суммарная скорость майнинга будет H, из которой часть pH относится к добросовестным майнерам, а qH – к злодею. При всем этом: p + q = 1. То кушать возможность, чего же коалиция отыщет добросовестная паутина равна p, а чего же злодей – q.
  2. Сложность майнинга останется константной.

Обозначим буковкой z = n – m число блоков, в каких добросовестная паутина имеет привилегию перед атакующим. Опосля всякого обнаружения новейшего блока z изменяется, увеличиваясь на 1, коли его отыскала добросовестная паутина, и, уменьшаясь на 1 — коли злодей. Математически это же воображает собой цепь Маркова.

Коли z добивается значение -1, то атака удается. Коли сего ни разу не делать происходит, то атака провалена. Так как нас интересует, станет литров когда-нибудь z=-1, и когда это же случится, то можно задействовать для решения задачки концепцию цепей Маркова, где любой этап воображает собой факт нахождения блока кем-либо. zi+1 быть может равным или (zi+ 1) с вероятностью p, или (zi — 1) с вероятностью q.

Scenarios of double-spending bitcoin

Рис. 3. Возможность обгона. (a) удачная попытка double-spending опосля 15 найденных блоков. (b) Проваленная попытка атаки: опосля 20 найденных блоков паутина получила так существенное привилегию, чего же шансы атакующего догнать ерундовы.

az— возможность, чего же злодей опередит паутина, при отставании в z блоков. Разумеется, чего же коли z z = 1, то кушать атака удалась.
az+1 – возможность опередить паутина на очередном этапе, когда новейший коалиция был обнаружен добросовестной паутиной, чего же вероятно с вероятностью p.
az-1 – возможность опередить паутина на очередном этапе, когда новейший коалиция был обнаружен злоумышленником, чего же вероятно с вероятностью q.

az = p az+1+ q az-1

Беря во внимание p + q = 1 и ограничивающие условия, обнаружим az:

Formula Az

За один присест внятно, чего же коли атакующий обладает наиболее чем половиной мощностей паутине bitcoin, то его атака получится.

Шансы на фуррор зависят от значения z в момент времени, когда продукт передан, а означает уже кушать цепочка из n подтверждающих блоков. В собственной статье Сатоши рассчитывает наилучшее число блоков злодея при помощи распределения Пуассона, а как nq/p. Мы не делать будем задействовать заданное решение, а используем наиболее точную фотомодель m, а как отрицательную биномиальную переменчивую. Опция вероятности от цифры фурроров отыскания блоков злоумышленником перед тем самым, а как будет обнаружено n блоков в добросовестной паутине:

Formula P(m)

Гонка начинается с z=n-m-1 (при условии, чего же один коалиция был за ранее получен злоумышленником, до этого чем он начал атаку) Отсюда следует, чего же возможность воплощения атаки double-spending, когда продающий подождал n подтверждений, равна:

Formula r

Построим график приобретенного решения.

Probability of successful double-spending attack

Рис.4. Возможность r удачливости атаки, а как опция зависимости от соотношения уровня мощностей майнинга у атакующего ко всей суммарной мощности. Различными оттенками нарисованы графики для всевозможного цифры подтверждающих блоков n. Все больше подтверждений сокращает возможность фуррора атаки. При приближении соотношения мощностей к 50%, возможность фуррора приближается к 100%

А также составим график гораздо один график:

Number of confirmation required to resist double-spending

Рис 5. Зависимость цифры подтверждающих блоков от уровня соотношения мощности майнинга атакующего q. Оттенками выделены последующие вероятности удачливости атаки: 10% — желтоватый, 1% — лиловый и 0,1% — индиговый.

К примеру, коли мощность паутине злодея компилирует 10% от общей мощности, то требуется 2 доказательства, дабы изготовить возможность атаки все меньше 10%, Четырех доказательства, дабы все меньше 1% и 6, дабы все меньше 0,1%.

В таблице ниже представлены значения вероятности фуррора атаки зависимо от q — соотношения мощностей майнеров, принадлежащих злодею, ко всей мощности паутине bitcoin и цифры подтверждений n.

The probability of a successful double_spend

Из данной нам таблицы можно изготовить последующие выводы:

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

Посчитаем экономический уровень прибыли для атакующего при атаке double-spending:

  1. Атака быть может осуществлена против наиболее чем единого торговца. Другие платежи умеют быть ориентированы сразу против k всевозможных продавцов.
  2. От всякого продавца будут приобретаться товары со посредственной стоимостью v, которую мы будем полагать итоговой стоимостью.
  3. Независимо от тамошнего, получится атака либо нет, злодей получит продукт на сумму kv.
  4. Коли атака не делать получится, и злодей успеет отыскать j блоков за время пробы, любой по стоимости B, они все будут отклонены и злодей растеряет сумму равную jB.

Возможность провала атаки равна 1 – r (процедуру от n и q, найденную до этого). Тогда-то выгода будет вычисляться последующим образом:

Для тамошнего, дабы атака существовала выгодной, требуется исполнение условия:

Formula v

Торговец в сохранности до тамошних пор, пока цена продукта довольно невысока, дабы существовало экономически нерентабельно производить этакую атаку. Посчитаем на примере. Пусть j = 20, то кушать злодей сгенерировал 20 блоков, до этого чем закончил пробы генерации. B = 25BTC – заслуга за один коалиция. А k = 5. Тогда-то торговец защищен от атаки ввиду ее нецелосообразности до тамошних пор, пока производится последующее:

Formula v 2

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

The maximal safe transaction value

Приобретенные результаты отрицают те легенды, кои существовали до этого, связанные с атакой double-spending, а конкретно:

  1. Заданная атака просит наиболее половины любых мощностей паутине bitcoin.
  2. Ожидание подтверждающих блоков изрядно предохраняет от атаки с большенными мощностями майнинга.
  3. Шесть подтверждающих блоков предлагают полную защиту от атаки.
  4. Принципиально подождать а как можно все больше времени опосля транзакции, не делать обращая внимания на то, сколько существовало в это же время сгенерировано блоков.