Author

Topic: Атака 51% и форсированная эмиссия (Read 241 times)

newbie
Activity: 16
Merit: 0
В сети, например 20 демонов/нод с оригинальным по, на них в общей сложности 100 хеш/с майнинговых мощностей. В определенный момент в сеть приходит атакующий, подключает, например, 30 нод с модифицированным по, которое считает валидными его блоки с повышенной наградой начиная с определенного блока, и дает хешрейт 200 хэш/с. Как вы правильно заметили, мои ноды изначально шлют его нахуй, реджектя блоки с неправильной наградой.. но в итоге, поскольку у него и нод больше 50%, будет ли консенсус по его «компрометирующему» форку-цепи, примет ли его моя сеть в итоге как основной?

20 нод с оригинальным ПО не будут считать блоки с изменённым алгоритмом вознаграждения валидными, они их будут отбрасывать и строить цепочку блоков из тех блоков, которые они посчитают валидными. И наоборот, 30 нод с изменённым алгоритмом вознаграждения не будут считать валидными блоки с оригинальным алгоритмом вознаграждения.

Таким образом, 20 нод будут строить свою цепочку блоков, а 30 нод - свою. То есть, с определённого блока появятся две независимых цепочки блоков - это называется сплит блокчейна или форк блокчейна.

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



Спасибо за ответ!
Иными словами, эмиссию моего оригинального блокчейна злоумышленник выпотрошить не сможет, но сможет намайнить в своей цепи гору монет, а затем отправить их куда-то и этот «новый баланс» будет учтен моей веткой и принят? Cryptonote в последних его воплощениях из коробки от этого защищен? Можно ли где-то почитать о заплатках?

Именно, много источников по топику есть

Вообще-то нет) A-Bolt ранее прояснил.
newbie
Activity: 42
Merit: 0
В сети, например 20 демонов/нод с оригинальным по, на них в общей сложности 100 хеш/с майнинговых мощностей. В определенный момент в сеть приходит атакующий, подключает, например, 30 нод с модифицированным по, которое считает валидными его блоки с повышенной наградой начиная с определенного блока, и дает хешрейт 200 хэш/с. Как вы правильно заметили, мои ноды изначально шлют его нахуй, реджектя блоки с неправильной наградой.. но в итоге, поскольку у него и нод больше 50%, будет ли консенсус по его «компрометирующему» форку-цепи, примет ли его моя сеть в итоге как основной?

20 нод с оригинальным ПО не будут считать блоки с изменённым алгоритмом вознаграждения валидными, они их будут отбрасывать и строить цепочку блоков из тех блоков, которые они посчитают валидными. И наоборот, 30 нод с изменённым алгоритмом вознаграждения не будут считать валидными блоки с оригинальным алгоритмом вознаграждения.

Таким образом, 20 нод будут строить свою цепочку блоков, а 30 нод - свою. То есть, с определённого блока появятся две независимых цепочки блоков - это называется сплит блокчейна или форк блокчейна.

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



Спасибо за ответ!
Иными словами, эмиссию моего оригинального блокчейна злоумышленник выпотрошить не сможет, но сможет намайнить в своей цепи гору монет, а затем отправить их куда-то и этот «новый баланс» будет учтен моей веткой и принят? Cryptonote в последних его воплощениях из коробки от этого защищен? Можно ли где-то почитать о заплатках?

Именно, много источников по топику есть
newbie
Activity: 16
Merit: 0
Т.е. пресловутый double spending?

Нет. Double spending - это двойная трата в одной цепочке блоков.

Когда одна транзакция попадает в два блокчейна - это называется transaction replay.


Спасибо за ответ.
Разве cryptonote не защищен от transaction replay механизмом кольцевых подписей?
В сущности получается, transaction replay не связан с majority attack, поскольку сплит может произойти просто если часть сети поменяет программное обеспечение и будет считать только свои блоки валидными, строя свою цепь.. или я ошибаюсь?


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

Ну т.е. не особо опасное явление, т.к. атакующий в своей вилке может сформировать транзакцию, которую примет моя, только если он задействует выходы какого-то своего собственного бумажника с балансом, существовавшего в моей цепи до сплита. Если он после сплита переведет куда-то балансы в оригинальной цепи, то после отправки транзакции из его цепи с копией в мою, моя ее отвергнет, т.к. выходы в моей были уже израсходованы, и нажиться он не сможет.  В его цепи транзакции ему делать естественно никто кроме него не будет, т.к. там никого кроме него нет, и почистить никого в моей кроме себя он не сможет. Так?
legendary
Activity: 2317
Merit: 2318
Разве cryptonote не защищен от transaction replay механизмом кольцевых подписей?

Я про кольцевые подписи ничего не знаю, но в общем случае защита от transaction replay делается так: в транзакции есть параметр версия, и инициатор сплита меняет этот параметр и правила приёма транзакций: с момента сплита принимаем только транзакции с новой версией. А ноды старой цепочки, в свою очередь, не принимают транзакции с новой версией.

