Перейти к публикации
polym0rph

Обсуждение статьи: Атака double-spending в системе Bitcoin

Рекомендованные сообщения

Если я правильно понял, то владельцы фпга и асиков, могут с вероятностью успеха до 50% атаковать других майнеров с фермами или целые пулы?

Изменено пользователем Yablya

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

,

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Или я что-то упустил/непонял ?

 

 

Я вообще новичек в этом деле, но массивно пытаюсь вникнуть в нее. Посему у меня в голове некий бардак из-за объема получаемой инфы. Учитывая тот-же хваленый 50BTC, который только на разнице курсов забирает 15%. Желаю идти дальше, но пока только вникаю. Так что не обессудьте, если мои вопросы - откровенно глупые.

 

Изменено пользователем Yablya

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

,

Откуда цифра в 15Гхэш? В таблицах минимальная мощность - 2%, это на данный момент 21,31*1000/100*2 = 426,2 Гхэш на минуточку, при которых есть 4% вероятности совершить атаку на 1 подтверждении, при увеличении подтверждений вероятность стремится к нулю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

15 - свободная цифра как единица отсчета.

21,31*1000/100*2 = 426,2 Гхэш

Теперь понятней! Спасибо.

Я рассчитывал, как атаку большей мощности на меньшую в соло, а не мощность всей сети. В этом и ошибка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что-то не въезжаю местами вообще. Как например понимать следующее:

 

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

Что такое "подтверждающий блок"? Почему два различных графика? Как количество генерируемых блоков зависит от распределения мощностей между атакующим и сетью?

 

"az- вероятность, что злоумышленник догонит сеть, при отставании в z блоков. Очевидно, что если z < 0 то az= 1, то есть атака удалась. az+1 – вероятность az-1

а сие что означает?

 

Функция вероятности от числа успехов отыскания блоков злоумышленником перед тем, как будет найдено n блоков в честной сети:

Нет такого понятия. То, что написано ниже это просто "вероятность".

 

Но это не 100% точные цифры, так как было сделано много допущений при моделировании системы.

ээ.. Каких?

 

А вообще статейка занятная. Жаль что о многом приходится догадываться и домысливать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нет такого понятия. То, что написано ниже это просто "вероятность".

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нет такого понятия. То, что написано ниже это просто "вероятность".

Наверное можно написать так: Функция зависимости вероятности от числа успехов...

 

Что такое "подтверждающий блок"? Почему два различных графика?

 

Понятие подтверждающие блоки, они же подтверждения введены в статье:

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

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

 

2 графика, потому что на одном показан пример успеха атаки, а на другом - провала.

 

 

Но это не 100% точные цифры, так как было сделано много допущений при моделировании системы.

ээ.. Каких?

Цитирую:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за указание на ошибку! Там часть текста пропала.

Исправлено на

az- вероятность, что злоумышленник обгонит сеть, при отставании в z блоков. Очевидно, что если z < 0 то az = 1, то есть атака удалась.

az+1 – вероятность обогнать сеть на следующем шаге, когда новый блок был найден честной сетью, что возможно с вероятностью p.

az-1 – вероятность обогнать сеть на следующем шаге, когда новый блок был найден злоумышленником, что возможно с вероятностью q.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@polym0rph,ситуация - любая транзакция подписывается только владельцем pubkey,

любая транзакция проверяется на конфликтность.

 

условие - все транзакции кроме генезисных принимаются сетью без блоков + установлено правило удалять любые utxo замеченные в конфликтных транзакциях в течении часа с момента получения транзакции, а после часа только вторую и последующие конфликтные транзакции

 

вопрос: чем будет отличаться ожидание 6 подверждений через блоки в биткоин от просто ожидания конфликтных транзакций  после рассылки покупателем первой транзакции в течении часа ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

вопрос: чем будет отличаться ожидание 6 подверждений через блоки в биткоин от просто ожидания конфликтных транзакций  после рассылки покупателем первой транзакции в течении часа ?

