Как обрабатывается поддельная цепочка в биткойнах?

Интересно, как следующий сценарий обрабатывается в биткойне/крипто: допустим, у злого майнера 10% мощности майнинга монеты, и он тайно майнит блоки, в то время как реальная цепочка растет с высоты блока 900 до 1000. Он начинает с поддельного блока 995 и останавливается. в блоке 1005. На высоте блока 1000 (реальная цепочка) он публикует свою фальшивую цепочку. Теперь узел будет запрашивать/получать следующий блок. И теперь он получит блок номер 1001 от evilminer.

Что этот узел будет делать с ним? Я думаю, чтобы узнать, является ли цепочка, созданная evilminer, неверной или истинной, ему нужно будет загрузить блок с 1000 по 95, чтобы наконец увидеть, что блок 95 был поддельным.

Это правильно или есть другой способ, которым нода справится с этим?


person user3776738    schedule 24.10.2018    source источник
comment
Этот вопрос не о программировании. Вы можете получить помощь на нашем родственном сайте Bitcoin.   -  person Michael Hampton    schedule 25.10.2018


Ответы (1)


Описанная вами ситуация никогда бы не возникла.

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

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

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

Редактировать 1 : рассмотрите вычислительную мощность каждого участника сети и предположите, что, суммируя их, вы получаете 100. Теперь, если у вас есть 10 процентов от этой суммы, это означает вашу вероятность найти новый блок выше, чем другие, которые имеют меньшую вычислительную мощность, чем вы. Однако это не гарантирует, что вы обязательно найдете одноразовый номер первым.

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

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

Кроме того, этот процесс поиска одноразового номера повторяется для каждого блока. Таким образом, работа должна выполняться заново для каждого блока.

person arjunkhera    schedule 25.10.2018
comment
Хорошо, но как доказана мощность майнинга CHAIN? Я знаю, что для блоков есть сложность, которая устанавливается каждые 2016 блоков, но для цепочки?? - person user3776738; 25.10.2018
comment
@user3776738 user3776738 сложность блока определяет требуемую мощность майнинга. Вычислительная мощность, которую вы вкладываете в поиск хэша для блока, является мерой вашей мощности майнинга. Наличие 51% означает, что у вас больше вычислительной мощности, чем у всей сети вместе взятой. Проверьте здесь инфографическое объяснение того же. - person arjunkhera; 25.10.2018
comment
Но если он использует ту же сложность, что и основная цепочка, значит, его 10 блоков имеют ту же вычислительную мощность, которая необходима для того, чтобы быть законной, как и другие блоки. В каждом блоке должно быть что-то, что вычисляет сложность всех объединенных блоков. Таким образом, n-й блок должен иметь сумму сложности всех предыдущих блоков + n-й блок. Я не знаю о таком поле в блокхедере. - person user3776738; 25.10.2018
comment
@user3776738 user3776738 Кажется, вы не знаете, как работает биткойн. Вы прочитали статью, которую я связал? - person arjunkhera; 25.10.2018
comment
Я просто не понимаю, как высота блока не может быть изменена. Если кто-то утверждает, что это номер блока 1001. Как вы можете доказать, что он ошибается, потому что может быть, что ваша цепочка неправильная, поэтому вам нужно ее проверить, Правильно? - person user3776738; 25.10.2018
comment
Что вы имеете в виду под претензией? Знаете ли вы, как блок добавляется в цепочку? - person arjunkhera; 25.10.2018
comment
Блок принимается, если он находит одноразовый номер, удовлетворяющий сложности. Вы не можете просто так добавить свой блок в цепочку. Вы должны найти хеш, который удовлетворяет сложности, и это требует большой вычислительной мощности. В настоящее время для биткойнов эта сложность слишком высока, чтобы один пользователь мог рассмотреть возможность майнинга, поэтому существуют майнинговые пулы. - person arjunkhera; 25.10.2018
comment
Да, но вы можете майнить этот блок с мощностью хэширования 10% в 10 раз быстрее. - person user3776738; 25.10.2018
comment
@ user3776738 проверьте отредактированный ответ. Если у вас есть какие-либо другие вопросы, я перенесу это обсуждение в чат, поскольку политика SO заключается в предотвращении расширенных обсуждений в чате. - person arjunkhera; 25.10.2018
comment
Извините, но вы так и не поняли моего вопроса. - person user3776738; 25.10.2018
comment
Давайте продолжим обсуждение в чате. - person arjunkhera; 25.10.2018