project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5

Bacalaha - Inheritance Wallet

Bacalaha - wallet that supporting secure and user-friendly feature like Inheritance and session key

Bacalaha - Inheritance Wallet

Created At

ETHGlobal Lisbon

Project Description

Bacalaha is a account abstraction wallet designed to manage their keys in session key and enabling seamless inheritance of assets so that it lowers the barrier of crypto wallet usage to public✨

Problem that we are solving

The biggest barrier to crypto wallet adoption is the handling of private keys, with challenges arising when owners forget their keys or face unexpected circumstances like death. Existing wallet solutions lack user-friendly approaches to address these issues, hindering seamless wallet usage and asset management.

Then, what is Bachlaha Inheritance wallet?

Bacalaha handle this problem using account-abstraction that supports inheritance feature, which can able to get inherited if satisfied eligibility and inactivated for certain period. By leveraging Cartridge-Controller's webAuth for key handling, Bacalaha ensures secure and user-friendly way to handle key. And implemented inheritance feature as plugin.


  • Bacalaha core contract (w/ gaurdian contract) -
  • Bacalaha core frontend -
  • Sismo connect integration -


Initialization Process

  • Create Wallet: Users generate a wallet and securely store the session key on other devices like a phone or USB.
  • Configure Inheritance: Users set up inheritance settings, specifying the duration of inactivity required to activate inheritance and defining the eligibility criteria for inheritance activation.

Inheritance Activation Process:

  • Caller Eligibility Verification: When an eligible person intends to activate inheritance, the caller's eligibility is validated on-chain using the Sismo connect mechanism.
  • Wallet Inactivity Check: The system checks if the target wallet has remained inactive for the specified duration. This is done by comparing nonces between two block numbers. To verify the inactivity duration, Bacalaha utilizes the account nonce storage proof provided by Heorodotus.

Inheritance Execution:

  • If the caller is deemed eligible and the wallet has been inactive for the required duration, the inheritance is executed through the smart contract, securely transferring ownership of the assets.

Future Improvement

Right at this moment Heoroduts don't support Evm <> Evm (but coming soon), and Sismo Connect is only available in EVM. So in this project, we implemented group eligibility logic into Solidity contract and account nonce storage proof into Cairo contract. So in future, we can implement full execute_inheritance function into solidity and validate two conditions in one function.

How it's Made

We used Sismo ( verify group eligibility ), Cartridge ( contract base ), Herodotus ( nonce storage proof )


Bacalaha is a contract account designed with two plugins: the session key plugin and the inheritance plugin. The contract interface, IPluginAccount, allows for the addition of plugins to the wallet contract in a scalable manner.

Session Key Plugin

To revoke and validate the session key during wallet creation and login, Bacalaha utilizes the cartridge-controller's Session Key plugin contract.

The Session Key plugin enables the cryptographic generation and secure storage of the session key on other devices. This plugin also facilitates the validation of the session key during wallet operations.

Inheritance Plugin

The inheritance functionality in Bacalaha is implemented through the Inheritance plugin. Two validations are performed to activate inheritance:

Caller Eligibility

  • Bacalaha employs sismo connect to verify if the caller of the inheritance function is eligible to activate inheritance. On-chain verification through sismo connect ensures that the caller is a member of the sismo group, allowing them to fulfill the inheritance conditions.

Account Inactivity Validation

  • Bacalaha checks if the target account has been inactive for a specified period of block numbers. This validation is based on retrieving the storage proof of the account's nonce from the FactsRegistry contract of Herodotus using the get_verified_account_nonce function. The validated nonce data is compared to determine if the account meets the inactivity requirement for inheritance activation.
background image mobile

Join the mailing list

Get the latest news and updates