AAVE’s team (AAVE/USD) has created Lens, a decentralized social graph protocol that empowers creators to own the links in the social graph that connects them with their community, Mirror reported. Lens allows users to publish and collect posts, create and follow profiles, and more.
It is EVM compatible and under development, but a version has been deployed to the Polygon Mumbai testnet (MATIC/USD).
Through a mix of storage on the Lens Hub contract and callbacks that provide custom logic via modules or mint NFTs, the Lens Hub keeps track of interactions.
Profiles can be created with a handle, a profile image, and a Follow module and Follow NFT URI. When a user creates a profile, a Lens Hub NFT is minted to his account.
There are two main ways to follow a profile: Follow modules and follow NFTs. Follow modules are contracts establishing the rules for new followers. Types of following modules include:
- Fee — all accounts can follow you, but they need to pay a fee amount
- Permissioned — only accounts that you approved can follow you
After you follow a profile, you mint Follow NFTs to follower accounts. Following a profile comes with all NFT interoperability and functionality. Extras can include gated token content, airdrops, or holding a valuable piece of digital art.
Lens Hub creates and stores posts by providing a reference and collect module as well as a content reference. A reference module is a contract specifying the rules for commenting and mirroring the publication. Collect modules set the rules for post collection. A content reference is a URL directing to content outside LENS.
When a post is “mirrored”, LENS stores the original post profile and publication ID as a new post. As the Mirror can indicate the original post, no content references are stored.
The meta transaction approach has emerged as a good design choice to allow publishing with signatures. LENS supports transactions using signatures for mirroring, posting, following, commenting, burning, and more.
For security reasons, profiles can specify a “dispatcher.” This is an account that serves a profile, It can share access or act as a form of delegation. Dispatchers can post, mirror, update profile information, and comment. They can only be updated by the profile owner.