Что мешает майнерам/узлам лгать о том, когда был добыт блок?

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

Функция использует отметку времени создания блока. Мне приходит в голову, что когда узлы вычисляют блоки, у них есть стимул завышать отметку времени (потому что тогда сложность будет пересчитана, чтобы обеспечить более быструю добычу новых блоков, что приведет к более высокой скорости, с которой этот узел получает вознагражденные биткойны). ).

В протоколе указано, что узлы должны отклонять блоки, временные метки которых выглядят недействительными (например, слишком далеко в будущем), но опять же он полагается на честность узлов.

Короче говоря, каковы стимулы для майнеров не завышать метки времени? Прав ли я, думая, что если бы большинство майнеров/узлов вступили в сговор, завышая + не отклоняя неверные временные метки, тогда вся биткойн-сеть начала бы генерировать биткойны быстрее?

Примечание. Мне кажется, что по мере того, как общий пул биткойнов увеличивается + ставка вознаграждения уменьшается вдвое каждые 4 года, это «ускорение» генерации блоков биткойнов оказывает все меньше и меньше влияния.

Ответы (2)

Отметка времени считается действительной, если она больше средней отметки времени предыдущих 11 блоков и меньше установленного сетью времени + 2 часа. «Время, скорректированное сетью» — это среднее значение временных меток, возвращаемых всеми подключенными к вам узлами.

Всякий раз, когда узел подключается к другому узлу, он получает от него метку времени UTC и сохраняет свое смещение от локального UTC узла. В этом случае время, скорректированное сетью, представляет собой локальный UTC узла плюс среднее смещение от всех подключенных узлов. Однако сетевое время никогда не корректируется более чем на 70 минут по сравнению с локальным системным временем.

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

Но протоколу все равно, сколько блоков добывается, он будет использовать только те длительности последних 2016 блоков, чтобы регулировать сложность, когда происходит это периодическое событие.

Как сеть узнает, что новый блок является «новым»? Если новый пользователь загружает всю цепочку блоков, почему не все эти старые блоки отклоняются? Огромное спасибо заранее!
@ user5107, загруженные блоки следуют тем же правилам проверки, но отметка времени, превышающая медиану последних 11 блоков, является относительной. Таким образом, при проверке блока 100 вы просматриваете временные метки блоков 89-99, чтобы проверить медиану.

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

Да, это звучит правильно. Интересно, что я думаю, что узлы, не занимающиеся майнингом, могут начать принимать блоки с неверными временными метками и не будут оштрафованы, пока +51% майнеров будут честными (самый длинный блокчейн будет состоять из действительных блоков). Затем, когда достигается некоторый порог неверных временных меток, не принимающих узлы майнинга, майнеры +51% могут начать генерировать недопустимые временные метки. Неправдоподобно, я знаю, но интересно подумать. В конце концов, я предполагаю, что такая атака подорвет доверие к биткойнам и, следовательно, выгоду от такой атаки.
51% или более майнеров могут вступить в сговор, чтобы изменить временные метки, но мой клиент все равно не примет их блоки. Так что нет, это не то, что майнеры могут контролировать.
Все майнеры заинтересованы в максимально возможном сохранении стоимости биткойнов. Так что идея о том, что майнеры сговорятся снизить стоимость биткойнов, кажется мне маловероятной.
На каком основании они отвергаются, в частности? У вас есть образец кода? Огромное спасибо заранее!