Post
Topic
Board Кодеры
Re: Помогите разобраться с SegWit
by
amaclin1
on 11/09/2017, 15:48:18 UTC
Так как значения забираются из стека в обратной последовательности, и функция почистит два элемента сигнатуру и публичный ключ,
то в стеке останутся остальные элементы. А первый операнд будет заменён на результат функции.
Предположу что да, транзакция будет валидной при условии соответсвия адреса и сигнатуры
Да. Лучше конечно называть "элемент на вершине стека", а то непонятно откуда мы считаем.
Транзакция валидна, но майнеры её не включат, так как по полиси-правилам (это нестрогое правило)
на стеке должен остаться только один ненулевой элемент.

Quote
По идее на первом обращении к функции, так как количество аргументов отличается от задекларированного.
Ну или как вариант если аргументы динамические то OP_EQUALVERIFY так как до OP_CHECKSIG  не дойдёт очередь.
Почему не дойдет? Проверка необходимого числа элементов в стеке происходит при выполнении каждой команды
Если в scriptSig только публичный ключ - то OP_EQUALVERIFY сработает, а OP_CHECKSIG сломается - ему
надо два аргумента, а в стеке только один
Если в scriptSig вообще пусто - то сломается на OP_DUP

Quote
OP_0 - добавляет пустой массив в стек.
Значит scripthash любой отличный от нуля. Ненулевое значение в стеке будет если scriptPubkey вернёт не ноль.
Не-не-не
Вы неправильно поняли мою запись.
OP_DUP OP_HASH160
OP_EQUALVERIFY OP_CHECKSIG - в этом скрипте
значит
"положить 20 байтов в стек" то есть здесь пять операций делается

OP_0 - тут две операции - положить в стек пустой массив
и положить в стек 20 байт (или 32 байта - я ведь не указал сколько разрядов у scripthash)
(Вероятность того, что результат хэш-функции нулевой настолько мала, что это можно не упоминать специально)
Но это scriptPubkey
Повторяю вопрос. Каким должен быть scriptSig чтобы после выполнения сперва scriptSig а потом этого scriptPubKey
на вершине стека было бы ненулевое число? Ответ - одним словом.