Firewallet

Firewallet

Firewallet is an ERC4337 compliant secure contract wallet that enables you to create roles that limit the amount of money that can transfer and the contract that call.

Firewallet

Firewallet

Firewallet is an ERC4337 compliant secure contract wallet that enables you to create roles that limit the amount of money that can transfer and the contract that call.

The problem Firewallet solves

problem

Currently, if the private key of an EOA is stolen, all the assets in that wallet will be stolen.
So users create multiple EOA addresses to spread the risk. But in that case, things like SBT will also be distributed, and the information of that person's transactions will not be accumulated in one account.

what we built

We have implemented a brand new contract wallet that follows the ERC4337 standard.
Users can create multiple roles (for private, for trading, for DAO pj, etc) by purpose.
Users can place the following restrictions on roles

  • The total eth amount that can transfer
  • The contract that can call
    -etc
    The user executes the transaction using the specific role that suits for the tx

how it solved

By creating roles in this way, and using roles instead of owner keys for everyday use, even if a role's password is stolen, the damage is limited to the scope of that role.
In addition, the information associated with the person, such as SBT, ENS, etc., will be linked to single address

Challenges we ran into

First of all, in a short period of time, we had a very hard time understanding ERC4337, account abstraction.
We implemented a contract wallet with its own role, so we had to implement our own front, bundler (backend API) and entry point for the functionality to work.

building contract

Understanding AA in a short period of time was the most difficult part. The implementation of hitting assemly to achieve the objective.
We had to use assembly language to parse, as calldata, what the user did.
We had a short time to implement a coutract wallet that met our requirements.

building backend

It was difficult to implement the bundler as per AA specifications.
We were able to identify and implement the minimum functionality required.

building frontend

As the team members understood the specifications of AA, changes were made many times, and it was difficult to deal with those changes.

Discussion