Bitcoin Forum
July 06, 2024, 12:01:56 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Атака 51% и форсированная эмиссия  (Read 224 times)
serg2017 (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0


View Profile
May 07, 2018, 10:17:53 AM
 #1

Коллеги, есть ли здесь головастые спецы, которые помогли бы разобраться в следующем аспекте:
Решил накатить скажем “шиткойн” на cryptonote (не «убийцу битка» естессно))), а скорее для фана и саморазвития). Именно что «накатить», ибо знания поверхностные, и все есть практически из коробки на гитах. Ну, собственно, и накатил...

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

Про атаку двойной траты при маджорити спрашивать не буду, - более технически (не в общих чертах) явление тоже интересное, но тратить у меня в сети пока некуда (защищен на уровне идеологии Wink
fxpc
Sr. Member
****
Offline Offline

Activity: 1316
Merit: 420


KTO EC/\U HUKTO?


View Profile
May 07, 2018, 12:22:11 PM
Last edit: May 07, 2018, 01:40:17 PM by fxpc
 #2

Во-первых, это оффтопик, которому самое место в разделе новички, во-вторых, судя по вашим вопросам, вы не то что плаваете, а не знаете ничего даже поверхностно.

Зачем модифицировать код майнера? Если майнер вместо валидного содержимого блока будет майнить х*йню, то его блок никто не примет и мощность совершенно ни при чём, он конечно может майнить такие блоки сколько душе угодно и даже создать свой форк вроде бетховен кеша, но искать дебилов, которые примут данный консенсус придётся самому. Валидацию блока каждая нода проводит самостоятельно, если блок невалидный, то нода его не принимает, для этого в коде заложены требования к содержимому блока, иначе можно было бы наполнять блоки содержимым /dev/random и очень быстро загадить весь блохчейн чуть более чем полностью. Для консенсуса нужно, чтобы большая часть сети приняла блок. Если у майнера 51% мощности, то нет никакой нужды майнить невалидные блоки, достаточно майнить валидные и забирать всю награду себе, в результате вся ваша мнимая децентрализация пойдёт по пи*де, так как данный майнер сможет отбрасывать любые транзакции и совершать двойную трату, а вы с этим ничего не сможете сделать.

serg2017 (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0


View Profile
May 07, 2018, 04:47:04 PM
 #3

Во-первых, это оффтопик, которому самое место в разделе новички, во-вторых, судя по вашим вопросам, вы не то что плаваете, а не знаете ничего даже поверхностно.

Зачем модифицировать код майнера? Если майнер вместо валидного содержимого блока будет майнить х*йню, то его блок никто не примет и мощность совершенно ни при чём, он конечно может майнить такие блоки сколько душе угодно и даже создать свой форк вроде бетховен кеша, но искать дебилов, которые примут данный консенсус придётся самому. Валидацию блока каждая нода проводит самостоятельно, если блок невалидный, то нода его не принимает, для этого в коде заложены требования к содержимому блока, иначе можно было бы наполнять блоки содержимым /dev/random и очень быстро загадить весь блохчейн чуть более чем полностью. Для консенсуса нужно, чтобы большая часть сети приняла блок. Если у майнера 51% мощности, то нет никакой нужды майнить невалидные блоки, достаточно майнить валидные и забирать всю награду себе, в результате вся ваша мнимая децентрализация пойдёт по пи*де, так как данный майнер сможет отбрасывать любые транзакции и совершать двойную трату, а вы с этим ничего не сможете сделать.

Во-первых, спасибо за ответ.
Во-вторых, написав бы я в треде для «новичков» я бы получил в ответ ту же вату, которой описывают технические аспекты «заметкописатели», хотя, я и не постил здесь прям нарочно. (Перенесу, если это критично требуют правила).
Но вы в ответе, как раз затронули вектор, который интересует, с хорошими замечаниями!
Вектор с двойной тратой, не особо беспокоит, имхо на стадии становления просто хрен куда «потратишь» монеты ибо неликвид в принципе, и никто не будет заморачиваться (хотя вы технически во всем правы).
Вектор с увеличением вознаграждения за блок атакующим, озадачивает по факту только тем, что если он технически реализуем, то злоумышленник может под своим «форком» ускорить и слить скажем половину всей эмиссии за день.

Я, конечно же, ляпнул с кодом «майнера». Здесь скорее, как вы верно заметили, нужно говорить о коде «ноды/демона» в который атакующий вносит изменения, в духе “начиная с 100 блока выдавать награду не по 1 монете а по 10000».

Буду крайне признателен, если вы, слелаете исключение для новичка, и внесете ясность по следующему синтетическому примеру:

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

Если гипотеза верна, то является ли стратегия создания большого количества нод защитой от подобных действий?
A-Bolt
Legendary
*
Offline Offline

Activity: 2318
Merit: 2333


View Profile
May 07, 2018, 06:40:39 PM
 #4

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

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

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

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

serg2017 (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0


View Profile
May 07, 2018, 07:17:32 PM
 #5

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

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

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

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



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

Activity: 2318
Merit: 2333


View Profile
May 07, 2018, 07:44:10 PM
 #6

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

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

Activity: 16
Merit: 0


View Profile
May 07, 2018, 07:48:20 PM
 #7

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

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


Т.е. пресловутый double spending?
A-Bolt
Legendary
*
Offline Offline

Activity: 2318
Merit: 2333


View Profile
May 07, 2018, 08:09:57 PM
 #8

Т.е. пресловутый double spending?

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

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

Activity: 1316
Merit: 420


KTO EC/\U HUKTO?


View Profile
May 07, 2018, 09:38:44 PM
Last edit: May 07, 2018, 10:20:06 PM by fxpc
 #9

Иными словами, эмиссию моего оригинального блокчейна злоумышленник выпотрошить не сможет, но сможет намайнить в своей цепи гору монет, а затем отправить их куда-то и этот «новый баланс» будет учтен моей веткой и принят?
На*уя ему майнить в своей, когда он сможет выпотрошить вашу? У него 51% мощности и всю награду он будет забирать себе, а ваши блоки отбрасывать. Грабить себя или своих адептов и заниматься прочим онанизмом он сможет не то что без вашего блохчейна, но даже без компуктера. Очевидно что пока его блоки невалидны, вся подобная самодеятельность не окажет на содержание вашего блохчейна ровно никакого эффекта. Если ваш блохчейн принимает невалидные блоки, значит он ни*уя не работает.

serg2017 (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0


View Profile
May 08, 2018, 09:50:37 AM
 #10

Т.е. пресловутый double spending?

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

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


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

Activity: 1316
Merit: 420


KTO EC/\U HUKTO?


View Profile
May 08, 2018, 10:19:15 AM
 #11

Т.е. пресловутый double spending?

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

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


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


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

A-Bolt
Legendary
*
Offline Offline

Activity: 2318
Merit: 2333


View Profile
May 08, 2018, 11:58:34 AM
 #12

Разве cryptonote не защищен от transaction replay механизмом кольцевых подписей?

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

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

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

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

А бывает другая ситуация, когда хардфорк делается для создания новой криптовалюты, при этом обладатели ненулевого баланса в старой криптовалюте после хардфорка автоматически получают такой же баланс в новой криптовалюте. В этом случае, инициатор хардфорка, если он не долбоёб, предпринимает меры для отделения своих транзакций от чужих вышеописанным способом.
serg2017 (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0


View Profile
May 08, 2018, 12:32:39 PM
 #13

Т.е. пресловутый double spending?

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

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


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


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

Ну т.е. не особо опасное явление, т.к. атакующий в своей вилке может сформировать транзакцию, которую примет моя, только если он задействует выходы какого-то своего собственного бумажника с балансом, существовавшего в моей цепи до сплита. Если он после сплита переведет куда-то балансы в оригинальной цепи, то после отправки транзакции из его цепи с копией в мою, моя ее отвергнет, т.к. выходы в моей были уже израсходованы, и нажиться он не сможет.  В его цепи транзакции ему делать естественно никто кроме него не будет, т.к. там никого кроме него нет, и почистить никого в моей кроме себя он не сможет. Так?
Vladie
Newbie
*
Offline Offline

Activity: 42
Merit: 0


View Profile
May 09, 2018, 06:16:31 AM
 #14

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

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

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

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



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

Именно, много источников по топику есть
serg2017 (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0


View Profile
May 09, 2018, 08:05:27 PM
 #15

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

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

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

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



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

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

Вообще-то нет) A-Bolt ранее прояснил.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!