Что такое временная метка Bitcoin?
Если на Coinmarketrate.com углубиться в описание проекта Bitcoin, то вы узнаете, что его изобретатель, Сатоши Накамото, написал в «whitepaper», что цель временной метки — устранить угрозу двойных расходов. Этот параметр является фундаментальной частью процесса майнинга, в котором майнеры получают компенсацию за свою работу по поиску нового блока.
Причина этого заключается в том, что временная метка используется для определения того, насколько сложным был блок и сколько времени заняла его добыча, известная как время блока.
Для обеспечения точного расчета сложности, эти временные метки используются вместо фактического времени.
Когда создается новый блок Bitcoin, используются 2 временные метки:
- В заголовке блока, который добавляется майнером.
- Второй для определения времени создания блока.
Хотя теоретически оба времени должны быть одинаковыми, всегда есть небольшой риск, что майнер ошибся при вводе временной метки или что он просто делает это специально.
К счастью, есть два способа предотвратить это, о которых мы расскажем далее в этой статье. Важно то, что первое позволяет не задерживать время блока, а второе — не забегать слишком далеко вперед в будущее.
В конечном итоге, они оба хотят сохранить целостность блокчейна криптовалюты — преимущество данной технологии.
Проблема времени в Bitcoin
Можно подумать, что время в сети Биткойн не является очень важным вопросом, поскольку блоки возникают последовательно и упорядочены один на другой. Все благодаря хэшам, которые указывают на предыдущий.
Мы знаем, что блоки Биткойна содержат транзакции, дерево Меркле и другие параметры, такие как хэш самого блока.
Этим мы хотим сказать, что этого достаточно для транзакций и системы консенсуса. Однако существует механизм, для работы которого необходимо еще одно значение — сложность майнинга.
Если к сети присоединяется много майнеров, шансы найти новый блок возрастают, что приводит к сокращению времени работы блока. Или если майнеров меньше, чем раньше, время блока будет короче. Все это делает работу сети непредсказуемой, что требует решения, которое не нуждается в центральном органе для урегулирования этого вопроса.
Для этого сложность добычи корректируется каждые 2 недели, пытаясь увеличить или уменьшить ее в зависимости от того, медленнее или быстрее должны появляться блоки.
Идея Биткойна заключается в том, что их время должно составлять 10 минут, и для достижения этой цели временная метка блоков используется для расчета среднего количества блоков, появившихся за этот двухнедельный период.
Правила безопасности временной метки блока
Мы знаем, что при создании нового блока существует 2 типа временных меток. И мы также знаем, что причина их наличия в том, что майнер может лгать. У майнера есть стимул лгать о времени создания блока, особенно если он сообщает, что блок был добыт в будущем.
Майнер может сказать, что на добычу блока Биткойна ушло 15 минут, вместо обычных 10 минут.
Если так будет продолжаться в течение 2 недель, что является продолжительностью корректировки майнинга, то при расчете будет сделан вывод, что блоки занимают в среднем 15 минут, что, как мы знаем, не соответствует действительности.
Затем, на следующий период, сложность корректируется в сторону уменьшения, что увеличивает прибыль майнеров, которые теперь могут добывать блоки быстрее. Это также приводит к тому, что время ВТС, все дальше и дальше уходят от реальности.
Чтобы решить эту проблему или хотя бы смягчить ее, Биткойн использует два механизма:
- Правило Median Past Time (MPT): метка времени должна опережать медиану последних 11 блоков. Медиана этих 11 блоков означает, что может быть сгенерирован форк до 6 блоков, и время все равно не будет отставать. Это правило также играет на идее о том, что кто-то с 10% хешрейта сети будет иметь 0,1% шансов отменить транзакцию с 6 коммитами.
- Правило времени будущего блока: метка времени не может быть более чем на 2 часа в будущем на основе константы MAX_FUTURE_BLOCK_TIME, относительно медианы других узлов. Другой защитный механизм заключается в том, что максимально допустимая разница между временем, предоставляемым узлами, и системными часами составляет 90 минут.
Следует отметить, что это правило не является абсолютным консенсусом, но блоки со слишком длинным периодом времени, в будущем могут стать действительными по истечении определенного срока
Правило № 1 гарантирует, что блокчейн продолжает двигаться вперед во времени, а правило № 2 гарантирует, что блокчейн не продвинется слишком далеко вперед.
Правда, правила не являются непогрешимыми, поскольку майнер, например, может установить временную метку далеко вперед, пока она находится в пределах двухнедельного периода. Но даже в этом случае последствия не будут слишком серьезными.
Поскольку 2 часа — это малая часть от 2 недель, влияние попыток манипулирования сетью будет несколько ограниченным.
Если бы он сделал что-то подобное, это означало бы, что 10-минутный блок времени стал бы длиться 9 минут и 54 секунды в течение двух недель после корректировки сложности. Более того, это будет одноразовое изменение, поскольку после введения двухчасового времени оно не может быть введено снова без перехода на обратное время.
Кроме того, необходимо понимать, что этот 2-часовой период важен для того, чтобы майнеры были уверены, что они добавили достаточный запас времени на будущее. Это делается для того, чтобы узел, получив новый блок, не отверг его из-за того, что его временная метка раньше текущего времени.
На сегодняшний день эти 2 правила доказали свою эффективность, когда речь идет о предотвращении манипуляций майнеров с временными метками с целью извлечения выгоды.
Bitcoin Cash: теоретические проблемы времени блока
Созданная в августе 2017 года, Bitcoin Cash является альтернативной криптовалютой, возникшей в результате форка ВТС. Его основной целью была возможность увеличить размер блока.
Одним из самых больших опасений разработчиков Bitcoin Cash в момент его создания было то, что к проекту присоединится не так много майнеров, и поэтому время между открытием одного блока и другого будет слишком большим.
В результате было введено так называемое чрезвычайное затруднительное регулирование (Emergency Difficult Adjustment, EDA), которое должно было облегчить эту проблему.
Мы не будем здесь подробно обсуждать, как работает этот алгоритм, но важно сказать, что этот механизм был очень сложным, и в итоге оказался принципиально несовершенным.
В частности, алгоритм должен был анализировать, не появилось ли определенное количество блоков в течение определенного периода, и в этом случае сложность должна была быть снижена.
Проблема заключалась в том, что эта политика была слишком агрессивной, поскольку если она обнаруживала очень большую разницу между блоками, то корректировка сложности была слишком большой. Уникальная возможность для майнеров манипулировать.
Они намеренно оставляли большие периоды времени, когда блок не добывался, что приводило к очень резким изменениям сложности добычи, за которыми следовали периоды низкой сложности, когда блоки добывались с большой частотой. Таким образом, сеть стала нестабильной.
В результате сбоя было добыто больше блоков Bitcoin Cash, чем ожидалось, и прибыль майнеров в эти периоды увеличивалась. В результате Bitcoin Cash опередил Bitcoin более чем на 5000 блоков, и это преимущество сохраняется за ним до сих пор.
Через несколько месяцев, в ноябре 2017 года, было выпущено исправление. EDA была удалена, и заменена новой системой регулировки сложности, гораздо более простой, которая работала каждые 24 часа.
Однако, это все же отличается от того, как работает Биткойн, с его 2-недельным периодом. Bitcoin Cash имеет более динамичную и быструю систему.
Хотя в краткосрочной перспективе это может означать большую волатильность при корректировке сложности, монета также быстрее адаптируется к любым изменениям сложности, в то время как Биткойну требуется больше времени для корректировки.
В отличие от Bitcoin, где 2 часа не были достаточно большим промежутком, чтобы оказать огромное влияние на сложность, Bitcoin Cash является таковой.
Время 2 часа за 24 намного больше, чем 2 часа за 2 недели. Это эквивалентно сокращению времени блока с 10 минут, до 9 минут и 10 секунд.
Потенциально это может быть значительным и привести к изменению рентабельности майнинга, если злоупотреблять этим. Поэтому Bitcoin Cash уязвим или, по крайней мере, более уязвим, чем Bitcoin, для манипуляций с временными метками.
Хорошая новость заключается в том, что, хотя он более уязвим, он также может решить проблему гораздо быстрее, что делает последствия этой атаки менее разрушительными.