Интересная тема обсуждения.
Все здесь обсуждали LOCKTIMEVERIFY скрипт, изначальный, когда при формировании транзакции можно использовать поле locktime с указанием количества блоков или времени для ожидания. Но как правильно заметили, такую транзакцию раньше времени нельзя будет отправить майнерам (раньше, кстати, было можно. До 2012-2013). Недостаток такого метода в том, что кроме приватного ключа получателя, наследник должен хранить и саму транзакцию до нужного времени.
А почему бы не использовать два более продвинутых варианта, например CLTV или CSV?
Их транзакции вполне себе майнятся майнерами, просто вы не сможете потратить их раньше указанного блока/времени, но при этом вам не нужно будет хранить транзакцию до времени X.
Вот примерно так будет выглядеть с CLTV:
OP_CHECKLOCKTIMEVERIFY OP_DROP OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG Проверяется время с помощью OP_CHECKLOCKTIMEVERIFY и далее уже или выдается ошибка (если false) или идет дальнейшая работа по скрипту (если true).
CSV или OP_CHECKSEQUENCEVERIFY еще более интересный скрипт, так как позволяет создавать более усложненные условия, вплоть до целых смарт контрактов. BIP112 (
https://github.com/bitcoin/bips/blob/master/bip-0112.mediawiki) дает вот такой пример
IF
2
3 CHECKMULTISIG
ELSE
"30d" CHECKSEQUENCEVERIFY DROP
CHECKSIG
ENDIFТоесть, если люди не тратят до определенного числа, то включается новое условие. Такое же вполне реально можно сделать и для завщения. Ничего сложного нет.