Не-не-не
Вы неправильно поняли мою запись.
OP_DUP OP_HASH160
OP_EQUALVERIFY OP_CHECKSIG - в этом скрипте значит
"положить 20 байтов в стек" то есть здесь пять операций делается
Разберу оптимистический сценарий
1. Заносим scriptSig в стэк
pubKey->signature
2. Дублируем верхний элемент стека
pubKey->pubKey->signature
3. Находим хеш публичного ключа
pubKeyHash->pubKey->signature
4. Помещаем хеш адреса в стек
addressHash->pubKeyHash->pubKey->signature
5. Сравниваем addressHash и pubKeyHash (функция OP_EQUAL)
true->pubKey->signature
6. Если валидация не прошла помечаем транзакцию как невалидную (процедура OP_VERIFY)
pubKey->signature
7. Проверяем подпись OP_CHECKSIG
true
Повторяю вопрос. Каким должен быть scriptSig чтобы после выполнения сперва scriptSig а потом этого scriptPubKey
на вершине стека было бы ненулевое число? Ответ - одним словом.
Что-то тут неясно. Во первых scriptSig - это ж набор параметров, почему он должен выполнятся? Во вторых чтоб на выходе scriptPubKey было ненулевое число, сценарий должен дойти до конца и вернуть true. А это значит:
1. scriptSig должен состоять из публичного ключа и сигнатуры
2. сигнатура должна соответсвовать дайджесту
3. еще и полиси правило про один ненулевой элемент не мешало бы соблюсти.
Как на это ответить одним словом?
Причем тут OP_0 и scripthash?