Post
Topic
Board Кодеры
Re: Помогите разобраться с SegWit
by
amaclin1
on 12/09/2017, 05:02:47 UTC
Разберу оптимистический сценарий
1. Заносим scriptSig в стэк
pubKey->signature
Всё правильно. Только что значит "заносим в стек"? Кто его заносит?
Поймите: scriptSig - это тоже скрипт и его просто выполняют
Когда-то раньше не было ограничений на этот скрипт - можно было любые
конанды использовать. Потом решили что достаточно только пуш-операций.
Остальное тоже можно (вроде софт-форк ограничивающий множество
доступных в scriptSig операций не вводили), но нестандартно.

Quote
Повторяю вопрос. Каким должен быть scriptSig чтобы после выполнения сперва scriptSig а потом этого scriptPubKey
на вершине стека было бы ненулевое число? Ответ - одним словом.

Quote
Что-то тут неясно. Во первых scriptSig - это ж набор параметров, почему он должен выполнятся?
Во вторых чтоб на выходе scriptPubKey было ненулевое число, сценарий должен дойти до конца и вернуть
true. А это значит:

Каждый отдельный скрипт не обязан, чтобы на стеке после его выполнения было ненулевой значение на вершине.
Транзакция считается валидной если после последовательного выполнения scriptSig и scriptPubKey
на вершине стека ненулевое значение. Вам надо понять, что проверка транзакции - это именно что выполнение
scriptSig и scriptPubKey над одним объектом стека. scriptSig туда кладет, scriptPubKey - забирает и проверяет.

В первых версиях биткойна вообще проверка транзакции проходила так, что scriptSig и scriptPubKey склеивались
в один байтовый массив и выполнялись как один скрипт. Потом Сатоши допёр почему так нельзя делать.

Quote
1. scriptSig должен состоять из публичного ключа и сигнатуры
2. сигнатура должна соответсвовать дайджесту
Это только для расходования p2pkh-выходов.
Есть же еще другие типы выходов например pay-to-public-key
в этом случае scriptPubkey OP_CHECKSIG
(когда я пишу в угловых скобках - это значит операция:положить в стек)
и scriptSig соответствующий этому scriptPubkey - это просто

Quote
3. еще и полиси правило про один ненулевой элемент не мешало бы соблюсти.
Как на это ответить одним словом?
Причем тут OP_0 и scripthash?
Мы к сегвиту уже перешли. Рассматриваем как видит сегвит-транзакции обычная старая нода.