If I died one day, would there be some type of function where I can send all my coins to another account I trusted? How would this be done? Say we had an oracle that just monitored public death records and if something matches, it would send all my coins elsewhere. Obviously its not going to be as simple as that. What are some things one would need to account for?
Some folks have explored this question on Reddit, Github, and the Ethereum Forum.
Two days ago, someone on Github offered an actual sample contract for a personal "bank account" contract on Ethereum with inheritance setup feature:
You can use this contract to store your funds, send funds to an account of your choice and add heirs that will inherit the funds if you are not able to access them anymore, for example, in case of death.
Deploy this contract to the Ethereum blockchain (using Mist for example).
Send funds directly to the contract address to make deposits.
To prove you are alive and active use checkIn() method periodically (default period is set to 365 days). This will extend the active status of the owner for the period specified in the contract.
To change the check-in period you can call setCheckInPeriod(uint periodInDays) by specifying the period in days.
Use sendFunds(address receiver, uint amount, bytes data) method to send a chosen amount to a specific address along with extra data.
To change ownership of the contract you can use transferOwnership(address newOwner) giving the new owner address as argument.
Add an heir by calling setHeir(address heir, uint8 inheritancePoints) specifying the heir's Ethereum address and number of points. Heirs will get a share in the inheritance directly proportional with their number points. You can think of these as percentages. To remove an heir you need just to call this method with a 0 value for points.
If you don't need the contract anymore you can call destroy() method which will return all funds to the owner's address.
Finally and most importantly, a designated heir can claim his share in the inheritance once the owner hasn't checked in for the period of time set in the contract. Heirs should use claimInheritance() method for this. If conditions apply a specific share of the funds will be transferred to the heir's address, also removing the heir from the list of heirs so that he can claim the inheritance only once.
On this Reddit thread someone spelled out how he was thinking of setting up a dead man's switch contract:
When deploying the contract, the user specifies the interval of time (in seconds) that they are required to check in to prevent the switch from expiring. Essentially, I have two main methods: ping - allows the user to check-in, and prevent the switch from expiring. release - if the allotted time has expired without a ping, releases the key
That post received 18 comments with ideas and suggestions of how to do this better. I don't have the tech background to be able to assess the validity of the feedback and suggestions, but perhaps others on Stack Exchange could sort through them and return here to post what would work.
Some folks on the Ethereum Forum have shared how they would set up a dead man's switch contract but the posts date back from 2014, so they might be outdated.
There is also this:
Blockchain Tech Corp. is currently developing a self executing will system where the blockchain will automatically check the the government’s “Death Master File” maintained by the U.S. Social Security Office and verify that a person did in fact pass. Then, pre-programmed rules setup by the person will automatically distribute their assets to beneficiaries, eliminating the need for executors and court battles because the integrity of a will is in question.
Here is an April 2015 article expanding on this last project. I could not find recent updates about what happened to this idea, and whether anyone else has tried to do this.