A paymaster that dynamically sponsors addresses based on token balance which represents DAO membership. Trampoline extension as an interface.

The problem DA(cubed) solves

Gas fees are often a deterent to participation for many members of DAOs. When gas fees are high, it can make it cost-prohibitive for users, especially those with smaller transactions or limited resources, to actively participate in DAOs.
High gas fees can create barriers to entry, limiting accessibility and hindering broader participation in DAO activities such as voting, proposals, or interactions within the community.

To address this issue, we are building for gasless transactions. DA (cubed) aims to reduce the impact of gas fees to improve scalability, and make participation in DAOs more accessible and inclusive.

To achieve this we created a paymaster that can dynamically distinguish which wallets to sponsor based on if they contain certain token. This means that having a token in your wallet now is enough for the paymaster to sponsor your transactions.

We used gateway as a service provider and a bit more information can be found in the repository https://github.com/DA-cubed/AA-contracts.

Challenges we ran into

The practical challenges were to come up with the parts and review the 0 codebase of the account abstraction and try to use what sources are possible

Existing AA SDK and libraries are raw and hard to use, sometimes instead of code already written it's more useful to have just a proper documentation of all the objects involved in AA process.

Time-consuming technical challenges:

  • construction of UserOperation bugged, during the signing the order of fields is not fixed, therefore the signature obtained is not valid, the ugly workaround for this is to ask the EntryPoint contract to provide the correct hash of a UserOperation
  • versions of wallets (SimpleWallet) differ, the codebase in SDKs is writtne for the older ones and it's not specified anywhere
  • existing bundler services provide little of feedback for the requests, entrypoints they support differ from one service to another

In general, isolating problems debugging is the biggest challenge.

Link to showcase video: