Реальная история.
Я думаю, что мы должны запретить УЮ податливость со следующим подходом:
1. Сделайте что-нибудь, кроме P2KH и мульти-сиг P2SH нестандартное
2. Изменение версии транзакции до 2.
3. Определить наиболее значащий бит версии сделки как "податливость бит"
4. Если ковкость бит = 0 и версия = 2, следующие новые правила применяются (с мягкой вилкой). Для других комбинаций, существующие правила (т.е.. Тягучесть допускается.)
5. Использование "низкий S" , как ковкость выключатель в подписи (например,
https://github.com/bitcoin/bitcoin/commit/e0e14e43d9586409e42919f6cb955540134cda2a )
6. Для P2KH, то scriptSig должен и должен только нажать 2 значения к столбу, без каких-либо других действий,
7. Для P2SH, то scriptSig должен и должен только нажать п значение к столбу (в дополнении к сериализованному скрипту), для п-или-м multisig.
8. Ковкости допускаются для любых нестандартных ОГО даже ковкость бит = 0.
Таким образом, пользователь может выбрать, хотят ли они, чтобы податливость. Любые будущие обновления протокола будут использовать новую версию транзакции, так что правила против податливости не будут применяться.
(P.S.
Если бы я узнал Bitcoin раньше, я бы предложил аналогичный подход к миграции P2SH. P2SH создал постоянный исключительный случай в интерпретации OP_HASH160, и что теперь необратима без hardfork. Я думаю, что лучший способ заключается в определении "P2SH бит" в версии транзакции и позволяют людям выбирать К сожалению, это не будет работать без добавления дополнительного количества сложности. Кстати, это не по теме.)