LSP26 - Follower System
Introduction
LSP26 introduces a Follower System that allows any address — whether it's a smart contract account like an ERC725Account, or even an Externally Owned Account (EOA) — to participate in a decentralized social graph.
What does this standard represent?
LSP26 defines a smart contract registry that maintains two crucial lists for each participating address:
- Follows: A list of addresses that an address is following.
- Followers: A list of addresses that follow an address.
This system provides a foundation for social features in blockchain applications, enabling developers to create more engaging and interconnected user experiences.
Specification
The LSP26 Follower System is implemented as a smart contract with the following key functions:
Core Functions
follow(address addr)
: Allows an address to follow another address.unfollow(address addr)
: Allows an address to unfollow another address.followBatch(address[] memory addresses)
: Enables following multiple addresses in a single transaction.unfollowBatch(address[] memory addresses)
: Enables unfollowing multiple addresses in a single transaction.
Query Functions
isFollowing(address follower, address addr)
: Checks if one address is following another.followerCount(address addr)
: Returns the number of followers for an address.followingCount(address addr)
: Returns the number of addresses an address is following.getFollowsByIndex(address addr, uint256 startIndex, uint256 endIndex)
: Retrieves a paginated list of addresses that an address is following.getFollowersByIndex(address addr, uint256 startIndex, uint256 endIndex)
: Retrieves a paginated list of followers for an address.
Events
Follow(address follower, address addr)
: Emitted when an address starts following another.Unfollow(address unfollower, address addr)
: Emitted when an address unfollows another.
LSP1 Integration
LSP26 integrates with LSP1-UniversalReceiver to notify addresses when they are followed or unfollowed:
- When following: Calls
universalReceiver
withtypeId
:keccak256('LSP26FollowerSystem_FollowNotification')
- When unfollowing: Calls
universalReceiver
withtypeId
:keccak256('LSP26FollowerSystem_UnfollowNotification')
This integration allows for real-time reactions to follower changes, enhancing the interactive capabilities of LSP26-compatible addresses.
Deployment
The official LSP26 Follower System contract is deployed at 0xf01103E5a9909Fc0DBe8166dA7085e0285daDDcA
on the LUKSO mainnet. This address is consistent across different EVM-compatible networks when deployed using the Nick Factory contract.
The deployed implementation code can be found here.
Example Use-Cases
Goals:
- Establish an on-chain follower system for addresses
- Enable decentralized curation of social connections
- Provide a foundation for social features in blockchain applications
- Social Media Dapps: Build decentralized social platforms with follower/following functionality.
- Content Curation: Create personalized content feeds based on followed addresses.
- Reputation Systems: Develop trust or influence metrics based on follower counts and relationships.
- Follow protocols: Allow addresses of protocols to be followed, and protocols to react on following addresses.
LSP26 Follower System provides a robust foundation for building social features into blockchain applications. By standardizing how following relationships are managed on-chain, it opens up new possibilities for decentralized social interactions and user-centric experiences in the Web3 ecosystem.