Рассмотрим следующий сценарий.
Алиса, Кэрол и Боб создают и финансируют сценарий со следующими правилами: если сейчас, alice pubkey, bob pubkey else if now+500 блоков, bob pubkey, carol pubkey else if now+1000 блоков, ЛЮБОЙ МОЖЕТ ПОТРАТИТЬ
Вопрос в том, может ли кто-нибудь (кроме Алисы, Боба и Кэрол, у которых есть скрипт выкупа) сказать, взглянув на адрес (хэш скрипта), что его конечным условием является ЛЮБОЙ МОЖЕТ ПОТРАТИТЬ, и майнеры, например, решат не включать его в блок до тех пор, пока не будет проходит последний nLockTime, и майнер может потребовать весь результат, а не только комиссию.
Основываясь на моем текущем понимании, просто взглянув на собственный адрес P2WSH (хэш скрипта), он ничего не скажет вам о скрипте выкупа, или я ошибаюсь?
Кроме того, могут ли майнеры узнать окончательное условие, если вывод тратится во второй nLockTime, например, когда Боб и Кэрол пытаются потратить, они также должны предоставить сценарий выкупа, что позволяет майнерам увидеть, что, если они подождут еще 500 блоков, они могут потребовать весь вывод, а не только плату, и до тех пор не включать ее в блок. Спасибо.
Поскольку на RIPEMD160 и SHA256 неизвестны атаки с прообразом, невозможно узнать, какое содержимое redeemScript передается только scriptHash. Так что да, невозможно узнать, какие условия необходимо провести с адреса, учитывая только адрес. Это один из основных моментов использования scriptHashes: он скрывает redeemScript от других, пока он не будет потрачен.
Кроме того, могут ли майнеры узнать окончательное условие, если вывод тратится во второй nLockTime, например, когда Боб и Кэрол пытаются потратить, они также должны предоставить сценарий выкупа, что позволяет майнерам увидеть, что, если они подождут еще 500 блоков, они могут потребовать весь вывод, а не только плату, и до тех пор не включать ее в блок.
Да, в настоящее время это проблема. Если транзакция будет подписана и передана в эфир, будет раскрыт сценарий погашения, и майнеры смогут увидеть условие ANYONECANSPEND, и в этом случае они могут быть заинтересованы в том, чтобы не позволить транзакции подтвердиться. Это проблема.
Однако этот вопрос не без решения. Это именно то, что исправляет MAST (BIP 114) . В основном непосещенные ветки в скрипте скрыты за хешем. Таким образом, если бы MAST был доступен и его использовал redeemScript, то неиспользованные условия (например, условие ANYONECANSPEND) были бы скрыты за другим хешем, и поэтому сторонние наблюдатели не знали бы об этом.
Taproot — это расширение MAST, которое добавляет дополнительную конфиденциальность, делая так, что наблюдатели даже не будут знать, что были другие ветки, которые не использовались.
пебвиндкрафт