Persona turns user's on-chain activity to verifiable badges on X, powered by Blockscout and vlayer.
Persona is an on-chain badge system that allows users to mint their achievements and milestones on-chain to display on social media. Simply link your wallet and twitter account and using Blockscout and vlayer Time Travel, Persona detects what badges are eligible for minting. These badges verify your on-chain activity to others and include things such as: -Total Holdings, -Eth Holdings, -NFT Holdings, -Total On-chain Transactions and more...
Once minted, these badges automatically display on the users twitter account under their username. Using the Persona twitter extension, users are able to view other Persona user badges on the site, by hovering the Persona icon, and verify who is who they claim to be easier without having to do a deep dive into their wallets. User and CT influencers can now prove themselves without having to expose their wallet addresses as well.
Persona is comprised of 3 main parts, the contracts, frontend and extension
The contracts are initialised with vlayer Time Travel template on Foundry, we made a new PudgyPenguinMinterProof and PudgyPenguinMinterVerifier to verify whether the users were an original minter of a pudgy penguin. As there was no actual PudgyPenguin contract on optimism sepolia, we created our own mockERC721.sol and deployed it as PudgyPenguin. These are the contracts deployed
The frontend is made with NextJS, Privy, Blockscout, Shadcn, Wagmi and Supabase. With Privy, we manage users and allow users link their wallet to their X account. Once linked, we use Blockscout API and vlayer Hooks to fetch information regarding the wallet to see whether they qualify for the badges for example: number of transactions, amount of ETH owned, whether user was an OG Pudgy Penguin Minter. Users can then choose which badges to mint and they will be able to sign a transaction with wagmi. Supabase would be used to index and store what badges users have minted.
The extension is made with pure javascript for simplicity, it manipulates the DOM on X to insert a Persona badge, which on hover will display the different badges the twitter user has. This allows the extension users to see what the X user has been part of by trusting Persona as an identity layer. The extension fetches the results from the supabase database which indexes the results earlier.