Saturday, January 14, 2023

Using special transactions to rescue funds from lost keys

A while back I made a post here: https://www.reddit.com/r/ethdev/comments/zu2vci/idea_how_we_could_create_timelocked_transaction/ about creating special, timelocked transactions that can recover funds in the event that you lose access to your keys.

These transaction backups work by signing (but not sending) transactions that deploy a contract (or approve an address to spend your erc20/721 tokens) which recovers your funds in the event that you lose your keys.

These backups have a few key advantages:

  • They are inherently gasless as the transactions do not need to be broadcast
  • With smart contracts we can add constraints such as timing (not valid before or not valid after) or modify the recipient address at anytime via a publicly deployed contract
  • The key holder still retains full control of the funds and can invalidate the backups whenever they want
  • The data is not particularly sensitive, meaning it can be stored online
  • You can safely use your exchange deposit address as the recipient, making it easy to regain access to your funds and obviating the need to find a "guardian" recipient address
  • They are trivial to create and you can make multiple versions of them for free
  • Most blockchains support this concept in one way or another, for example: ntimelock in bitcoin (see the repo for more info)

You can checkout the repo here: https://github.com/James-Sangalli/crypto-timelocked-backup and see an example backup transaction that I broadcast here: https://goerli.etherscan.io/tx/0x31d3904d9fc76f6a932567e436d36a0ad452157d3fee66790fbc98aeed564bb5

What do you think about this concept and how would you improve upon it? Note that you can already create such transactions for ether and erc20/721 tokens by using the code above.


No comments:

Post a Comment