Могу ли я обнаружить атаку 51% как разработчик

Я разработчик, создающий приложение, которое принимает платежи в криптовалютах.

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

Ответы (1)

Как правило, нет, пока не стало слишком поздно.

Типичная атака 51% будет выглядеть так:

  1. Злоумышленник в частном порядке начинает майнить свою собственную цепочку, которая расходится с основной цепочкой в ​​каком-то блоке N.

  2. Злоумышленник вносит монеты в ваш бизнес, отправляя их с адреса A. Назовите эту транзакцию X.

  3. Злоумышленник вставляет в свою цепочку транзакцию X', которая конфликтует с X; обычно X' отправляет монеты с адреса A на другой адрес, принадлежащий злоумышленнику.

  4. Злоумышленник ждет нескольких подтверждений транзакции X в блоках N+1, ..., N+6 (замените 6 любым количеством подтверждений, которое требуется вашему бизнесу) основной цепочки.

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

  6. Злоумышленник выпускает свою собственную цепочку, в которой теперь есть блоки, скажем, до N+50. Будучи длиннее, эта цепочка принимается сетью. Эта цепочка содержит не транзакцию X, а X', поэтому у вас нет монет, которые, как вы думали, у вас есть.

Обратите внимание, что вплоть до шага 6 все в сети выглядит совершенно нормально; только злоумышленник знает, что происходит.

После шага 6 все ли будут знать IP-адрес злоумышленника?
@AlexMillar Да, если только он не использовал VPN.
@NickODell: я не думаю, что все об этом узнают, с VPN или без нее. Злоумышленник раскрывает свой адрес (или адрес своего VPN, или выходного узла Tor) всем другим узлам, которым он отправляет свою цепочку, но он может правдоподобно утверждать, что получил его от кого-то еще и только ретранслировал. Точно так же невиновный узел, который ретранслирует блоки, не обязательно может доказать, что он не является злоумышленником, создавшим эти блоки.