Quote
В сущности получается, transaction replay не связан с majority attack, поскольку сплит может произойти просто если часть сети поменяет программное обеспечение и будет считать только свои блоки валидными, строя свою цепь.. или я ошибаюсь?

Верно. В криптовалютах преднамеренные сплиты блокчейна не редкость. Когда разработчик решает поменять какие-либо параметры криптовалюты или ввести новый функционал, делается сплит блокчейна, называемый хардфорком, посредством выпуска новой версии ПО ноды. Если хардфорк делается по техническим причинам, то предполагается, что старую цепочку никто не будет майнить за ненадобностью, поэтому защита от transaction replay в таких случаях не делается.

В этой ситуации, можно вспомнить нежданчик ETC, когда, вопреки планам разработчика, старую цепочку продолжили майнить и таки нарисовались проблемы с transaction replay между цепочками ETH и ETC.

А бывает другая ситуация, когда хардфорк делается для создания новой криптовалюты, при этом обладатели ненулевого баланса в старой криптовалюте после хардфорка автоматически получают такой же баланс в новой криптовалюте. В этом случае, инициатор хардфорка, если он не долбоёб, предпринимает меры для отделения своих транзакций от чужих вышеописанным способом.
sr. member
Activity: 1316
Merit: 420
KTO EC/\U HUKTO?
Т.е. пресловутый double spending?

Нет. Double spending - это двойная трата в одной цепочке блоков.

Когда одна транзакция попадает в два блокчейна - это называется transaction replay.


Спасибо за ответ.
Разве cryptonote не защищен от transaction replay механизмом кольцевых подписей?
В сущности получается, transaction replay не связан с majority attack, поскольку сплит может произойти просто если часть сети поменяет программное обеспечение и будет считать только свои блоки валидными, строя свою цепь.. или я ошибаюсь?


Пользователь А отправляет монеты пользователю Б, транзакция подписывается кольцевыми подписями и транслируется по сети в мемпул обоих сетей, в итоге после включения транзакции в оба блохчейна пользователь А тратит монеты в обоих блохчейнах, а пользователь Б соответственно получает.
newbie
Activity: 16
Merit: 0
Т.е. пресловутый double spending?

Нет. Double spending - это двойная трата в одной цепочке блоков.

Когда одна транзакция попадает в два блокчейна - это называется transaction replay.


Спасибо за ответ.
Разве cryptonote не защищен от transaction replay механизмом кольцевых подписей?
В сущности получается, transaction replay не связан с majority attack, поскольку сплит может произойти просто если часть сети поменяет программное обеспечение и будет считать только свои блоки валидными, строя свою цепь.. или я ошибаюсь?
sr. member
Activity: 1316
Merit: 420
KTO EC/\U HUKTO?
Иными словами, эмиссию моего оригинального блокчейна злоумышленник выпотрошить не сможет, но сможет намайнить в своей цепи гору монет, а затем отправить их куда-то и этот «новый баланс» будет учтен моей веткой и принят?
На*уя ему майнить в своей, когда он сможет выпотрошить вашу? У него 51% мощности и всю награду он будет забирать себе, а ваши блоки отбрасывать. Грабить себя или своих адептов и заниматься прочим онанизмом он сможет не то что без вашего блохчейна, но даже без компуктера. Очевидно что пока его блоки невалидны, вся подобная самодеятельность не окажет на содержание вашего блохчейна ровно никакого эффекта. Если ваш блохчейн принимает невалидные блоки, значит он ни*уя не работает.
legendary
Activity: 2317
Merit: 2318
Т.е. пресловутый double spending?

Нет. Double spending - это двойная трата в одной цепочке блоков.

Когда одна транзакция попадает в два блокчейна - это называется transaction replay.
newbie
Activity: 16
Merit: 0
Иными словами, эмиссию моего оригинального блокчейна злоумышленник выпотрошить не сможет, но сможет намайнить в своей цепи гору монет, а затем отправить их куда-то и этот «новый баланс» будет учтен моей веткой и принят?

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


Т.е. пресловутый double spending?
legendary
Activity: 2317
Merit: 2318
Иными словами, эмиссию моего оригинального блокчейна злоумышленник выпотрошить не сможет, но сможет намайнить в своей цепи гору монет, а затем отправить их куда-то и этот «новый баланс» будет учтен моей веткой и принят?

Нет, транзакции, сформированные из намайненного после сплита, не будут приняты. Но если сформировать транзакцию из выходов, не потраченных до сплита, то такая транзакция появится в обеих цепочках.  
newbie
Activity: 16
Merit: 0
В сети, например 20 демонов/нод с оригинальным по, на них в общей сложности 100 хеш/с майнинговых мощностей. В определенный момент в сеть приходит атакующий, подключает, например, 30 нод с модифицированным по, которое считает валидными его блоки с повышенной наградой начиная с определенного блока, и дает хешрейт 200 хэш/с. Как вы правильно заметили, мои ноды изначально шлют его нахуй, реджектя блоки с неправильной наградой.. но в итоге, поскольку у него и нод больше 50%, будет ли консенсус по его «компрометирующему» форку-цепи, примет ли его моя сеть в итоге как основной?

