A wallet which has inheritance built in on the Ethereum Blockchain


Basically, the wallet is a proxy contract, which intends to work as a hot wallet for regular users who invest/trade, etc. in ethereum mainnet. The idea is to provide the wallet with the basic functionality of an externally owned account, but what makes it stand apart from other wallets is its ability to provide a mechanism for eth and token retrieval to the one who inherits. The rough idea is that the person who inherits the money should have an ethereum wallet, which will be mentioned in the inheritance contract at the time of creation or later. The person who owns the wallet also specifies any three close friends/relatives/lawyers, etc as an approver. If the person dies, then the one who inherits can call a function to retrieve the ETH and tokens (or ask someone to do it on their behalf). The request will be accepted immediately, but there would be a wait time of X days (which can be customized based on the user needs) for it to be processed. Once the request is accepted, the processing can be sped up by the approvers to just Y days. Any 2 approvals from the 3 approvers are enough, or (n/2)+1 approves. If the approver was not active during this period, then the one who inherits has to wait for the next X days to be automatically approved. If, for some reason, the approver turns bad along with the one who inherits, then the owner who might still be alive has Y days to reclaim the power and remove the approvers and the one who inherits. Whenever the one who inherits makes a call to the inherit function, a notification (through email initially, and if time & resource permits, through SMS, etc.) is sent to the owner. The same happens when approvers approve as well. The owner has the right to change the one who inherits and the approvers at any time.

Inherichain showcase

How it's made

In Short, the smart contract is built using Solidity. The test are written using Mocha and Chai. The backend is written using javascript and webpack. And the frontend is plain bootstrap with some HTML and CSS. Long version, main smart contract is thoroughly tested, with the help of mocha and chai, with a test coverage of over 95% (100% for the main smart contract), which can be verified in coveralls. Truffle suite is used for local blockchain, etc. Openzeppelin test helpers are also used for easier testing. Solhint and Prettier is used for linting and to make the code look pretty. Along with solidity docgen for documentation purpose. The contract is documented well, with all the required details. The frontend part was the most difficult, considering I have the least experience with that. At the moment, all the user functionality is combined in a single page, in the future iteration, that will be divided into different pages, with much better user experience and interface.

Technologies used