{"id":13505,"url":"\/distributions\/13505\/click?bit=1&hash=ca3734639136826288c9056e5c8fa03a05e87c4060ae84df200f2c90f5262470","title":"\u0412\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a? \u0410 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u0432 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435 \u043a\u043e\u0434\u0430?","buttonText":"\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c","imageUuid":"f5f0e11f-fefd-52f5-8712-82164a59b7ce","isPaidAndBannersEnabled":false}
Крипто
Егор Абрамов

Взгляд венчурного инвестора на Блокчейн | 07: Атака 51% и борьба с коллизиями

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

Коллизии при добавлении блоков

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

Допустим, вы попросили участников сети добавить сообщение «Боб любит Алису», а ваш конкурент попросил добавить сообщение «Джон любит Алису». В силу злого умысла либо же в силу того, что информация в сети Интернет передается не мгновенно, часть майнеров быстрее получили ваше сообщение, а часть – сообщение конкурента.

Допустим, примерно в одно и то же время два разных майнера смогли решить криптографические задачи обоих этих блоков и сразу же присоединили блоки к текущей цепочке. Следуя алгоритму, они направили обновленные цепочки всем другим участникам сети. До сих пор все честно и в соответствии с договоренностью: каждый майнер потратил энергию и силы и смог независимо отыскать решение криптографической задачи. Как же выбрать «правильную» цепочку? Ответ – сейчас и не надо выбирать, оставим обе цепочки. В итоге у каждого участника сети будет две цепочки Блокчейна, которые отличаются только последним блоком.

В парадигме Блокчейна такая коллизия – это не баг, а фича. Обе цепочки продолжат жить до тех пор, пока кто-то не решит задачу следующего блока. Этот человек должен выбрать, к какой из двух цепочек он хочет присоединить свой новый блок, и эта цепочка станет на 1 блок длиннее. Как только это произойдет, все участники сети отбросят короткую цепочку и продолжат работать над более длинной. Таким образом конфликт разрешится. На самом деле, такое «соревнование» цепочек может происходить 2, 3 и более блоков подряд, но в итоге одна из цепочек все равно вырывается вперед.

Если повезло вам и ваша цепочка в итоге окажется длиннее, то фраза вашего конкурента «Джон любит Алису» останется в более короткой цепочке. Это значит, что блок с этой фразой, хотя и был честно «добыт», навсегда пропадет из сети и будет считаться «сиротой» (“Orphantblock”).

Такие коллизии в Блокчейне встречаются регулярно. Именно поэтому рекомендуется подождать, пока к вашему блоку не добавятся еще несколько, чтобы он уж точно не стал «сиротой». Обычно рекомендуется подождать, пока 5-6 блоков не встанут над вашим.

Атака 51%

Допустим, вы покупаете очень большой пакет акций за 1500 биткоинов (почти 100 миллионов долларов) и пересылаете эту сумму продавцу. Тот должен подождать не только когда эта транзакция попадет в Блокчейн, но и пока сверху не присоединится еще 6 блоков. После этого продавец переводит вам акции.

Можете ли вы обмануть продавца акций и вернуть себе потраченные биткоины? Да, такая возможность есть, если предположить, что вы все это время не сидели сложа руки, а занимались майнингом. Причем не просто майнингом – вы должны были тайно продолжать строить цепочку блоков Блокчейна, опережая всю остальную сеть. Тогда как только акции попадут к вам в руки, вы можете представить всей сети свою тайную цепочку, в которой корректно решены все криптографические задачи и число блоков как минимум на 1 больше, чем у цепочки, которую строила вся сеть.

В этом случае все участники отбросили бы свою короткую цепочку и приняли бы вашу. А в чем выгода? В том, что в самом первом вашем блоке попросту не будет транзакции по пересылке 1500 биткоинов продавцу акций – вы, как майнер, её туда «забудете» включить. Как вам удастся все это провернуть? Только если вы обладаете большей вычислительной мощностью, чем вся остальная сеть. Поэтому это и называется «Атака 51%».

0
1 комментарий
Сергей Серков

Те транзакции, которые не удалось провести из-за длин цепочек, нужно проводить заново и заново оплачивать комиссию майнеру?

Ответить
Развернуть ветку
Читать все 1 комментарий
null