Например абсолютно чистая безконфликтная транзакция не включена в блок (низкая комиссия). Её по-прежнему можно дабс-спендить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Например абсолютно чистая безконфликтная транзакция не включена в блок (низкая комиссия). Её по-прежнему можно дабс-спендить.

 

я имел ввиду 2 разные системы

 

1 обычный биткоин

2 система где в блоки кладуться только генезисные транзакции а все остальное фильтруется по алгоритму и записывается в utxo без блоков:

 

правило для всех нод сети:

1)  принимаем транзакцию

2)  сравниваем с эталонным utxo и если нет конфликта то записываем ее как первую в utxo и ждем час(аналог примерно 6 подтверждений биткоин),

3) если в течении часа приходит транзакция с таким же pubkey (конфликтная с дабл спендом) отклоняем обе транзакции и удаляем  из utxo  всю цепочку всех транзакций связанных с этим pubkey (типа обнаружен мошенник, лишить его всех гнезисов и utxo)

4) если по истечении часа приходит даблспенд конфликтная транзакция, то просто отклоняем ее, сид приславший данную транзакцию отправляем в баню.

 

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

 

какие в таком остаются уязвимости?

Изменено пользователем infoman

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@infoman,

 

представь, что на полтора часа пропадает связь между китаем и остальным миром; сеть временно распадается на две части; в каждой из частей делаем по транзакции так, чтобы они конфликтовали между собой; каждая из сетей принимает "свою" транзакцию. Что произойдёт дальше при восстановлении связи в твоей схеме? Половинки навсегда забанят друг друга?

Изменено пользователем sankopolo

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@nikmakken,

 

если ты про обычный биткоин, то одна из половинок победит (у кого цепочка блоков длиннее) - все её транзакции останутся

 

а в схеме предлагаемой @infoman, по-моему, срабатывает правило 4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

чем будет отличаться ожидание 6 подверждений через блоки в биткоин от просто ожидания конфликтных транзакций

 

Тем, что отсутствует защита от злонамеренных узлов и от флуда. Единственный механизм защиты сети - большинство узлов. Или непонятно, на чем основан консенсус "принятия сетью".

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@sankopolo,можно убрать правило бана сидов, тогда сеть не разделится, но злоумышленник все равно не вернет себе денег, кроме того если китай отвалится на 1.5 часа то биткоин тоже не защищен, сеть может в итоге принять блоки китая, и продавец останется без денег и товара, да и злоумышленник не сможет отправлять в китай транзакции если тот отвалится от сети, это надо быть 1000% уверенным что только ты(злоумышленник) имеешь доступ к подсетке китая иначе лишится своих utxo как 2 пальца об асфальт

Изменено пользователем infoman

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@infoman,

 

А что делать с тем, что у одной половины сети записано одно в utxo, а у другой половины - другое? Даже если не банить друг друга?

 

В (оригинальном) биткоине пострадают те, чьи транзакции попадут в отклоненные блоки (+ вероятно потом они будут включены в блоки) и один из адресатов double spending транзакции, но сама сеть продолжит нормально существовать - т е примет одну из этих двух транзакций и "обнулит' другую.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

А что делать с тем, что у одной половины сети записано одно в utxo, а у другой половины - другое?

вы рассуждаете как еслибы utxo жестко привязывалось к блокам, а надо рассуждать с точки зрения свободного от монополизма блокчейна

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

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

тут даже можно обыграть правило банить только выходы более слабой сети.

это будет выглядеть как сращивание utxo

 

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

 

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

 

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

Изменено пользователем infoman

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мне кажется, что для успешной атаки double-spending нужно иметь пул для майнинга, который превосходит по мощности самый сильный пул сети.

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

Злоумышленник создает пул, который подтверждает блок за 5 минут в среднем.

Т.е. злоумышленник имеет всего 2% вычислительных возможностей сети.

                                                                                                                                               

Злоумышленник формирует транзакцию по оплате каких-то товаров.

Затем ждет пока сформируются 6 блоков и начинает атаку double-spending.

В течении часа он сформирует 12 блоков и превзойдет по длине основную ветку блокчейна.

Сеть должна принять более длинный вариант цепочки.

В течении двух часов атака состоялась. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×