Идея, которая имеет подойти в прошлое является то, что различные сокращения модели безопасности в Bitcoin может быть практически безопасным, если мы имели компактные доказательства мошенничества.
Сегодня, к примеру, SPV узлы не проверять ничего. Так что, если есть больше _invalid_ цепь, SPV узлы будут по-прежнему следовать за ним. Это экзистенциальный риск для Bitcoin в будущем, если SPV узлы становятся очень очень популярны, и почти никто не работает полный узлов: В какой-то момент работает полный узел может быть даже глупо, потому что вы будете отклонять цепь, что экономическое большинство (работает SPV узлы) принимает.
Однако, если вместо этого можно было построить небольшие сообщения о том, что узел SPV может инспектировать и затем быть полностью уверенным в том, что блок нарушил правила, то безопасность будет восстановлено: недопустимый цепь будет принята только до тех пор, пока все SPV узлы сети могут быть разделены от всего честного nodes- там только действительно нужно быть внимательным один честный узел во всем мире для достижения безопасности, до тех пор пока его истинность не может подвергаться цензуре.
Изменение Bitcoin, чтобы сделать возможным компактные мошенничества доказательства довольно прямо вперед. Большая проблема в том, что с практической точки зрения инженера эта идея является очень рискованной: Обработка мошенничества доказательства, по крайней мере так сложно, как проверки блока, и мы знаем, что люди получают блок проверку неправильно уже. Если существуют эти доказательства, то не было бы никаких оснований для шахтера когда-либо попытаться создать мошенничества. В результате они никогда не будут использоваться. Если они никогда не используются в реализации будет неправильно ... если не в ссылке, то во всех альтернативных реализаций. Некоторые реализации могут быть уязвимы для неверных доказательств мошенничества, которые нарушают консенсус даже при отсутствии мошенничества, другие могут не отказаться от некоторых видов мошенничества. В принципе любая непоследовательность в этом обычно мертвый код точка злоумышленник может использовать, чтобы разорвать сеть, или он может просто привести к сбою случайно.
Очевидно, что тестирование программного обеспечения и этажерка адрес этого рода озабоченность в теории. Но на практике мы уже видим людей, пишущих альтернативных реализаций, которые раздвоенные на ранее существовавшего тестового кода. Хорошее тестирование только полный ответ, если предположить, идеализированные сферические разработчик. Полностью исключает возможность ошибки в этих системах через тестирование является недопустимой в любом случае, потому что входной пространство слишком велико, чтобы исчерпать.
Таким образом, несмотря на потенциальные выгоды, я думаю, что многие люди не были супер взволнованы как практичная идея.
Я, наконец, наткнулся на ретроспективно очевидный способ сделать такой дизайн более безопасным: Вы требуют, чтобы все блочные решения фиксации двух различных блоков кандидатов. Один из кандидатов блоков должны быть поддельными. Мошеннический блок устраняется путем мошенничества доказательства. Узлы, которые не обрабатывают мошенничество доказательства правильно будут не в состоянии определить, какой из двух является правильной.
Это не позволит устранить все риски, и она имеет значительные накладные расходы, если используется полностью серьезно, но, по крайней мере, устранить озабоченность, что доказательство код будет абсолютно нефункциональных в связи с неиспользованием.