Критика неустойчивых разветвлений

Неустойчивые разветвления, основанные на кодах операций NOP, не вызывают почти никаких возражений. Коды NOP были введены в язык Bitcoin Script именно с этой вполне определенной целью: обеспечение обновлений без нарушения нормального режима работы.

Тем не менее многие разработчики обеспокоены тем, что другие методы обновлений с использованием неустойчивых разветвлений приводят к неприемлемым компромиссам. Ниже перечислены основные пункты, по которым критикуются неустойчивые разветвления:

унаследованные (из прошлого) технические ограничения (technical debt) — поскольку неустойчивые разветвления технически более сложны, чем обновления с использованием устойчивых разветвлений, они привносят унаследованные (из прошлого) технические ограничения (technical debt). Этот термин обозначает постоянное увеличение в будущем стоимости сопровождения кода из-за компромиссов в процессе проектирования ПО, принятых в прошлом (на начальной стадии создания ПО). В свою очередь, сложность кода увеличивает вероятность возникновения в нем ошибок и уязвимостей в подсистеме защиты;

ослабление условий валидации — клиенты без обновления воспринимают транзакцию как корректную (валидную) без проверки измененных правил консенсуса. В действительности такие клиенты не выполняют проверку валидности с использованием полного набора правил консенсуса, так как вообще не знают о новых правилах. Это относится не только к обновлениям на основе кодов операций NOP, но и ко всем прочим типам обновлений с использованием неустойчивых разветвлений;

необратимость обновлений — поскольку неустойчивые разветвления создают транзакции с дополнительными ограничениями на основе правил консенсуса, обновления становятся практически необратимыми. Если обновление с использованием неустойчивого разветвления отменить после его активации, то все транзакции, созданные по новым правилам, станут некорректными по старым правилам, что приведет к безвозвратной потере денежных средств. Например, если CLTV-транзакция проверяется по старым правилам, то ограничения с блокировками по времени отсутствуют, и данные этой транзакции могут быть израсходованы в любое время. Таким образом, критики настаивают на том, что некорректное неустойчивое разветвление, которое должно быть отменено из-за программной ошибки, почти всегда будет приводить к потере денежных средств.