Как работают транзакции «Пай к скрипту?»?

BIP16 дает следующий пример, чтобы объяснить «Pay to Script Hash»:

scriptSig:    [signature] {[pubkey] OP_CHECKSIG}
scriptPubKey: OP_HASH160 [20-byte-hash of {[pubkey] OP_CHECKSIG} ] OP_EQUAL

Но я не понимаю, что здесь происходит. Я попытался выполнить сценарий на бумаге (и предположил, что части в квадратах /фигурных скобках рассматриваются как константы):

  1. [signature] и {[pubkey] OP_CHECKSIG} помещаются в стек
  2. OP_HASH160 хэши {[pubkey] OP_CHECKSIG}
  3. Тот же хеш происходит из scriptPubKey в стек
  4. Следовательно, OP_EQUAL дает True
  5. [signature] не проверяется вообще!

Если выполняется {[pubkey] OP_CHECKSIG}, скриптSig предоставит только True, что делает еще меньше смысла.

Чтобы задать четкий вопрос: как работают скрипты «Оплатить скрипт-хэш», особенно этот пример?

20 голосов | спросил jnnk 27 FriEurope/Moscow2013-12-27T17:26:26+04:00Europe/Moscow12bEurope/MoscowFri, 27 Dec 2013 17:26:26 +0400 2013, 17:26:26

1 ответ


6

Вы правы до сих пор, вы просто остановились, пока не закончили. Как говорит BIP16, он «определяет дополнительные правила проверки, которые применяются только к новым транзакциям» - в частности, «{сериализованный сценарий] выталкивается из начального стека, и транзакция снова проверяется с использованием всплывающего стека и десериализованного сценария как scriptPubKey ".

Итак:

1) Сценарий выгружается из стека, оставляя в стеке только [signature].

2) Добавлен десериализованный скрипт, оставив [signature] [pubkey] OP_CHECKSIG.

2) Сделка снова проверяется, то есть обычная проверка подписи происходит против указанного открытого ключа.

ответил David Schwartz 27 FriEurope/Moscow2013-12-27T18:05:25+04:00Europe/Moscow12bEurope/MoscowFri, 27 Dec 2013 18:05:25 +0400 2013, 18:05:25

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132