Ex: programar hoje para enviar 1 BTC para Alice dia 03/12/2019
Que eu saiba não.
Mas pelo menos no BTC o tempo é contado em blocos , não em dias.
Então você teria que calcular o block height naquela data (1 bloco a cada 10min em média)
Mas não conheço nenhum cliente que faça isso. Talvez de pra fazer no bitcoin core?
SIM - existem dois tipos de transação que você pode fazer:
1. nLockTime: uma transação que só se torna válida após uma certa altura do blockchain (número do block) e alguém precisa guardar a transação e só colocá-la na rede depois que passar esse tempo.
O cenário aqui é: Alice promete transferir para Bob 1 BTC daqui 1000 blocos (~7 dias) e cria uma transação colocando o nLockTime = Bloco Atual + 1000
Bob recebe uma mensagem da Alice com o conteúdo dessa transação assinada e pode colocar ela na rede só depois de 7 dias, para ela ser efetivada.
Se Bob colocar essa transação antes na rede, vai estar inválida/vai ser ignorada.
Se Alice criar uma outra transação reutilizando os inputs da transação que foi para o Bob, quando Bob tentar executar a transação, vai dar errado.
Se alguma coisa acontecer com Alice, Bob ainda consegue receber o 1 BTC daqui 7 dias.
Esse cenário já foi utilizado algumas vezes como um "dead-man switch" ou tipo de testamento onde alguém fica com uma transação no futuro que permite receber seus bitcoins, mas se você quiser, pode mover eles antes e invalidar essa transação futura.
2. CLTV = CheckLockTimeVerify: uma transação que trava os outputs (bitcoins) por um tempo pre-determinado.
O cenário aqui é: Alice promete transferir para Bob 1 BTC *agora* mas que Bob só poderá gastar depois 1000 blocos (~7 dias).
A transação é executada na rede e Bob "recebe" 1 BTC, mas não pode fazer nada para gastar eles antes do LockTime passar.
Alice também não consegue pegar esse 1 BTC de volta.
Você consegue fazer isso usando o Bitcoin Core mas montando a transação na mão (não tem telas para isso).
Não sei de outro client que permite fazer isso com telas...