Что означает этот Pubkey?

Я только начал изучать Биткойн и вроде как знаком с p2pk и p2pkh. Я только что нашел этот ввод в обозревателе блокчейна Биткойн:

введите описание изображения здесь

Похоже, что Pkscript можно «решить» (я не очень хорошо разбираюсь в терминологии) с помощью чего-то, что hash160 - это 0b49fe...

ScriptSig выглядит немного более пугающе :)

Что именно делает ScriptSig? Как работает такой механизм оплаты?

Спасибо

Ответы (1)

Это сценарий P2SH (плата за хэш сценария), определенный в BIP 16 .

Сам scriptPubKeyпо себе он очень неинтересен: он берет элемент из scriptSig, хэширует его с помощью OP_HASH160, а затем сравнивает с 0b49fe...f1. Другими словами, якобы единственное, что нужно для того, чтобы потратить, — это знать некоторый фрагмент данных, хэш которого равен 0b49fe....f1.

Теперь BIP 16 изменил это. Если a scriptPubKeyимеет точно такую ​​же форму, как OP_HASH160 + 20-байтовый хэш + OP_EQUAL, то срабатывают специальные правила проверки P2SH:

  • Все операции scriptSigдолжны быть push-уведомлениями.
  • Последний толчок в scriptSig(тот, чей хэш, как мы знаем, равен 0b49fe...f1) снова принимается за сценарий (называемый redeemScript).
  • Этот сценарий выполняется, в качестве входных данных используются все, кроме последнего нажатия в файле scriptSig.

Таким образом, семантически вся операция эквивалентна простому использованию as redeemScript, scriptPubKeyно без необходимости сообщать об этом отправителю. Вместо этого отправителю может быть просто предоставлен короткий адрес P2SH (3...), который кодирует хэш redeemScript, а настоящий адрес раскрывается только во время траты времени.

В вашем примере redeemScriptкажется, что он кодирует политику мультиподписи 2 из 3: OP_2 <pubkey1> <pubkey2> <pubkey3> OP_3 OP_CHECKMULTISIG, а дополнительные элементы стека в scriptSigOP_0 (обходной путь для ошибки, из- OP_CHECKMULTISIGза которой из стека появляется слишком много элементов) плюс 2 подписи.