Впрочем, в мире майнинг-пулов ничего не остается постоянным, новые пулы появляются, набирают популярность, потом идут к закату и исчезают. То же самое произошло с Ghash.io. После 2014 года пул постепенно исчез с горизонта. Компания CEX.io — владелец узла Ghash.io — в конце 2014 года решила приостановить сервис облачного майнинга из-за того, что низкая цена биткойна делала бесприбыльной работу всего оборудования, используемого для майнинга в пуле Ghash.io. Если оборудование подразделения облачного майнинга CEX.io в будущем когда-либо будет включено вновь, будет интересно посмотреть, сможет ли Ghash.io стяжать былую славу.

Биткойн для чайников - i_004.jpg

На момент выхода книги вычислительная мощность сети биткойна делится между множеством майнинг-пулов. Самый крупный на текущий момент пул — китайский AntPool (в нем 17,8 % мощности сети); за ним следуют пул ВТС.Тор (11,7 %), Bixin (9.7 %) и BitFury (8 %). Актуальную информацию о распределении хеш-мощности можно получить на странице https://blockchain.info/pools .

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

Двойная трата

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

Атака двойной траты

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

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

Атака в спешке
Биткойн для чайников - i_003.jpg

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

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

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

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

Биткойн для чайников - i_001.jpg

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

Атака Финни

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

Комбинация атаки "в спешке" и атаки Финни позволяет провести атаку Вектор76. Теоретически эта атака позволяет двойную трату биткойнов даже после первого сетевого подтверждения транзакции. Успешная атака будет стоить атакующему один блок — атакующий должен утаить этот блок и вместо того, чтобы распространить информацию о нем в сети, оттранслировать его атакуемому узлу в надежде, что успеет скрыться с товаром или воспользоваться сервисом до того, как сеть распознает атаку.

Брутфорс-атака

И последние, но не менее значимые — брутфорс-атака и атака >50 %. Для проведения обеих требуется неимоверное количество вычислительной мощности сети биткойна. Вероятность проведения любой из этих атак в настоящее время крайне мала, так как атакующему понадобилось бы получить контроль над существенным количеством всей майнинговой мощности сети биткойна.

Брутфорс-атака происходит так.

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

2. После ожидания п подтверждений торговец отправляет товар.

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

Вероятность успеха атаки — функция от хешрейта атакующего (как доли общего хешрейта сети) и числа подтверждений, которые будет дожидаться торговец перед тем, как выдать товар. Например, в случае, если атакующий контролирует 10 % хешрейта сети, но торговец ждет прохождения шести подтверждений, вероятность успеха атаки будет порядка 0,1 %.

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

Биткойн для чайников - i_002.jpg

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

Биткойн для чайников - i_003.jpg

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