Я могу прочитать в вики BIP0016 спецификацию P2SH.
Транзакции, которые компенсируют эти минусы pay-to-script, считаются стандартными только в том случае, если сериализованный скрипт, также называемый redeemScript, сам по себе является одним из других стандартных типов транзакций.
Правила проверки этих недостатков при ретрансляции транзакций или рассмотрении их для включения в новый блок следующие:
Проверка завершается ошибкой, если в scriptSig есть какие-либо операции, кроме операций "push data". Выполняется обычная проверка: создается начальный стек из подписей и {сериализованного сценария}, вычисляется хэш сценария, и проверка немедленно завершается неудачей, если он не совпадает с хэшем в точке выхода. {сериализованный скрипт} извлекается из исходного стека, и транзакция снова проверяется с использованием извлеченного стека и десериализованного скрипта в качестве scriptPubKey. Правила проверки этих недостатков при ретрансляции транзакций или рассмотрении их для включения в новый блок следующие:
Проверка завершается ошибкой, если в scriptSig есть какие-либо операции, кроме операций "push data". Выполняется обычная проверка: создается начальный стек из подписей и {сериализованного сценария}, вычисляется хэш сценария, и проверка немедленно завершается неудачей, если он не совпадает с хэшем в точке выхода. {сериализованный скрипт} извлекается из исходного стека, и транзакция снова проверяется с использованием извлеченного стека и десериализованного скрипта в качестве scriptPubKey. ...
Но в книге Антонопулоса я могу прочитать
До версии 0.9.2 клиента Bitcoin Core функция Pay-to-Script-Hash была ограничена стандартными типами сценариев транзакций биткойнов с помощью функции isStandard(). Это означает, что сценарий выкупа, представленный в транзакции расходов, может быть только одного из стандартных типов: P2PK, P2PKH или мультиподпись, за исключением RETURN и самого P2SH. Начиная с версии 0.9.2 клиента Bitcoin Core транзакции P2SH могут содержать любой допустимый сценарий, что делает стандарт P2SH более гибким и позволяет экспериментировать со многими новыми и сложными типами транзакций.
Теперь я использую 0.19.0, и я могу создать собственный скрипт и полагаться на него в своей среде regtest. вопрос такой: Может BIP0016 устарел? И если да, то где посмотреть, какой BIP устарел?
Как правило, изменения правил политики не указываются в BIP. В любом случае они зависят от индивидуальных клиентов.
BIP16 не устарел, хотя его описание правил стандартизации в Bitcoin Core уже устарело. Однако его правила консенсуса (то есть то, что действительно в блоке, а не то, что будет передано в виде отдельных транзакций) не изменились с момента его активации в 2012 году — все остальное было бы хардфорком.
Что касается политики в Bitcoin Core, то в версии 0.10.0 (2014 г.) смягчены стандарты для расходов P2SH, что позволяет любому сценарию использовать до 15 проверок подписи. Несколько позже были внесены изменения в стандартизацию (в том числе каждый софтфорк, затронутый скриптами (CLTV, CSV, Segwit), сопровождался созданием соответствующих стандартов расходов), но не столь фундаментальные.
Сегодня (Bitcoin Core v0.19.0) правила стандартизации расходов P2SH включают:
обезьянаПользователь
acceptnonstdtxn
в своей конф.Питер Уилле
обезьянаПользователь
обезьянаПользователь
Питер Уилле