Кто-нибудь может определить окончательное состояние скрипта, просто взглянув на хэш скрипта, без данных о выкупе?

Рассмотрим следующий сценарий.

Алиса, Кэрол и Боб создают и финансируют сценарий со следующими правилами: если сейчас, alice pubkey, bob pubkey else if now+500 блоков, bob pubkey, carol pubkey else if now+1000 блоков, ЛЮБОЙ МОЖЕТ ПОТРАТИТЬ

Вопрос в том, может ли кто-нибудь (кроме Алисы, Боба и Кэрол, у которых есть скрипт выкупа) сказать, взглянув на адрес (хэш скрипта), что его конечным условием является ЛЮБОЙ МОЖЕТ ПОТРАТИТЬ, и майнеры, например, решат не включать его в блок до тех пор, пока не будет проходит последний nLockTime, и майнер может потребовать весь результат, а не только комиссию.

Основываясь на моем текущем понимании, просто взглянув на собственный адрес P2WSH (хэш скрипта), он ничего не скажет вам о скрипте выкупа, или я ошибаюсь?

Кроме того, могут ли майнеры узнать окончательное условие, если вывод тратится во второй nLockTime, например, когда Боб и Кэрол пытаются потратить, они также должны предоставить сценарий выкупа, что позволяет майнерам увидеть, что, если они подождут еще 500 блоков, они могут потребовать весь вывод, а не только плату, и до тех пор не включать ее в блок. Спасибо.

Я думаю, что это интересный или, возможно, противоречивый вариант использования: если N+1000, ЛЮБОЙ МОЖЕТ ПОТРАТИТЬ — майнер также будет «ЛЮБЫМ»? Или вы имеете в виду конкретных людей, которых сможете потратить?

Ответы (1)

Поскольку на RIPEMD160 и SHA256 неизвестны атаки с прообразом, невозможно узнать, какое содержимое redeemScript передается только scriptHash. Так что да, невозможно узнать, какие условия необходимо провести с адреса, учитывая только адрес. Это один из основных моментов использования scriptHashes: он скрывает redeemScript от других, пока он не будет потрачен.

Кроме того, могут ли майнеры узнать окончательное условие, если вывод тратится во второй nLockTime, например, когда Боб и Кэрол пытаются потратить, они также должны предоставить сценарий выкупа, что позволяет майнерам увидеть, что, если они подождут еще 500 блоков, они могут потребовать весь вывод, а не только плату, и до тех пор не включать ее в блок.

Да, в настоящее время это проблема. Если транзакция будет подписана и передана в эфир, будет раскрыт сценарий погашения, и майнеры смогут увидеть условие ANYONECANSPEND, и в этом случае они могут быть заинтересованы в том, чтобы не позволить транзакции подтвердиться. Это проблема.

Однако этот вопрос не без решения. Это именно то, что исправляет MAST (BIP 114) . В основном непосещенные ветки в скрипте скрыты за хешем. Таким образом, если бы MAST был доступен и его использовал redeemScript, то неиспользованные условия (например, условие ANYONECANSPEND) были бы скрыты за другим хешем, и поэтому сторонние наблюдатели не знали бы об этом.

Taproot — это расширение MAST, которое добавляет дополнительную конфиденциальность, делая так, что наблюдатели даже не будут знать, что были другие ветки, которые не использовались.

Спасибо, как всегда профессиональный ответ. Но что, если я потрачу его во второй nLockTime, когда Боб и Кэрол смогут подписать, для этого им также потребуется опубликовать сценарий погашения, и в сценарии погашения будет видно конечное условие с ANYONECANSPEND, правильно? Таким образом, злонамеренный майнер может не включать это ни в один блок и ждать еще 500 блоков, чтобы получить весь вывод.
Майнер может скопировать сценарий выкупа, сохранить его еще на 500 блоков и использовать по мере необходимости. Опять же, это не гарантирует ему прибыль, потому что любой майнер может это сделать, это будет гонка между майнерами, чтобы претендовать на это, но, тем не менее, если они все вступают в сговор, они заинтересованы в том, чтобы не включать это в блок и ждать, пока они не смогут претендовать на это, тот, кто найдет первый блок после того, как истечет время блокировки anycanspend, является счастливчиком, пусть будет так. Понимание молчаливого джентльмена.
Я обновил свой ответ, чтобы решить эту проблему.
Спасибо - очень понятно. Можем ли мы использовать MAST или Taproot NOW в производстве? или это софтфорк, который должен быть реализован в первую очередь?
MAST и Taproot все еще находятся на стадии проектирования и реализации. Для их использования потребуется софтфорк.
Пока софт-форки не будут развернуты, какой вариант мы должны сделать для такого сценария, который в конечном итоге заканчивается ANYONECANSPEND, но имеет несколько (например, 3 или 4 ответвления) до финального, который должен быть защищен от стимулов майнеров, чтобы держать их подальше, как как только будет раскрыт redeemScript и опубликована последняя ветка с whocanspend?
К сожалению, в настоящее время нет возможности скрыть это.