Скрипт полного погашения 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? )
(Существует непреднамеренная связь с этим вопросом «Хранение скриптов (смарт-контрактов) вне блокчейна» , поскольку это местонахождение скриптов выкупа.)
Вот рабочий пример, который закладывает основу для ответа на ваш вопрос:
Алиса хочет заплатить Бобу, поэтому она спрашивает у Боба адрес.
Боб хочет получить платеж на адрес P2SH.
Итак, Боб создает redeemScript, а затем использует его для создания хэша redeemScript, который затем кодируется в адрес P2SH.
Боб дает адрес P2SH Алисе, и Алиса платит по нему.
Некоторое время спустя Боб хочет потратить эти биткойны Чарли.
Боб создает транзакцию с входными данными, scriptSig которых содержит созданный ранее сценарий redeemScript.
Теперь ответ на ваш вопрос: Бобу нужно знать redeemScript в то время, когда он создает адрес P2SH для Алисы и когда он тратит биткойны Чарли. Он может, как вы предлагаете, хранить redeemScript в своем кошельке все это время, или он может регенерировать его по требованию из других данных в своем кошельке, или он может хранить его извне --- однако никто другой не хранит его для него автоматически и он не станет частью блокчейна, пока он не использует его для оплаты Чарли.
Я считаю, что Bitcoin Core делает простую вещь и сохраняет весь redeemScript в своем кошельке для адресов, созданных с помощью addmultsigaddress
RPC.
Могут быть некоторые кошельки, которые используют что-то вроде BIP45 для регенерации адресов P2SH, когда это необходимо, из пар/комбинаций семян HD-кошелька.
BitPay Cosign может в некоторых случаях выносить наружу хранение адресов P2SH, хотя я действительно не уверен в этом.
addmultsigaddress
BIP45. Еще раз спасибо.
ср-ги
Колман МакМахон