This project was built for EthGlobal Cannes Hackathon 2025. This project combines EIP-7702 and Passport proofs to enable the recovery of a lost wallet using your passport.
The user begins by converting their EOA (Externally Owned Account) into a Smart Account. This is done by attaching a specific contract connected to Self Protocol, which gathers data about the passport holder and a unique application identifier. This identifier will be used later to identify the user. The user completes this step by connecting their embedded wallet on our frontend.
Next, they need to scan a QR code generated by Self Protocol to bind their passport identifier to their EIP-7702. Once the passport is bound, if the user loses access to their previous wallet, they can initiate the recovery process. During this process, the user must prove ownership of the passport that was bonded to the account.
If successful, a new signer is attached to the account, allowing them to withdraw funds from the old address.
App was deployed to Cloudflare Pages and accessible at https://ethglobal-cannes-front.pages.dev/.
Testnet contracts:
- Implementation: 0xd12aa0422f014857c9be97f608e2ac035b251d47
Mainnet contracts:
- Implementation: 0x7cb5cd4620ce1a9fc8f7fa5307c7602f850a4cd1
Revix contracts are located at /contracts. To build them, install dependencies first:
bun install
# or
npm install
Then you can compile contracts:
npx hardhat compile
Before building and running app, create .env file, which should contain the following variables:
VITE_IMPLEMENTATION_ADDRESS=0xd12aa0422f014857c9be97f608e2ac035b251d47
VITE_PK_BENEFICIARY=
Where VITE_PK_BENEFICIARY is private key for benificiary (works in current version as mocked paymaster), VITE_BENEFICIARY_ADDRESS is beneficiary address which will be used to recover funds
To build frontend code, install dependencies:
bun install
Then build app:
bun run build
# or
npm run build