Я читал, что контрольные точки в биткойнах были удалены, потому что они не предотвращали каких-либо значимых атак.
Почему обычный контрольно-пропускной пункт не должен предотвращать атаки большинства? Например, если контрольная точка создается через каждые N блоков и (например) 3/4 хэш-мощности согласуются, нельзя ли использовать это в качестве механизма для создания постоянного подтверждения транзакций перед контрольной точкой? Предполагая, конечно, что клиенты будут проверять эти контрольные точки и обеспечивать их включение в действующую цепочку.
Проблема в том, что вы предполагаете, что атака большинства — это атака, которую можно предотвратить. Это не. Это фундаментальное нарушение предположений о безопасности.
Доказательство работы (PoW) предполагает, что большая часть хешрейта будет кооперироваться и сходиться в одной цепочке, потому что это наиболее выгодно с финансовой точки зрения. Когда это больше не так, PoW сломан, и мы должны просто перейти к чему-то другому, а не пытаться это исправить.
Вы можете подумать, что добавление контрольных точек помогает улучшить эту ситуацию, но учтите следующее:
Либо контрольные точки создаются для старых блоков (недельной или месячной давности), и в этом случае явно ничего не мешает. Недельная реорганизация полностью уничтожила бы валюту и доверие к ней, и этому не помешать.
Или контрольные точки создаются для последних блоков (возможно, дней или часов), и в этом случае они действительно могут влиять на то, какая цепочка принимается в сети при определенных обстоятельствах, но в то же время они эффективно заменяют консенсус на основе PoW на «разработчики-решают». "консенсус... что-то, что вообще не требует сложного однорангового протокола, так как эффективно разработчикам нужно запускать системы, чтобы держать систему под контролем.
Итак, либо контрольные точки имеют эффект — и изменяют предположения безопасности на неинтересные, либо нет — и это не имеет значения.
Чтобы ответить на ваш вопрос: основная причина удаления контрольных точек связана с путаницей, которую они создают. Они заставляют людей думать, что они являются частью модели безопасности системы (как показывает ваш вопрос). Это не относится к делу. Это было введено как необходимость для реализации оптимизации (пропуск проверки скрипта) и несвязанной атаки типа «отказ в обслуживании» (диск нового узла заполняется блоками низкой сложности во время синхронизации). После некоторых изменений в протоколе P2P (синхронизация на основе заголовков) нам больше не нужны контрольные точки для безопасного выполнения этих действий.
Нейт Элдридж
смущенный00
Уиллтек