Я пытаюсь визуализировать, как выполняется типичный сценарий P2SH, поскольку я понимаю, что это особая форма сценария, которая выполняется немного иначе, чем стандартный сценарий.
До P2SH:
До того, как P2SH добавил новые правила проверки, узлы выполняли скрипт следующим образом:
Другими словами, старый узел будет просто счастлив проверить, соответствует ли HASH160 сценария выкупа HASH160 в scriptPubKey. Никакой проверки MULTISIG не потребуется, потому что OP_1 (TRUE) останется на вершине стека.
После P2SH:
С новыми правилами проверки я предполагаю, что скрипт выполняет что-то вроде этого:
Вопрос:
Создает ли проверка P2SH второй стек с использованием копии сценария погашения , а затем проверяет этот стек, прежде чем переходить к десериализации сценария погашения (и затем проверяет этот сценарий как обычно)?
Я надеюсь, что моя визуализация выполнения P2SH не вводит в заблуждение.
Создает ли проверка P2SH второй стек с использованием копии сценария погашения, а затем проверяет этот стек, прежде чем переходить к десериализации сценария погашения (и затем проверяет этот сценарий как обычно)?
Что-то вроде. На самом деле это не второй стек, а скорее копия исходного стека. После завершения выполнения scriptPubKey исходный стек до выполнения scriptPubKey восстанавливается, а затем выполняется redeemScript.
Поток примерно такой:
stack
stack
вstackCopy
stack
stack
наstackCopy
stack
и выполните как redeemScript, используяstack