Our team loves account abstraction, and abstract art, so we decided to combine them! Users who create an account abstraction wallet with MondrianWallet will get a cool account abstraction wallet, with a random Mondrian art painting!
High - 100xp
Medium - 20xp
Low - 2xp
Starts: May 09, 2024 Noon UTC
Ends: May 16, 2024 Noon UTC
This code was created for Codehawks as the first flight. It is made with bugs and flaws on purpose. Don't use any part of this code without reviewing it and audit it.
This is your opportunity to learn about account abstraction!
Our team loves account abstraction, and abstract art, so we decided to combine them!
Users who create an account abstraction wallet with MondrianWallet
will get a cool account abstraction wallet, with a random Mondrian art painting!
Account abstraction (EIP-4337) essentailly allows wallets to sign transactions with anything instead of just a private key.
You can see a diagram of what this looks like below.
We do not use the Paymaster
or Aggregator
in our Mondrian Wallet.
For our wallet, a user can execute transactions by one of two methods:
execute
functionUserOp
from a user who has a signed transaction from the Mondrian Wallet Owner via the handleOps
function in the EntryPoint
contract.To learn more about how this works, you can read the EIP-4337 documentation.
You'll see the tokenURI
function returns one of 4 random Mondrian art paintings. Each should have equal distribution and be random.
git --version
and you see a response like git version x.x.x
node --version
and get an ouput like: vx.x.x
npm
yarn --version
and get an output like: x.x.x
npm
git clone https://github.com/cyfrin/2024-05-Mondrian-Wallet
cd 2024-05-Mondrian-Wallet
yarn
yarn compile
yarn test
./contracts/
└── MondrianWallet.sol
0.8.24
Onwer - The one who can execute transactions by directly calling the execute
function.