Где хранятся сценарии полного выкупа P2SH?

Скрипт полного погашения pay-to-script-hash/P2SH может иметь размер до 520 байт . Просто чтобы уточнить, хранится ли сценарий выкупа до раскрытия/траты в кошельке транжиры/Боба или где-то еще?

В руководстве разработчика сказано:

«Когда Боб хочет потратить результат, он предоставляет свою подпись вместе с полным (сериализованным) сценарием выкупа в сценарии подписи». ( https://bitcoin.org/en/developer-guide#p2sh-scripts )

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

Soroushjp заявляет:

«Сам сценарий выкупа открывается, сверяется с хешем сценария выкупа и оценивается во время транзакции расходов». ( http://www.soroushjp.com/2014/12/20/bitcoin-multisig-the-hard-way-understanding-raw-multisignature-bitcoin-transactions/ )

Антонпуолос заявляет:

«P2SH переносит бремя хранения данных для длинного сценария с вывода (который находится в наборе UTXO и, следовательно, влияет на память) на ввод (хранится только в блокчейне)». (2014:133)

(В этом вопросе почти то же самое: где пишется сценарий P2SH? )

(Существует непреднамеренная связь с этим вопросом «Хранение скриптов (смарт-контрактов) вне блокчейна» , поскольку это местонахождение скриптов выкупа.)

Просто чтобы уточнить, вы имеете в виду, где хранится полный скрипт того, кто его создает, пока он не решит потратить заблокированные им UTXO? (Все UTXO, которые содержат этот конкретный хэш в качестве выходного scriptPubkey)?
Да, буквально, где он хранится/хранится, пока не будет раскрыт для траты? На диаграмме это говорит компьютер Боба. Я просто хочу указать, где и как он хранится в типичном сценарии использования.

Ответы (1)

Вот рабочий пример, который закладывает основу для ответа на ваш вопрос:

  1. Алиса хочет заплатить Бобу, поэтому она спрашивает у Боба адрес.

  2. Боб хочет получить платеж на адрес P2SH.

  3. Итак, Боб создает redeemScript, а затем использует его для создания хэша redeemScript, который затем кодируется в адрес P2SH.

  4. Боб дает адрес P2SH Алисе, и Алиса платит по нему.

  5. Некоторое время спустя Боб хочет потратить эти биткойны Чарли.

  6. Боб создает транзакцию с входными данными, scriptSig которых содержит созданный ранее сценарий redeemScript.

Теперь ответ на ваш вопрос: Бобу нужно знать redeemScript в то время, когда он создает адрес P2SH для Алисы и когда он тратит биткойны Чарли. Он может, как вы предлагаете, хранить redeemScript в своем кошельке все это время, или он может регенерировать его по требованию из других данных в своем кошельке, или он может хранить его извне --- однако никто другой не хранит его для него автоматически и он не станет частью блокчейна, пока он не использует его для оплаты Чарли.

Я считаю, что Bitcoin Core делает простую вещь и сохраняет весь redeemScript в своем кошельке для адресов, созданных с помощью addmultsigaddressRPC.

Могут быть некоторые кошельки, которые используют что-то вроде BIP45 для регенерации адресов P2SH, когда это необходимо, из пар/комбинаций семян HD-кошелька.

BitPay Cosign может в некоторых случаях выносить наружу хранение адресов P2SH, хотя я действительно не уверен в этом.

Спасибо. Это дает много понимания. Я еще не думал (или не читал) об этих других подходах. Я обнаружил, что во многих учебниках и документации по биткойнам используются расплывчатые описания, такие как «поддерживается», «хранится», «удерживается» и т. д. Я нахожу много якобы «простых» / элементарных вопросов, например: «где хранится X-скрипт?» трудно получить конкретные ответы. (Вполне возможно, что я ищу не в том месте.) Я пойду читать о addmultsigaddressBIP45. Еще раз спасибо.