Author

Topic: Опастность доминирующего пула. (Read 1259 times)

FAN
legendary
Activity: 2716
Merit: 1020
значит пойдут перепродажи старых акков Smiley
sr. member
Activity: 303
Merit: 250
Администрация самого мощного на данный момент пула BTCguild осознает опасность приближения к 51% и собирается принимать ограничительные меры при росте мощности пула - такие как ограничение в регистрации новых пользователей.
legendary
Activity: 1120
Merit: 1069
Вот месяц назад разделилась цепочка 0.7 <->  0.8 - много вы видели тем от "победителей" в стиле, давайте подумаем о том как награды за блоки по-справедливости разделить, после анулирования "новоправильной" цепи?)
Пулы, выплачивающие награды по схеме PPS платят майнерам вне зависимости существования таких orphan блоков, по уму это пока самый честный способ выплат для майнеров (но почти самый неудобный для пулов), есть конечно ньюанс, PPS не предполагает выплату майнерам комиссий с транзакций... вот если пул будет платить PPS + TXFee Proporcional (а кто-нибудь так делает?), вот тогда будет совсем честно.

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

По уму, майнеру нет никаких проблем подключиться к сети bitcoin самостоятельно и собирать информацию о текущих блоках.

И самое главное, ни один из известных мне протоколов майнинга, кроме p2pool конечно же, не позволяет проконтролировать честность дележки намайненное пулом. Я просто не представляю как это было бы возможно сделать, кроме как это сделано в p2pool.
FAN
legendary
Activity: 2716
Merit: 1020
пора тушить доминирующий пул пора пока не поздно Smiley
member
Activity: 112
Merit: 10
Хм, а можно поподробнее? Как программа-майнер узнает, какой блок правильный, если она подключена не к кошельку (хранящему цепь блоков), а к серверу пула?
Или майнеры, с поддержкой этого протокола параллельно соединению с пулом строят между собой p2p-сеть?

Что будет с этой сетью, если запустить зловреда, который по этому протоколу будет рассылать инфу о существовании блоков на 2-3 № выше, чем реально рассчитывает сеть. Майнеры объявят забастовку своим пулам, считая что тех их orphan'ы заставляют считать?


============
Развивая предыдущий пост - "награда" получаемая нечестным пулом, в этой схеме - распределяется-то между всеми его майнерами.
Это не так, что за время Х майнили 100 блоков, админ включил хак, и в дополнение к 100 блокам для майнеров, по 15 блоков стало падать ему в карман; а наоборот - за время Х майнили 100 блоков, админ включил хак, стали майнить 115 блоков, распределяемых по-прежнему между всеми майнерами. Администрация имеет только соответсвующее увеличение с комиссии. Т.е. выступает эдакими "робин гадами".
И вопрос тут не только, сможет ли программа-майнер определить такую подтасовку у этого пула, а захочет ли пользователь-майнер данного пула этому противодействовать.
newbie
Activity: 6
Merit: 0
Повторюсь - манипулировать содержимым они не будут. Они генерируют абсолютно легальные с точки зрения семантики/синтаксиса блоки, которые являются просто rophan'aми. Но, пользуясь тем что в среднем их скорость генерации выше чем таковая у остальной сети - часто их цепочка будет становится основной, а до этого существовавший кусок из 1-3 блоков - orphan'ом.
При использовании современного протокола майнинга содержимое блока определяется майнерами, а не пулом. Обычная логика майнеров - нужно следовать за самой длинной цепочкой. Пул, может, и захочет, чтобы майнеры работали над "его" блоками, иногда превращая "чужие" блоки в orphan'ы, но навязать такое поведение не сможет (без согласия майнеров).
member
Activity: 112
Merit: 10
Повторюсь - манипулировать содержимым они не будут. Они генерируют абсолютно легальные с точки зрения семантики/синтаксиса блоки, которые являются просто rophan'aми. Но, пользуясь тем что в среднем их скорость генерации выше чем таковая у остальной сети - часто их цепочка будет становится основной, а до этого существовавший кусок из 1-3 блоков - orphan'ом.

И така-да, майнинг - это давно уже бизнес, причём бизнес для многих серьёзный по деньгам, и самое главное - бизнес анонимный. Дилемма то будет: получить 15% - 20% к доходу, или жалеть неудачников с мощностями меньше 40%...

Вот месяц назад разделилась цепочка 0.7 <->  0.8 - много вы видели тем от "победителей" в стиле, давайте подумаем о том как награды за блоки по-справедливости разделить, после анулирования "новоправильной" цепи?)
newbie
Activity: 6
Merit: 0
К слову, некоторые пулы используют при майнинге протоколы, не позволяющие им манипулировать содержимым блоков. То есть гадости, описанные в топике не провернуть без согласия всех, кто майнит на этом пуле, одного желания администратора недостаточно.
https://bitcointalksearch.org/topic/50-152250
full member
Activity: 199
Merit: 102
а тем временем гильда имеет 50%, пора их закрывать Smiley
Кто ж виноват, что у них такие стабильные сервера...

Да, надо как-то привлечь к этому внимание майнеров, а то так и до 51 не далеко...к слову сейчас у нах 47%, если верить блокчейну.
hero member
Activity: 798
Merit: 1000
а тем временем гильда имеет 50%, пора их закрывать Smiley
Кто ж виноват, что у них такие стабильные сервера...
FAN
legendary
Activity: 2716
Merit: 1020
а тем временем гильда имеет 50%, пора их закрывать Smiley
member
Activity: 112
Merit: 10
Показывайте ошибку в методике, иначе мы ещё увидим войны пулов  Shocked

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

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

