paint-brush
Dead Man Switchby@ly
1,697 reads
1,697 reads

Dead Man Switch

by Lior YaffeJuly 12th, 2018
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

In the next 100 years or so we will all die and this is one of the two facts of life we have to accept. This creates an awkward problem, since in <a href="https://hackernoon.com/tagged/crypto" target="_blank">crypto</a> you are responsible for your funds, if you die your crypto will die with you.

Company Mentioned

Mention Thumbnail
featured image - Dead Man Switch
Lior Yaffe HackerNoon profile picture

How to save your crypto when you die

In the next 100 years or so we will all die and this is one of the two facts of life we have to accept. This creates an awkward problem, since in crypto you are responsible for your funds, if you die your crypto will die with you.

Is there a way to recover your funds once you are no longer around?

A common solution is to setup a dead man switch. Remember the 108 minutes count down timer from the TV series Lost? This is a dead man switch. As long as it is pressed by the operator in a timely manner, everything remains as is, but if it is not pressed on time, then some event is triggered.

In the crypto context the idea is to use a reverse multi-signature transaction which transfers all your funds to your beneficiary’s account, but only if it is not approved until a certain block height. The idea is that as long as you are alive, you will always remember to approve this transaction before the deadline to prevent it from executing. Next, you need to submit a new recovery transaction with a later deadline, and so on. This way when you die, after the approval block height is reached, your funds will be automatically transferred to your beneficiaries.

Ardor uses the built-in phasing feature to support this function on all its child chains (Ignis for once). To use it, you need to submit a transaction which transfers all your funds to your beneficiaries and add a “By Account” approval model specifying your account as the approver, but with the “Not” operator. This means that the transaction execute only if by a certain height you do not approve it. In practice, this means that once you die, sooner or later the specified block height will be reached, your transaction will execute, and your funds will be transferred.

This feature is currently operating in production. However, we have identified three issues, which are addressed by one of our more recent innovations. First, you need to remember to approve the recovery transaction in order to prevent it from executing. You do not receive reminders. Second, after you approve the recovery transaction, you need to submit another one with the same setup. There is not currently a function to automate a reoccurring transaction. Third, this dead man switch setup requires saving the transaction in the blockchain for a long period of time. This contradicts with the spirit of the transaction pruning feature, which is aimed to prune (remove) transactions from the blockchain as soon as possible.

This is where our recent innovations, lightweight contracts, are useful. Instead of manually creating the recovery transaction, approving it later, creating another one and so on — it is very simple to develop a contract which automates this process. This way, you can repeat the process every 24 hours automatically and avoid phasing a transaction for a long period of time.

When using a lightweight contract, you will leave instructions to your beneficiaries to stop your Ardor node. Once the contract stops executing, within 24 hours the funds are automatically transferred.

As we can see, the Ardor dead man switch functionality is yet another example to the power and simplicity of the Ardor platform and its ability to solve real world problems.

Appendix — implement dead man switch using the Ardor wallet

Step 1 define the approval model by your account

Approval Model By My Account

Step 2 define the “Not” approval model referring to the approval model from step 1.

Note the ! operator in the Booelan Expression field

Step 3 submit the recovery transaction using the “Not” approval model

Note the “Phasing Approval Model” field

Step 4 approve the transaction to prevent it from executing