DevilOper (OP)
Member
Offline
Activity: 280
Merit: 26
|
|
February 05, 2018, 04:13:00 PM |
|
Т.е., чтобы переписать кусок блохчейна - не нужно никаких 51%, достаточно просто иметь самую большую "мощность", ну и немного терпения.
Вероятность "смайнить" блок - пропорциональна "майнинговой мощности" (ну, или хэшрейту).
Т.е. (обратная зависимость), в среднем на каком-то промежутке времени (при одной и той же сложности) тот, у кого больше мощность - "смайнит" больше блоков. Причём, те, кто ничё не смайнил, "перезапускают" свою "вероятность смайнить" после каждого найденного другими блока - а нужно всего лишь продолжать упорно майнить свою цепочку. И рано или поздно (в зависимости от степени превосходства над "усреднённой" мощностью пулов) - она станет длинней. И перепишет нахрен все чужие. Причём, майнить, как я понимаю, можно даже нулевые блоки (ну, или по 2-3 транзакции).
(Ну в смысле, я понимаю, что 51% - это гарантировано, а мой вариант - статистический. Но вполне рабочий же.)
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2334
Merit: 2374
|
|
February 05, 2018, 06:21:03 PM |
|
а нужно всего лишь продолжать упорно майнить свою цепочку. И рано или поздно (в зависимости от степени превосходства над "усреднённой" мощностью пулов) - она станет длинней.
Допустим, ваша мощность - 40% от общей. Мощность остальных пулов - 60% Вы с 40% майните свою цепочку, остальные с 60% майнят свою цепочку. Откуда возьмётся превосходство, если после сплита блокчейна вы начнёте находить блоки в 1.5 раза реже? А после ближайшего пересчёта сложности вы будете находить блоки с той же скоростью, но сложность вашей цепочки станет в 1.5 раза меньше, а правильной считается цепочка с максимальной совокупной сложностью.
|
|
|
|
Coin-1
Legendary
Offline
Activity: 2618
Merit: 2304
|
|
February 05, 2018, 08:08:35 PM |
|
а нужно всего лишь продолжать упорно майнить свою цепочку. И рано или поздно (в зависимости от степени превосходства над "усреднённой" мощностью пулов) - она станет длинней.
Допустим, ваша мощность - 40% от общей. Мощность остальных пулов - 60% Вы с 40% майните свою цепочку, остальные с 60% майнят свою цепочку. Откуда возьмётся превосходство, если после сплита блокчейна вы начнёте находить блоки в 1.5 раза реже? А после ближайшего пересчёта сложности вы будете находить блоки с той же скоростью, но сложность вашей цепочки станет в 1.5 раза меньше, а правильной считается цепочка с максимальной совокупной сложностью. Топикстартер всё верно говорит. В общем-то, это очевидно. Допустим, есть майнинг-пул, который выдаёт 4 TH/s, есть ещё 6 майнинг-пулов, каждый из которых выдаёт по 1 TH/s. В сумме, первый майнинг-пул имеет 40% мощности сети, но дело в том, что другие майнинг-пулы независимы и являются друг другу конкурентами, поэтому первый майнинг-пул, имея самую большую мощность среди незавимимых пулов, может, игнорируя орфаны, добавлять все блоки в блокчейн. Также здесь нужно учесть, что два майнинг-пула могут сговориться и объединить свои вычислительные мощности. В этом случае будет казаться, что блокчейн создают два неаффилированных пула, хотя по факту - один пул, за которым стоит одна группа людей.
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2334
Merit: 2374
|
|
February 05, 2018, 09:59:39 PM |
|
Допустим, есть майнинг-пул, который выдаёт 4 TH/s, есть ещё 6 майнинг-пулов, каждый из которых выдаёт по 1 TH/s. В сумме, первый майнинг-пул имеет 40% мощности сети, но дело в том, что другие майнинг-пулы независимы и являются друг другу конкурентами, поэтому первый майнинг-пул, имея самую большую мощность среди незавимимых пулов, может, игнорируя орфаны, добавлять все блоки в блокчейн.
Доля орфанов незначительна. Важно, что эти 6 пулов работают над одним блокчейном и, следовательно, их мощности суммируются. Также здесь нужно учесть, что два майнинг-пула могут сговориться и объединить свои вычислительные мощности. В этом случае будет казаться, что блокчейн создают два неаффилированных пула, хотя по факту - один пул, за которым стоит одна группа людей.
Это уже совсем другая история. Тогда эти два пула технически можно рассматривать, как единое целое и ваш пример сводится к "Атаке 51%".
|
|
|
|
DevilOper (OP)
Member
Offline
Activity: 280
Merit: 26
|
|
February 05, 2018, 10:17:28 PM |
|
Важно, что эти 6 пулов работают над одним блокчейном и, следовательно, их мощности суммируются. Мощности суммировались бы, если бы они поделили диапазон перебора "соли", и каждый пул работал бы над своим куском (как это происходит с отдельными майнерами). А они все перебирают одно и то же. В самом лучшем случае "суммой" будет среднеквадратичное.
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2334
Merit: 2374
|
|
February 05, 2018, 11:32:39 PM Merited by TechPriest (1) |
|
А они все перебирают одно и то же.
Не одно и то же. Процесс майнинга заключается в подборе хеша заголовка блока, удовлетворяющего текущей сложности. В заголовке блока есть параметр Nonce, который инкрементируется от нуля и до упора, и для каждой итерации вычисляется хеш заголовка блока, если хеш удовлетворяет критерию сложности - перебор прекращается, блок найден. Но помимо Nonce в заголовке блока есть ещё параметры, и часть из них отличается от пула к пулу. К примеру, параметр корень дерева Меркле - это хеш всех транзакций, содержащихся в блоке. Даже если в блоке нет пользовательских транзакций, всё равно всегда есть одна Coinbase-транзакция, которая формирует вознаграждение из ничего и отправляет его на адрес пула. Понятно, что адреса для получения вознаграждения у пулов разные, а значит и Coinbase-транзакции у разных пулов будет разные и, соответственно, корень дерева Меркле будет отличаться у разных пулов.
|
|
|
|
DevilOper (OP)
Member
Offline
Activity: 280
Merit: 26
|
|
February 06, 2018, 11:24:18 AM |
|
Не одно и то же. Одно и то же. Процесс майнинга заключается в подборе хеша заголовка блока, удовлетворяющего текущей сложности. В заголовке блока есть параметр Nonce, который инкрементируется от нуля и до упора, и для каждой итерации вычисляется хеш заголовка блока, если хеш удовлетворяет критерию сложности - перебор прекращается, блок найден.
Но помимо Nonce в заголовке блока есть ещё параметры, и часть из них отличается от пула к пулу.
К примеру, параметр корень дерева Меркле - это хеш всех транзакций, содержащихся в блоке. Даже если в блоке нет пользовательских транзакций, всё равно всегда есть одна Coinbase-транзакция, которая формирует вознаграждение из ничего и отправляет его на адрес пула. Понятно, что адреса для получения вознаграждения у пулов разные, а значит и Coinbase-транзакции у разных пулов будет разные и, соответственно, корень дерева Меркле будет отличаться у разных пулов. Да пофигу, в чём там какой процесс заключается: даже если они перебирают абсолютно случайные числа независимо друг от друга - по парадоксу дней рождений, вероятность перебирать одни и те же числа для них равна квадратному корню вероятности "вытянуть" нужное число (а поскольку вероятность < 1 - корень из P будет больше P). С целевой сложностью - будет всё то же самое, если откинуть не интересующие нас биты. Поэтому я и сказал, что "суммой" будет среднеквадратичное в лучшем случае - т.е., если перебор полностью случайный. А если (скорей всего) алгоритм перебора один и тот же - то "сумма" будет вообще стремитсья к среднему. Кстати, если sha256d настолько случайный - то гораздо лучше вообще "майнинг" сделать по принципу "камень, ножницы, бумага": каждый майнит блок со своим coinbase без всякой "соли" - побеждает тот, у которого "дельта" с хэшем своего адреса, или например, с хэшем своей транзакции - наименьшая.
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2334
Merit: 2374
|
|
February 06, 2018, 12:16:01 PM |
|
Да пофигу, в чём там какой процесс заключается: даже если они перебирают абсолютно случайные числа независимо друг от друга - по парадоксу дней рождений, вероятность перебирать одни и те же числа для них равна квадратному корню вероятности "вытянуть" нужное число.
Пул 1 подбирает нужный хеш так: sha256d(A + X + N) Пул 2 подбирает нужный хеш так: sha256d(A + Y + N), где A - общие данные для всех пулов N - nonce, который перебирается от 0 до max X, Y - данные уникальные для конкретного пула, которые принципиально не могут быть одинаковыми у разных пулов Какова вероятность того, что на вход sha256d у разных пулов поступят одинаковые данные?
|
|
|
|
DevilOper (OP)
Member
Offline
Activity: 280
Merit: 26
|
|
February 06, 2018, 12:43:02 PM |
|
Какова вероятность того, что на вход sha256d у разных пулов поступят одинаковые данные? Ну, вы читайте полностью, что я написал, а не только первые три слова.
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2334
Merit: 2374
|
|
February 06, 2018, 01:05:00 PM |
|
Ну, вы читайте полностью, что я написал, а не только первые три слова.
Я всё читаю. Вы утверждаете, что интервалы входных данных для хеширования у разных пулов пересекаются. Я утверждаю обратное: каждый пул производит перебор в своём уникальном интервале входных данных. Я объяснил, почему эти интервалы не пересекаются. Я чего-то не заметил?
|
|
|
|
DevilOper (OP)
Member
Offline
Activity: 280
Merit: 26
|
|
February 06, 2018, 01:21:02 PM |
|
Ну, вы читайте полностью, что я написал, а не только первые три слова.
Я всё читаю. Вы утверждаете, что интервалы входных данных для хеширования у разных пулов пересекаются. Я утверждаю обратное: каждый пул производит перебор в своём уникальном интервале входных данных. Я объяснил, почему эти интервалы не пересекаются. Я чего-то не заметил? Вы не заметили "парадокс дней рождения": даже если интервалы входных данных никак не пересекаются, и sha256d абсолютно случайная функция - вероятность, что любые два пула "смайнят" одно и то же [неправильное] число выше, чем вероятность любому из них "намайнить" нужный хэш. Что "смайнят" три - несколько ниже, чем для двух, но все так же существенно выше, чем опять-таки найти нужный. Поэтому, про "сложение мощностей" - это про другое: как раз, когда они майнят в одном диапазоне, поделив его между собой (а не просто в произвольных разных).
|
|
|
|
DevilOper (OP)
Member
Offline
Activity: 280
Merit: 26
|
|
February 06, 2018, 01:59:37 PM |
|
Ну ОК, сложно написал с самого начала (потому, что предположил, что поиск хэшей разными пулами - НЕ независимые события) - попробую упростить.
На самом деле, если предположить, что нахождение хэша любым из пулов - независимые события, то вероятность для независимых событий считается как 1 минус произведение вероятностей обратных событий.
Т.е., для примера выше (40% в одном пуле против 3 х 20% - удачный пример, кстати):
Вероятность НЕ найти блок любым из 3-х "слабых" пулов ~ 0.8 : 0.8*0.8*0.8 = 0.512 - вероятость, что ни один из них не найдёт блок. Т.е., вероятность, что хотя бы один из 3-х "слабых" пулово найдёт блок = 1 - 0.512 => 48.8% Вероятность, что блок найдёт "сильный" пул - соответственно, 51.2%. Если эти 60% "размазать" по ещё более мелким пулам (по 10%) - соотношение вероятностей будет ещё печальнее: 53/47%%
Т.е., для "атаки 51%" переписывания блохчейна достаточно не более 40% мощности сети.
_______________________________ ПыСы. Отсюда же следует, что наличие охуилиона "микромайнеров" (~1% мощности) - не добавляет "децентрализованности" от слова "вообще никак".
|
|
|
|
fxpc
Sr. Member
Offline
Activity: 1316
Merit: 420
KTO EC/\U HUKTO?
|
|
February 06, 2018, 05:37:33 PM Last edit: February 06, 2018, 06:49:02 PM by fxpc |
|
Ну ОК, сложно написал с самого начала (потому, что предположил, что поиск хэшей разными пулами - НЕ независимые события) - попробую упростить.
На самом деле, если предположить, что нахождение хэша любым из пулов - независимые события, то вероятность для независимых событий считается как 1 минус произведение вероятностей обратных событий.
Т.е., для примера выше (40% в одном пуле против 3 х 20% - удачный пример, кстати):
Вероятность НЕ найти блок любым из 3-х "слабых" пулов ~ 0.8 : 0.8*0.8*0.8 = 0.512 - вероятость, что ни один из них не найдёт блок. Т.е., вероятность, что хотя бы один из 3-х "слабых" пулово найдёт блок = 1 - 0.512 => 48.8% Вероятность, что блок найдёт "сильный" пул - соответственно, 51.2%. Если эти 60% "размазать" по ещё более мелким пулам (по 10%) - соотношение вероятностей будет ещё печальнее: 53/47%%
Т.е., для "атаки 51%" переписывания блохчейна достаточно не более 40% мощности сети.
_______________________________ ПыСы. Отсюда же следует, что наличие охуилиона "микромайнеров" (~1% мощности) - не добавляет "децентрализованности" от слова "вообще никак".
В твоей логике по-прежнему есть зависимость между пулами, а её нет от слова совсем. Ты в другом топике писал про рандом, а сам не можешь врубиться что такое рандом. Чем больше итераций перебора кто-то совершает, тем выше вероятность что он подберёт подходящие параметры быстрее других, заметь - выше, а не 100%, при этом любая итерация любого майнера может оказаться подходящей. Если упростить, то в твоём примере сильный пул за секунду делает 40 итераций, а его 3 конкурента по 20 разных итераций каждый, то есть 3 слабых в сумме делают 60 итераций. При этом они перебирают nonce для совершенно разных данных. В то же время подходящий nonce для сильного пула может находиться в конце или середине диапазона, а для какого-нибудь из слабых в начале, таким образом слабый пул смайнит этот блок быстрее чем сильный потому что у него набор данных попался такой что итераций нужно меньше или ему моча в голову стукнула и он перебирает диапазон с конца/середины/по звёздам, в общем откуда пост фактум окажется ближе, но на большом промежутке времени сильный всё равно будет находить блоки чаще. Нахождение подходящего nonce в любом месте диапазона равновероятностно. Поэтому вероятность и мощность 3 слабых пулов суммируется и составляет 60%. Теоретически есть вероятность что ты на калькуляторе электроника смайнишь отдельно взятый блок быстрее чем все пулы, она крайне мала, но есть.
|
|
|
|
amaclin1
|
|
February 06, 2018, 07:57:17 PM |
|
И рано или поздно (в зависимости от степени превосходства над "усреднённой" мощностью пулов) - она станет длинней. И перепишет нахрен все чужие. Это верно. Если у вас, допустим, 40% мощности сети, то майня свою цепочку вы будете находить 4 блока в среднем за то время, когда остальная сеть найдет 6 блоков. Вероятность того, что вам повезет, и вы за час найдете больше блоков, чем остальные составляет... Эээ... Ну надо считать... Но меньше 50% - это очевидно. Но заплатить за электричество вам придется однозначно. Так что в чем смысл такой игры? Суть атаки-51 в том что она должна быть профитна для атакующего. Для этого совершается действие в блокчейне, например продажа 1000 биткойнов за 10 миллионов долларов, а потом оно откатывается благодаря переписыванию цепочки. У вас остаются и 1000 биткойнов и 10 миллионов долларов. Просто так попытки заорфанить основную цепь имея меньше 50% мощности от сети возможны, но вероятность того, что действие не будет откачено слишком мало, чтобы окупить издержки. Допустим, есть майнинг-пул, который выдаёт 4 TH/s, есть ещё 6 майнинг-пулов, каждый из которых выдаёт по 1 TH/s. В сумме, первый майнинг-пул имеет 40% мощности сети, но дело в том, что другие майнинг-пулы независимы и являются друг другу конкурентами, поэтому первый майнинг-пул, имея самую большую мощность среди незавимимых пулов, может, игнорируя орфаны, добавлять все блоки в блокчейн. Что значит "игнорируя орфаны"? Игнорировать вы можете чужие блоки. А орфанами они станут или наоборот ваши блоки будут орфанами - это решает большинство. Если у вас меньше 50% - то орфанами станут ваши блоки. Конечно, вы можете майнить свой собственный блокчейн. В сети, которая не соединена с интернетом (это равносильно тому что вы игнорируете все чужие блоки) И в этой сети у вас будет вообще 100% мощности. Но с точки зрения стороннего наблюдателя та, большая цепочка будет иметь большую сложность чем ваша и она будет мэйнчейном, а не ваша
|
|
|
|
A-Bolt
Legendary
Offline
Activity: 2334
Merit: 2374
|
|
February 06, 2018, 08:36:00 PM |
|
Вероятность НЕ найти блок любым из 3-х "слабых" пулов ~ 0.8 : 0.8*0.8*0.8 = 0.512 - вероятость, что ни один из них не найдёт блок. Т.е., вероятность, что хотя бы один из 3-х "слабых" пулово найдёт блок = 1 - 0.512 => 48.8%
Согласен. Ваши рассуждения можно выразить формулой вероятности независимых совместных событий: P = 1 - (1 - p)^n где p - вероятность нахождения блока одним из пулов группы P - вероятность нахождения блока всей группой пулов n - количество пулов в группе
Мы с вами оба были неправы, но по-разному. Вы ошибочно полагали, что пулы выполняют одинаковые вычисления, что снижает эффективность группы пулов по сравнению с эффективностью одного пула. А я, в свою очередь, наивно полагал, что вероятность суммы совместных событий равна сумме вероятностей каждого события, то есть P = 0.2 + 0.2 + 0.2 = 0.6, что неверно. По поводу охулиона микромайнеров. Формулу выше можно написать так: P = 1 - (1 - N/n)^n, где N - совокупная доля группы в общем хешрейте (те самые 60% (0.6) от общей мощности) Если n -> oo мы получаем предел, который равен 1 - e^(-N). То есть, сколько бы у нас не было наномайнеров, они не смогут нам просадить вероятность нахождения блока ниже, чем 1 - e^(-N) (для N = 0.6, n -> oo, p = 0.45) Поэтому с точки зрения теории вероятности охулиард наномайнеров не страшнее охулиона микромайнеров. Самая сильная просадка вероятности нахождения блока наблюдается при переходе от одного пула к двум: от 0.6 к 0.51, а дальше уже легче. Ладно, это всё была занимательная математика, попробуем копнуть глубже. Хеш заголовков блоков вычисляет не пул, а вполне конкретная железяка - Antminer S9. Детализируем картину: У нас теперь есть один пул состоящий из 40 000 железяк, каждая из которых работает независимо друг от друга, потому что пул следит, чтобы все железяки получали разные задания. И есть 3 пула, каждый из которых состоит из 20 000 железяк. Теперь у нас появились большие числа на обеих сторонах: тёмной и светлой, теперь и там и там охулион майнеров. Напомню, что при больших n вероятность нахождения блока перестаёт зависеть от n и зависит только от доли мощности N: 1 - e^(-N) В итоге всё сводится к соотношению суммарных мощностей в разных цепочках без влияния количества вычислительных единиц в каждой цепочке (при значительном количестве этих самых вычислительных единиц).
|
|
|
|
DevilOper (OP)
Member
Offline
Activity: 280
Merit: 26
|
|
February 06, 2018, 11:00:06 PM |
|
Мы с вами оба были неправы, но по-разному. Вы ошибочно полагали, что пулы выполняют одинаковые вычисления Немного не так: мне было лень разбираться, что именно там хэшат пулы, и как - я просто тупо предположил, что корреляция есть (а она таки может быть - скажем, адрес, ну или хэш первого chunk-а, или к чему там прибавляют nonce отличается меньше, чем диапазон этого nonce. Неправильно я сначала оценил "сумму" как максимум среднее квадратичное - хотя, потом исправился. По поводу охулиона микромайнеров. Формулу выше можно написать так: P = 1 - (1 - N/n)^n, где N - совокупная доля группы в общем хешрейте (те самые 60% (0.6) от общей мощности) Это только если у них мощности одинаковые - но это так, в порядке занудства. То есть, сколько бы у нас не было наномайнеров, они не смогут нам просадить вероятность нахождения блока Так я не говорил о "просадке" - я имел ввиду, что они создают иллюзию "децентрализации" - а на самом деле, просто мельтешат под ногами, практически никак ни на что не влияя.
|
|
|
|
|
DevilOper (OP)
Member
Offline
Activity: 280
Merit: 26
|
|
February 06, 2018, 11:18:56 PM |
|
Вероятность того, что вам повезет, и вы за час найдете больше блоков, чем остальные составляет... Эээ... Ну надо считать... Но меньше 50% - это очевидно. Вот я там чуть ниже посчитал - очевидное не всегда то, чем кажется. Суть атаки-51 в том что она должна быть профитна для атакующего. Нуу, для меня лично суть моего постинга в том, чтобы пнуть ещё один миф из мифологии беткоэна; а так-то можно массу вариантов придумать, как к своей выгоде манипулировать этой сектой и диктовать свои правила. Для этого совершается действие в блокчейне, например продажа 1000 биткойнов за 10 миллионов долларов, а потом оно откатывается благодаря переписыванию цепочки. У вас остаются и 1000 биткойнов и 10 миллионов долларов. Ваще, как показывает практика - гораздо выгодней, например, организовать какой-нибудь "взлом" какой-нибудь биржи, ну или просто хайпануть, и нагнать хомячков, и взвинтить цену
|
|
|
|
fxpc
Sr. Member
Offline
Activity: 1316
Merit: 420
KTO EC/\U HUKTO?
|
|
February 06, 2018, 11:51:53 PM Last edit: February 07, 2018, 12:03:08 AM by fxpc |
|
Ты опять бухой? Т.е., для примера выше (40% в одном пуле против 3 х 20% - удачный пример, кстати):
Вероятность НЕ найти блок любым из 3-х "слабых" пулов ~ 0.8 : 0.8*0.8*0.8 = 0.512 - вероятость, что ни один из них не найдёт блок. Т.е., вероятность, что хотя бы один из 3-х "слабых" пулово найдёт блок = 1 - 0.512 => 48.8% Вероятность, что блок найдёт "сильный" пул - соответственно, 51.2%. У тебя 40% мощности равны вероятности 51.2%, а 3 по 20% равны вероятности 48.8%, что есть бред. В среднем 3 пула с 20% мощностью будут находить 6 блоков за то время когда сильный пул найдёт лишь 4. Мы с вами оба были неправы, но по-разному. Вы ошибочно полагали, что пулы выполняют одинаковые вычисления Немного не так: мне было лень разбираться, что именно там хэшат пулы, и как - я просто тупо предположил, что корреляция есть (а она таки может быть - скажем, адрес, ну или хэш первого chunk-а, или к чему там прибавляют nonce отличается меньше, чем диапазон этого nonce. Неправильно я сначала оценил "сумму" как максимум среднее квадратичное - хотя, потом исправился. Лень разбираться, но не лень топики создавать где умничаешь? Какие бл*ть чанки или чего-то там, проспись. Как диапазон 256-битного хеша может быть меньше диапазона 32-битного nonce? Иди сам книжки почитай, не позорься.
|
|
|
|
DevilOper (OP)
Member
Offline
Activity: 280
Merit: 26
|
|
February 06, 2018, 11:58:43 PM |
|
Ты опять бухой? Та шоп я так жил: среди недели - и бухой. У тебя 40% мощности равны вероятности 51.2%, а 3 по 20% равны вероятности 48.8%, что есть бред. В среднем 3 пула с 20% мощностью будут находить 6 блоков в за то время когда сильный пул найдёт лишь 4. Мопед не мой Ну я же тебе дал ссылку, как ещё объяснять-то, чтобы понятно стало. Не суммируются вероятности "тупо в лоб".
|
|
|
|
|