на псевдокоде реализация выглядит так
Code:
q = 0.55; // (% мощности которую мы контролируем, соответсвенно и шанс появления блока у нас)
alien_chain = 0;
alien_block = 0;
friend_chain = 0;
friend_block = 0;
for (;;){
if (rand() < (1.0-q)/600){
alien_chain++;
if (alien_chain > 4){
alien_block += alien_chain;
alien_chain = 0;
friend_chain = 0;
}
}
if (rand() < q/600){
friend_chain++
if (friend_chain > alien_chain){
friend_block += friend_chain;
friend_chain = 0;
alien_chain = 0;
}
}
}
// friend_block, alien_block - число намайненных блоков своими, и соответсвенно всё-таки доставшиеся чужакам
Проверка на улов блока раз в секунду с уменьшеной вероятностью 1/600, выдаёт вполне правдоподобные результаты при честной игре. имеешь 80% мощности (q=0.8 ), получаешь ~800 блоков из 1000.

Но вот тестируем включение мухлежа:
Code:
реальная получаемый повышение
мощность % блоков дохода в:
40,0% 31,0% 0,775
50,0% 49,0% 0,98
55,0% 60,0% 1,09(09)
60,0% 70,0% 1,16(6)
66,7% 82,0% 1,23
75,0% 93,0% 1,24
80,0% 97,0% 1,2125
90,0% 99,9% 1,1094(4)
Правда стоит отметить, что число своих генерируемых блоков естественно не увеличивается, в краткосрочной перспективе. Просто определённая часть работы "конкурентов" пропадает, и для системы это выглядит как снижение генерирующих мощностей
Но если такой прессинг будет долгосрочным (т.е. дольше чем один пересчёт мощности), то соотвественно искуственно повышенная сложность позволит получать действительно "лишние" блоки и награду за них.
При мощностях ниже 50%, таким мухлежом естественно заниматься невыгодно, но из этого есть ещё одно следствие - и противостоять нечесному большинству, меньшинство по этому алгоритму не сможет. Продолжать свою цепочку из 2-3 блоков, не переключаясь на цепочку монополии, которая "незаконно" обогнала - гарантировано терять ещё больше блоков.
legendary
Activity: 1120
Merit: 1069
Настоятельно рекомендую к прочтению http://btcsec.com/double-spending/
member
Activity: 112
Merit: 10
время генерации блока несопоставимо с задержками пинга.

А чтобы парализовывать "общение" внутри сети - нужно не 40% вычислительных мощностей майнинга контролировать, а 60% (условно) узлов сети. р2р до биткоина придумали, и как децентрализованая и устойчивая система оно себя закоремендовало гораздо раньше.
Т.е. как говаривал ВВП мухи отдельно, котлеты отдельно.
newbie
Activity: 2
Merit: 0
я сейчас говорю не о полном захвате, а о получении доли сгенеренных блоков большей чем доля выч. мощности.
Примерно так:
в пуле сгенерился новый блок
почти одновременно новый блок сгенерился вне пула
ВСЕ в пуле подхватывают генерацию блоков далее от своего блока игнорируя чужой
поскольку в пуле 40% мошности есть вероятность что второй такой же блок появится внутри пула немного раньше чем на альтернативный блок вне пула.(поскольку в пуле все общаются с минимальным пингом а на все запросы вне пула отвечают скажем с 5 минутной задержкой, игнорируя задержку только в том случае если сгенерили свой 2-3 покрывающий блок).
То есть генерация в пуле может быть приоритетна к своим блокам что позволит увеличить долю генеренных блоков выше доли от общей выч мощности.

или коротко не проводим валидацию чужих блоков несколько минут при этом мгновенно рассылая на все другие майнеры свои блоки по мере генерации. обмен информации внутри пула будет происходит максимально быстро и "покрывать" свои блоки искуственно затягивая подверждение и генерацию блоков на чужих цепочках.
Думаю для этого не обязательно владеть 51% мощности, достаточно быть самым крупным пулом и чтобы внутри него пинг у всех участников был минимален.
Если это не так прошу ответить максимально подробно почему по такой схеме имея 40% выч. мощности всей сети нельзя получить скажем 44% награды от всех блоков в сутки. Хотя бы просто за счет того что свои блоки будут максимально быстро подтверждатся и максимально быстро посылатся далее а чужие будут затягиватся.

при наличии использования СВОЕГО модифицированного ПО.
member
Activity: 112
Merit: 10
Упрощая, можно сказать что генерация монет проиходит во время "верификации" блока, и от количества/объёма транзакций внутри него никак не зависит.
То есть генерацию с 40% захватить нереально.

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

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

Да, и только при условии эффективного "переключения" цепочки, вы эту альтернативную генерацию подавляете. Но мощности нужны таковы, чтобы почти гарантировано, обгонять и альтернативные цепочки из 2-4 блоков.

newbie
Activity: 2
Merit: 0
Здравствуйте, верно ли я понимаю что доминирующий пул(имеющий скажем 40%, но при этом в разы больший любого из остальных участников) может при незначительнйо модификации ПО фактически захватить процесс генерации новых монет.
Для этого необходимо обеспечить приоритет на все транзакции своих участников в пуле и задержку на всех остальных, тогда с большой вероятностью новые блоки будут подверждаться своими, из своего пула, чем новые блоки чужих. И при это вероятность порождения более длиной цепочки блоков станет выше внутри пула, для этого следует минимизировать пинг всех участников пула и ввсести задержки на общение со всеми чужими. И данная модификация является выгодной для всех участников этого пула так как позволит им получать больше вознаграждения.
Jump to: