Я только начал изучать Биткойн и вроде как знаком с p2pk и p2pkh. Я только что нашел этот ввод в обозревателе блокчейна Биткойн:
Похоже, что Pkscript можно «решить» (я не очень хорошо разбираюсь в терминологии) с помощью чего-то, что hash160 - это 0b49fe...
ScriptSig выглядит немного более пугающе :)
Что именно делает ScriptSig? Как работает такой механизм оплаты?
Спасибо
Это сценарий 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
, а дополнительные элементы стека в scriptSig
OP_0 (обходной путь для ошибки, из- OP_CHECKMULTISIG
за которой из стека появляется слишком много элементов) плюс 2 подписи.