I have recently been thinking about cold storage fund recovery and stumbled across nTimeLock, a special function that allows you to create transactions that are only spendable once you reach a certain timestamp. This allows you to create transactions that recover your funds to a new wallet at a certain timestamp but can also be easily revoked at anytime.
This experimental and open source tool that I just built allows you to do just that. In a nutshell, it allows you to create a time locked transaction to another wallet and save it as a backup. This backup also includes a revoke transaction that sends the funds to the signer’s wallet, thereby invalidating the backup.
You are free to set the recipient of the funds to any address and if none is set, the tool will generate a fresh wallet, set it as the recipient and add it to the backup, allowing you to fully recover the funds in the event that you lose access to your cold storage keys. Such backups can be stored on your google drive or iCloud accounts and only become sensitive when the transaction date has been reached.
As I already mentioned, these backups can and should be invalidated close to their timestamp, as you would only want to use them as a last resort in the event that you have truely lost access to your keys.
Here is an example of a real time locked backup file.
- https://github.com/James-Sangalli/btc-timelocked-backup-web (web interface that works with Trezor, COMING SOON)
- https://github.com/James-Sangalli/crypto-timelocked-backup/tree/master/scripts/bitcoin (hot wallet edition that works with private keys pasted in environment variables using node.js, fully functional and used to create the backup above)
- https://james-sangalli.medium.com/utxo-based-backups-an-idea-for-bitcoin-cold-storage-21f620c35981 (article describing the method in greater detail)
Note that these tools are only experimental and should not be used with serious amounts of bitcoin!