Для расширения, когда у вас есть "подпись" часть сделки, для того, чтобы подтвердить это, необходимо сцепить выходной сценарий, который он тратит.
Поэтому выходной сценарий может быть:
OP_DUP OP_HASH160 XXXXXX OP_EQUALVERIFY OP_CHECKSIG
Этот сценарий говорит дублирует верхний элемент стека, хэш его, поместить этот XXX на вершине стеки, убедитесь, что две верхние элементы стека равны и уронить их, если они (или аннулирование ОГО), а затем выполнить проверку подписи на две верхние оставшиеся элементы стека.
Поэтому, когда вы проводите его, площадь подписи содержит подпись и открытый ключ. Таким образом, стек выглядит следующим образом:
Публичных
подпись
Тогда выходной скрипт exectued. Во-первых, дублировать верхний элемент стека, так что теперь стек это:
Публичных
Публичных
подпись
Теперь, hash160 верхний элемент стека:
XXXX хэш
Публичных
подпись
Теперь нажмите XXXX на стек
XXXX
XXXX
Публичных
подпись
Теперь убедитесь, что две верхние элементы равны, и удалить их из стека, если они есть. Они, так что теперь стек:
Публичных
подпись
Теперь сделайте OP_CHECKSIG, который предполагает два верхних элементы стека являются открытым ключом и подпись, и подтверждает подпись. Если это не удается, то ТЙ является недействительным, если он проходит, он бросает их и помещает номер один в стеке. Так что теперь стек:
1
А сценарий закончен. Если сценарий еще не удалось, и 0 / Ложь не в верхней части стека, когда он закончил, то сделка действительна.
В транзакции выше только подписи, а не открытого ключа, был в области подписи. Это означает, что выходной сценарий, что это расходы, скорее всего, "Публичный, OP_CHECKSIG", Таким образом, чтобы провести его, все, что вам сделать, это предоставить подписи, а стек просто pukey + подпись и функция OP_CHECKSIG работает.
Этот формат известен как "платить открытый ключ", В настоящее время мы используем "платить открытый ключ хэша" который является форматом я использовал мой пример с: OP_DUP OP_HASH160 XXXX OP_EQUALVERIFY OP_CHECKSIG. И тогда площадь подпись должна обеспечить подпись и открытый ключ для того, чтобы скрипт для выполнения должным образом. Для этого не нужно делать, что в вашем transaciton, потому что открытый ключ был на выходе. Но в новом формате, открытый ключ не указан в список, только это хэш, так что вы предоставляете Публичный ключ самостоятельно, а затем сценарий хэш его и проверяет, что он соответствует хэшу выходного перед запуском функции OP_CHECKSIG.
Это сделано таким образом, так что открытые ключи могут оставаться скрытыми, прежде чем тратить деньги, так что в случае эллиптических кривых скомпрометированы и секретный ключ может быть получен из открытого ключа, ключ все еще скрыты хэш, и вы можете ждать Bitcoin раскатать исправление.