20 нод с оригинальным ПО не будут считать блоки с изменённым алгоритмом вознаграждения валидными, они их будут отбрасывать и строить цепочку блоков из тех блоков, которые они посчитают валидными. И наоборот, 30 нод с изменённым алгоритмом вознаграждения не будут считать валидными блоки с оригинальным алгоритмом вознаграждения.

Таким образом, 20 нод будут строить свою цепочку блоков, а 30 нод - свою. То есть, с определённого блока появятся две независимых цепочки блоков - это называется сплит блокчейна или форк блокчейна.

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



Спасибо за ответ!
Иными словами, эмиссию моего оригинального блокчейна злоумышленник выпотрошить не сможет, но сможет намайнить в своей цепи гору монет, а затем отправить их куда-то и этот «новый баланс» будет учтен моей веткой и принят? Cryptonote в последних его воплощениях из коробки от этого защищен? Можно ли где-то почитать о заплатках?
legendary
Activity: 2317
Merit: 2318
В сети, например 20 демонов/нод с оригинальным по, на них в общей сложности 100 хеш/с майнинговых мощностей. В определенный момент в сеть приходит атакующий, подключает, например, 30 нод с модифицированным по, которое считает валидными его блоки с повышенной наградой начиная с определенного блока, и дает хешрейт 200 хэш/с. Как вы правильно заметили, мои ноды изначально шлют его нахуй, реджектя блоки с неправильной наградой.. но в итоге, поскольку у него и нод больше 50%, будет ли консенсус по его «компрометирующему» форку-цепи, примет ли его моя сеть в итоге как основной?

20 нод с оригинальным ПО не будут считать блоки с изменённым алгоритмом вознаграждения валидными, они их будут отбрасывать и строить цепочку блоков из тех блоков, которые они посчитают валидными. И наоборот, 30 нод с изменённым алгоритмом вознаграждения не будут считать валидными блоки с оригинальным алгоритмом вознаграждения.

Таким образом, 20 нод будут строить свою цепочку блоков, а 30 нод - свою. То есть, с определённого блока появятся две независимых цепочки блоков - это называется сплит блокчейна или форк блокчейна.

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

newbie
Activity: 16
Merit: 0
sr. member
Activity: 1316
Merit: 420
KTO EC/\U HUKTO?
Во-первых, это оффтопик, которому самое место в разделе новички, во-вторых, судя по вашим вопросам, вы не то что плаваете, а не знаете ничего даже поверхностно.

Зачем модифицировать код майнера? Если майнер вместо валидного содержимого блока будет майнить х*йню, то его блок никто не примет и мощность совершенно ни при чём, он конечно может майнить такие блоки сколько душе угодно и даже создать свой форк вроде бетховен кеша, но искать дебилов, которые примут данный консенсус придётся самому. Валидацию блока каждая нода проводит самостоятельно, если блок невалидный, то нода его не принимает, для этого в коде заложены требования к содержимому блока, иначе можно было бы наполнять блоки содержимым /dev/random и очень быстро загадить весь блохчейн чуть более чем полностью. Для консенсуса нужно, чтобы большая часть сети приняла блок. Если у майнера 51% мощности, то нет никакой нужды майнить невалидные блоки, достаточно майнить валидные и забирать всю награду себе, в результате вся ваша мнимая децентрализация пойдёт по пи*де, так как данный майнер сможет отбрасывать любые транзакции и совершать двойную трату, а вы с этим ничего не сможете сделать.
newbie
Activity: 16
Merit: 0
Коллеги, есть ли здесь головастые спецы, которые помогли бы разобраться в следующем аспекте:
Решил накатить скажем “шиткойн” на cryptonote (не «убийцу битка» естессно))), а скорее для фана и саморазвития). Именно что «накатить», ибо знания поверхностные, и все есть практически из коробки на гитах. Ну, собственно, и накатил...

Суть заинтересовавшего меня аспекта:
Если в молодую pow сеть с низким хешрейтом и относительно небольшим количеством майнеров, залезет некий слон с маджорити атакой (51% хэшрейта), модифицирует код майнера неким образом, чтобы повысить вознаграждение за блок (естественно оно ему все и будет доставаться), примут ли в итоге мои честные майнеры с оригинальным кодом его более длинную цепочку блоков... или ноды примут, в контексте пользователей валлетов без майнера? (Вот здесь я начинаю плавать. Не до конца понимаю, кто и как проводит валидацию блоков и подтверждение транзакций как происходит технически). Нужно ли для консенсуса потверждения всей сети или, если у злоумышленника критический перевес, его блоки и цепочка в итоге будет подтверждена его же тонной майнеров и в итоге будет принята сетью?

Про атаку двойной траты при маджорити спрашивать не буду, - более технически (не в общих чертах) явление тоже интересное, но тратить у меня в сети пока некуда (защищен на уровне идеологии Wink
Jump to: