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✨
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.
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.
Inheritance Activation Process:
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.
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.
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.
The inheritance functionality in Bacalaha is implemented through the Inheritance plugin. Two validations are performed to activate inheritance: