Сатоши пишет в нижней части страницы 3 своего официального документа: «Если два узла одновременно транслируют разные версии следующего блока, некоторые узлы могут получить сначала один или другой. В этом случае они работают с первым полученным, но сохраните другую ветку на случай, если она станет длиннее». Здесь кажется, что правильная цепочка самая длинная, хотя, возможно, Сатоши просто немного небрежно формулировал.
Однако я читал в других местах, что узлы выбирают правильную цепочку в Биткойне, выбирая цепочку, представляющую наибольшую работу (или, другими словами, цепочку, которую труднее всего отменить). Я назову это самой прочной цепью. Это не обязательно то же самое, что и самая длинная цепочка, поскольку, например, можно представить себе блок, в котором требуется гораздо больше хэшей, чтобы найти действительный одноразовый номер, чем в двух других блоках с гораздо более простым уровнем сложности. Этот обмен стеками - одно из мест, где я это читал.
Вопрос 1 : Какой правильный метод используют узлы для определения правильной цепочки, самой длинной цепочки или самой сильной цепи?
Мой второй вопрос более актуален, если ответ на вопрос 1 заключается в том, что правильная цепочка — это самая сильная цепочка. Это относится к потерянным блокам.
Если правильная цепочка представляет собой наибольшую работу, то почему потерянные блоки представляют собой такую проблему? Кажется, что если нода решает блок и транслирует его, то все узнают об этом за считанные секунды, а затем могут начать добычу нового блока без лишних усилий. Даже если 2 майнера решат блок одновременно (почти), большинство блоков увидят два новых блока и выберут тот, у которого меньший хэш заголовка (потому что более низкие хэши найти труднее). Кажется, что узлы должны прийти к консенсусу за считанные секунды, если правильная цепочка выбрана самой сильной (а не самой длинной) цепочкой. Единственное время, которое майнер может потратить на работу с неправильной цепочкой, — это время, потраченное на майнинг между получением решенного блока, который вскоре после этого заменяется другим решенным блоком с немного более низким хэшем.
Вопрос 2 : Блоки-сироты — большая проблема для майнеров? Если бы время генерации блока составляло 1 минуту, были бы потерянные блоки гораздо большей проблемой?
Самая «длинная» цепочка — это та, в которой больше всего работы . Работа цепочки равна ожидаемому количеству хэшей, которое потребуется для того, чтобы кто-то воспроизвел цепочку из того же количества блоков и точно таких же шагов сложности. Таким образом, в настоящее время каждый блок добавляет в цепочку около 2 66 хэшей, потому что для решения блока с текущей сложностью требуется в среднем ~ 2 66 хэшей. Блоки с меньшей сложностью добавляют меньше работы. (Текущая общая работа в цепочке составляет около 2 80 .) Однако два блока в одном и том же периоде сложности всегда добавляют к цепочке одинаковое количество работы. Блок с более низким хэшем не считается лучше, чем блок с более высоким хэшем.
Сатоши изначально не понимал, что выбор правильной цепочки путем простого подсчета блоков позволяет проводить чрезвычайно простые атаки. Версия 0.1 просто считала блоки. Вот почему в газете просто написано «самый длинный». Идея «цепной работы» была добавлена чуть позже.
Разрешение сирот, как вы предлагаете, может на самом деле сделать сирот более вероятным, потому что в некоторых случаях майнеры будут заинтересованы в том, чтобы попытаться заменить самый последний блок, а не расширить его, особенно прямо перед большой корректировкой сложности или когда самый последний блок содержит много комиссий.
Блоки-сироты случаются время от времени. Элигиус сообщает о 2% потерянных блоков. Они действительно были бы гораздо более распространенными, если бы целевое время составляло 1 минуту, поскольку блоки генерировались бы быстрее и, следовательно, было бы больше возможностей для конфликтов между блоками.
морсекодер
морсекодер
онимос
онимос
морсекодер
онимос
морсекодер
Властимил Овчачик
Дайра Хопвуд
Цзиньхуа Ван