Meme platforms built solely on token ownership often suffer from ephemeral engagement and speculative volatility. Integrating an on-chain reputation system introduces a persistent, verifiable layer of user identity and contribution history. This transforms a platform from a simple token-gated community into a dynamic ecosystem where influence is earned through provable actions. Reputation can be calculated based on metrics like content creation, curation, community governance participation, and long-term holding, creating a more resilient social graph resistant to Sybil attacks.
Launching a Meme Platform with On-Chain Reputation
Introduction to On-Chain Reputation for Meme Platforms
This guide explains how to integrate on-chain reputation systems to create more sustainable and engaging meme platforms, moving beyond simple token ownership.
The core mechanism is a reputation smart contract that mints non-transferable Soulbound Tokens (SBTs) or updates a score in a state variable based on user activity. For example, a user's reputation score could increase by 10 points for a post that receives 50 upvotes, or by 5 points for staking tokens in a community treasury for 30 days. This logic is enforced on-chain, making it transparent and tamper-proof. Platforms like Lens Protocol and Farcaster Frames demonstrate how social actions can be anchored to verifiable credentials, providing a blueprint for meme communities.
Implementing this starts with defining your reputation oracles—the trusted sources of truth for on-chain and off-chain actions. An on-chain oracle could listen for Staked or Voted events from your platform's contracts. For off-chain actions like post upvotes, you need a secure relayer or use a service like Chainlink Functions to fetch and verify data before submitting it to your reputation contract. The contract function might look like:
solidityfunction updateReputation(address user, uint256 actionId) external onlyOracle { reputationScore[user] += actionWeight[actionId]; emit ReputationUpdated(user, actionId, reputationScore[user]); }
A robust reputation system must be designed to mitigate manipulation. Common strategies include:
- Implementing a time decay mechanism where scores gradually decrease without ongoing activity.
- Using quadratic weighting for voting power to prevent whale dominance.
- Batching updates to reduce gas costs for users.
- Allowing reputation to be used for tangible benefits like enhanced visibility, governance weight, or access to exclusive NFT mints. This creates a flywheel where valuable contributions are rewarded, which in turn incentivizes higher-quality engagement.
For developers, the next step is to choose a deployment architecture. You can build a standalone reputation module that interfaces with your existing meme token contracts, or use a reputation primitive like Gitcoin Passport or Ethereum Attestation Service (EAS) to issue verifiable attestations. The frontend must then query this on-chain data—using a subgraph on The Graph or directly via an RPC call—to display user reputation badges or scores alongside their posts and comments, creating a transparent meritocracy within the platform interface.
Prerequisites and Tech Stack
Before building a meme platform with on-chain reputation, you need to establish the core technical foundation. This guide outlines the essential tools, frameworks, and knowledge required.
A meme platform with on-chain reputation is a full-stack Web3 application. You'll need proficiency in smart contract development for the core logic, a frontend framework for the user interface, and an understanding of decentralized storage for meme assets. The primary programming language will be Solidity for the Ethereum Virtual Machine (EVM), but knowledge of Rust may be required if you target Solana or other ecosystems. Familiarity with Node.js and npm/yarn is essential for managing dependencies and tooling.
For smart contract development, the Hardhat or Foundry frameworks are industry standards. Hardhat offers a rich plugin ecosystem and TypeScript support, while Foundry provides superior speed for testing and direct Solidity scripting. You'll use OpenZeppelin Contracts for secure, audited base implementations like ERC-721 for NFTs and access control. Writing and running tests with Chai and Mocha (for Hardhat) or the built-in Forge test runner (for Foundry) is non-negotiable for security.
The frontend connects users to the blockchain. You will typically use React or Next.js with a Web3 library like wagmi and viem. These modern libraries simplify connecting wallets, reading chain state, and sending transactions. For styling, Tailwind CSS is a popular choice for rapid UI development. You must also integrate a wallet connection solution; RainbowKit or ConnectKit provide pre-built, secure modals that support multiple wallet providers like MetaMask, Coinbase Wallet, and WalletConnect.
Meme content (images, videos) should not be stored on-chain due to cost. Use IPFS (InterPlanetary File System) via a pinning service like Pinata or web3.storage. The smart contract will store only the content identifier (CID). For indexing and querying complex data like user reputation scores or meme interactions, you'll need a subgraph on The Graph protocol. This offloads complex queries from the frontend and provides fast, historical data access.
On-chain reputation is the core innovation. You'll need to design a reputation system smart contract that tracks user actions—such as posting, upvoting, and successful report adjudication—and calculates a score. This often involves implementing a Soulbound Token (SBT) standard or a custom scoring mechanism that cannot be transferred. Understanding oracles like Chainlink may be necessary if you want to incorporate off-chain data or verifiable randomness for features.
Finally, you must plan for deployment and maintenance. Use Alchemy or Infura for reliable RPC node connections. For contract verification, use Etherscan's API or Sourcify. Budget for gas costs on testnets (Sepolia, Goerli) and eventually mainnet. A comprehensive development workflow includes a local blockchain (Hardhat Network), a testnet deployment for staging, and a clear upgrade path using proxy patterns (e.g., UUPS) for your reputation contract to allow for future improvements.
Launching a Meme Platform with On-Chain Reputation
A technical blueprint for building a meme-sharing platform where user reputation is a verifiable, tradable on-chain asset.
The core innovation of this platform is its on-chain reputation system. Unlike traditional social media where likes and followers are siloed data, here, a user's reputation is minted as a non-fungible token (NFT) or a semi-fungible token (SFT) on a blockchain like Solana or Ethereum. This token, let's call it a Reputation Soulbound Token (Rep-SBT), is non-transferable but its metadata—such as memeScore, contributionCount, and communityBadges—evolves based on on-chain interactions. This creates a permanent, user-owned record of standing that can be programmatically queried by other smart contracts, enabling reputation-based governance, curation, and access.
The system architecture is modular, typically comprising several key smart contracts. A Meme Registry Contract handles the minting and storage of meme content NFTs, linking them to their creator's Rep-SBT. A separate Reputation Engine Contract contains the logic for updating reputation scores. It listens for verified on-chain events: a meme's upvotes (tracked via a separate Voting Contract), successful challenge resolutions in a Moderation DAO, or bounty completions. This engine uses a formula, perhaps a decaying weighted average, to calculate the new memeScore and update the metadata of the user's Rep-SBT accordingly, ensuring the system is sybil-resistant and merit-based.
For the frontend client, developers interact with this architecture using libraries like Solana Web3.js or Ethers.js. Querying a user's reputation involves fetching the Rep-SBT's metadata account. Posting a meme is a transaction that calls the Meme Registry's mint function, which in turn pings the Reputation Engine to log the activity. A critical implementation detail is indexing; due to blockchain latency, platforms use The Graph or a custom indexer to quickly serve queries about trending memes or top creators by aggregating on-chain state into a queryable database, separating the consensus layer from the user experience layer.
Security and incentive design are paramount. The Reputation Engine must be upgradeable via a DAO to adjust scoring algorithms without migrations. To prevent spam, meme submission requires a small fee or stake, which can be slashed for violations. High-reputation users might earn protocol revenue shares or get weighted votes in the Moderation DAO. Furthermore, by building on a chain like Solana or an Ethereum L2 like Base, transaction costs remain low for high-frequency social actions. This architecture transforms ephemeral social capital into a composable, on-chain primitive for the next generation of decentralized applications.
Key Concepts: Reputation Metrics and Tokens
Understanding the core primitives of on-chain reputation is essential for building a sustainable meme platform. These concepts govern user incentives, content quality, and platform governance.
Reputation Score Calculation
A user's reputation is a non-transferable, composable metric derived from on-chain activity. Core components include:
- Engagement Weight: Actions like upvoting, commenting, and sharing are weighted based on the reputation of the actor.
- Velocity Decay: Scores decay over time to prioritize recent, active participation.
- Sybil Resistance: Mechanisms like proof-of-humanity or stake-weighting prevent spam and manipulation. Platforms like Lens Protocol use a similar graph-based scoring model to quantify social capital.
Reputation-Backed Governance
Reputation scores grant voting power in platform decisions, moving beyond simple token-based governance. This aligns influence with proven contribution.
- Proposal Rights: Users must meet a minimum reputation threshold to create governance proposals.
- Quadratic Voting: Voting power can be calculated as the square root of a user's reputation, reducing whale dominance.
- Delegation: Users can delegate their reputation-weighted votes to experts, as seen in systems like Gitcoin Passport's governance.
Non-Transferable Reputation Tokens (Soulbound Tokens)
Soulbound Tokens (SBTs) are public, non-transferable NFTs that represent credentials, affiliations, and achievements. They are the ideal vessel for on-chain reputation.
- Immutable Record: SBTs provide a permanent, verifiable history of a user's actions and standing.
- Composability: DApps can read a user's SBTs to grant access, discounts, or permissions without a central database.
- Privacy Considerations: Zero-knowledge proofs, like those used by Sismo, allow users to prove they hold a reputation credential without revealing their entire identity.
Liquidity and Utility Tokens
A separate, transferable utility token (e.g., $MEME) fuels the platform's economy, distinct from non-transferable reputation.
- Incentive Distribution: Tokens are distributed as rewards to users based on their reputation score and quality of contribution.
- Fee Mechanism: A percentage of transaction fees (e.g., from NFT minting or tipping) can be burned or distributed to stakers.
- Liquidity Pools: Tokens are paired with ETH or stablecoins on DEXs like Uniswap to create a liquid market, enabling price discovery and user exit liquidity.
Content Curation and Moderation
Reputation systems automate content ranking and moderation, reducing reliance on centralized admins.
- Curated Feeds: Content visibility is algorithmically determined by the aggregate reputation of its upvoters.
- Community Flagging: Users with high reputation in "trust & safety" can downvote or flag content, with penalties for false flags.
- Staked Moderation: Similar to Kleros courts, moderators can stake tokens to participate in dispute resolution, earning rewards for correct judgments.
Sybil Attack Prevention
Preventing fake accounts from gaming the reputation system is critical. Effective strategies include:
- Proof-of-Personhood: Integration with services like Worldcoin or BrightID to verify unique humanness.
- Stake-Weighting: Requiring a small, locked stake (e.g., in platform tokens) to earn reputation, making spam attacks costly.
- Social Graph Analysis: Analyzing connection patterns to detect bot networks, a technique used by projects like CyberConnect. Without these defenses, reputation metrics lose all meaning.
Step 1: Implementing the Soulbound Token (SBT) Contract
This guide details the implementation of a non-transferable Soulbound Token (SBT) contract using Solidity and OpenZeppelin, establishing the foundational reputation system for your meme platform.
A Soulbound Token (SBT) is a non-transferable NFT that represents a user's identity, achievements, or reputation on-chain. For a meme platform, SBTs act as the core credentialing system, ensuring that engagement metrics like post creation, upvotes, and curation are permanently and verifiably tied to a specific wallet address. Unlike standard ERC-721 tokens, SBTs cannot be bought, sold, or transferred, preventing reputation farming and Sybil attacks. We will build our SBT by extending the widely-audited OpenZeppelin library for security and gas efficiency.
We start by writing the smart contract skeleton. The key is to override the critical transfer functions from the ERC-721 standard to make them revert, effectively 'soulbinding' the token. We'll also implement a minting function that is callable only by a designated platform admin or a future reputation manager contract.
solidity// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; contract MemePlatformSBT is ERC721, Ownable { uint256 private _nextTokenId; constructor() ERC721("MemeRep", "MEMEREP") Ownable(msg.sender) {} // Soulbinding: Block all transfer mechanisms function _update(address to, uint256 tokenId, address auth) internal virtual override returns (address) { address from = _ownerOf(tokenId); if (from != address(0) && to != address(0)) { revert("SoulboundToken: Non-transferable"); } return super._update(to, tokenId, auth); }
The _update function is the core of the soulbinding logic. It intercepts all internal transfer and minting logic. The condition if (from != address(0) && to != address(0)) checks if a transfer between two valid addresses is being attempted (minting has from == address(0)). If true, it reverts. We then add a secure mint function:
solidity// Only the owner (platform) can mint SBTs to users function mintSBT(address recipient) external onlyOwner returns (uint256) { uint256 tokenId = _nextTokenId++; _safeMint(recipient, tokenId); return tokenId; } }
This mintSBT function ensures only the contract owner (your platform's management wallet or a governance contract) can issue reputation tokens. Each mint increments a counter, and _safeMint handles safe transfers for ERC721Receiver contracts.
After deployment, the SBT contract becomes the source of truth for user profiles. You would integrate it with your platform's backend: when a user performs a reputation-earning action (e.g., their first post gets 100 upvotes), your off-chain service calls mintSBT(userAddress). The resulting token ID and its immutable metadata (which you can extend using the ERC-721 tokenURI pattern) become that user's on-chain resume. Other contracts, like a staking pool or governance module, can then query ownerOf(tokenId) to verify a user's standing before granting privileges, creating a trustless reputation layer.
Step 2: Building the Reputation Scoring Engine
Design and implement the on-chain logic that calculates a user's trust score based on their platform activity.
The reputation scoring engine is the core smart contract that defines how user actions translate into a trust score. This score is a non-transferable, on-chain attestation of a user's history on your platform. The engine must be immutable and transparent, with rules that are verifiable by anyone. Common inputs for a meme platform include: the number of successful meme mints, the volume of community upvotes received, engagement in governance proposals, and the age of the account. Each action is assigned a predefined weight in the scoring algorithm.
A robust scoring contract often uses a modular design for easy upgrades. For example, you might deploy a main ReputationOracle.sol contract that calls separate, swappable logic modules for different activity types. This allows you to update the weight of a 'mint' action without redeploying the entire system. The final score is typically a uint256 integer, stored in a mapping like mapping(address => uint256) public userScores. Events should be emitted for all score updates to enable off-chain indexing and frontend updates.
Here is a simplified code snippet showing the core update logic:
solidityfunction _updateScore(address user, ActionType action) internal { uint256 points = actionWeights[action]; userScores[user] += points; emit ScoreUpdated(user, action, points, block.timestamp); }
Security is critical: the function that triggers score updates must have access controls, often restricted to other verified platform contracts. Consider implementing a time-decay mechanism where older contributions gradually lose weight, ensuring the score reflects recent, relevant activity and prevents score stagnation.
After deploying the scoring engine, you must integrate it with your other platform contracts. Your meme minting contract should call ReputationOracle.recordMint(msg.sender) upon a successful transaction. Your voting contract should record governance participation. This creates a closed-loop system where on-chain activity automatically feeds the reputation model. Tools like The Graph or Covalent can then index these score update events to power leaderboards, analytics dashboards, and qualification checks for exclusive features.
Finally, design the score's utility. A high reputation score could grant users: enhanced minting privileges (e.g., lower fees), weighted voting power in community decisions, access to exclusive content or NFT airdrops, and badges or roles in the associated Discord server. This utility creates a virtuous cycle, incentivizing positive contributions and making the reputation score a valuable, user-owned asset. The transparency of the on-chain rules ensures the system is perceived as fair and resistant to manipulation.
Reputation Action Weights and Decay Parameters
A comparison of different parameter sets for calculating and decaying user reputation scores on a meme platform.
| Reputation Parameter | Engagement-Focused | Quality-Focused | Hybrid Model |
|---|---|---|---|
Meme Creation Weight | 15 points | 10 points | 12 points |
Upvote Received Weight | 2 points | 3 points | 2.5 points |
Comment Creation Weight | 5 points | 8 points | 6 points |
Daily Reputation Decay Rate | 1.5% | 0.5% | 1.0% |
Inactivity Penalty (after 7 days) | null | 5% weekly | 2% weekly |
Downvote Penalty (to voter) | -1 point | -3 points | -2 points |
Minimum Score for Curation | 50 points | 100 points | 75 points |
Maximum Daily Earning Cap | 200 points | 150 points | 175 points |
Step 3: Integrating Sybil Resistance Mechanisms
Implementing robust sybil resistance is critical for a meme platform's integrity. This step focuses on practical methods to prevent users from creating multiple fake accounts to manipulate votes, airdrops, or governance.
A sybil attack occurs when a single entity creates many pseudonymous identities to gain disproportionate influence. For a meme platform, this can destroy trust by allowing vote manipulation, unfair airdrop farming, and skewed community sentiment. The goal of sybil resistance is not to achieve perfect identity verification, but to make creating fake accounts prohibitively expensive or difficult relative to the potential reward. Common on-chain approaches include proof-of-stake bonding, proof-of-personhood protocols, and analyzing transaction history for organic behavior patterns.
One effective method is implementing a stake-weighted reputation system. Users can lock a platform's native token (e.g., a MEME governance token) into a smart contract to mint a non-transferable Soulbound Token (SBT) representing their reputation score. The amount staked and the duration of the lock-up directly influence voting power and airdrop allocations. This creates a financial cost for sybil attackers, as they would need to acquire and lock substantial capital for each fake account. Platforms like Ethereum's Hats Protocol use similar models for role-based access.
For a more identity-centric approach, integrate with proof-of-personhood protocols. Services like Worldcoin (via Orb verification) or BrightID provide a way to cryptographically verify that an account is controlled by a unique human. Your platform's smart contract can query a verifier contract to check a user's verified status before granting reputation points or allowing certain actions. This method is powerful for ensuring one-person-one-vote systems but may face adoption barriers or privacy concerns from some users.
Behavioral analysis using on-chain data offers a passive sybil resistance layer. Your platform can assign reputation based on organic wallet activity such as: the account's age, diversity of interactions (not just with your contract), consistent transaction history over months, and participation in other reputable DeFi or NFT projects. A smart contract or off-chain indexer can score wallets using these heuristics. This method is less intrusive but requires careful design to avoid penalizing new but legitimate users.
Here is a simplified conceptual example of a staking contract that mints a reputation SBT. This contract, written in Solidity for Ethereum, allows users to stake tokens to receive a non-transferable NFT that encodes their reputation tier.
solidity// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; contract MemeReputation is ERC721 { IERC20 public stakingToken; uint256 public nextTokenId; // Maps tokenId to staker address and unlock time mapping(uint256 => address) public stakerOf; mapping(uint256 => uint256) public unlockTime; mapping(uint256 => uint256) public amountStaked; constructor(address _stakingToken) ERC721("MemeRep", "MEMEREP") { stakingToken = IERC20(_stakingToken); } function stakeForReputation(uint256 amount, uint256 lockDays) external { require(amount > 0, "Must stake >0"); require(lockDays >= 30, "Min lock 30 days"); stakingToken.transferFrom(msg.sender, address(this), amount); uint256 tokenId = nextTokenId++; _mint(msg.sender, tokenId); stakerOf[tokenId] = msg.sender; amountStaked[tokenId] = amount; unlockTime[tokenId] = block.timestamp + (lockDays * 1 days); } // Override to make NFT non-transferable (Soulbound) function _beforeTokenTransfer(address from, address to, uint256 tokenId, uint256 batchSize) internal override { require(from == address(0) || to == address(0), "Soulbound: non-transferable"); super._beforeTokenTransfer(from, to, tokenId, batchSize); } }
The _beforeTokenTransfer override ensures the reputation NFT is soulbound (non-transferable), tying the reputation directly to the staking wallet.
A robust system often combines multiple mechanisms. You might use a small proof-of-personhood check for initial access, a staking tier for voting weight, and on-chain history for bonus reputation. The key is to align the cost of attack with the value of the platform's incentives. Continuously monitor for new attack vectors, such as users borrowing funds to stake (flash loan attacks) or sybil clusters, and be prepared to adjust parameters or add new verification layers through community governance.
Step 4: Using Reputation for Governance and Access
This section details how to integrate on-chain reputation scores into your meme platform's governance mechanisms and content access controls, moving beyond simple token-weighted voting.
On-chain reputation transforms governance from a purely capital-based system to one that rewards long-term, constructive participation. Instead of a simple tokenVote, you can implement a reputationVote function where a user's voting power is a function of their reputationScore and a quadratic formula (e.g., sqrt(reputationScore)). This mitigates Sybil attacks and whale dominance, as accumulating high reputation requires consistent positive behavior over time, not just capital. For example, a proposal to change platform fees or add a new supported chain would be decided by the aggregated reputation of voters, not their token holdings.
Reputation scores can also gate access to premium features, creating a tiered user experience. You can use a smart contract modifier like onlyHighReputation to restrict certain actions. For instance, launching a new meme token collection might require a reputationScore > 100, ensuring only established community members can create assets. Similarly, access to a beta-features channel or the ability to pin comments could be unlocked at specific reputation thresholds (e.g., 50, 200, 500). This incentivizes quality contributions and reduces spam.
To implement this, your governance contract needs to read reputation scores from the registry. Using a pattern like an oracle or a direct contract call, you can verify scores on-chain. A basic Solidity implementation for a gated function might look like:
solidityfunction postPremiumContent(string memory _content) public { uint256 userRep = ReputationRegistry(getRegistryAddress()).getScore(msg.sender); require(userRep >= MIN_PREMIUM_REP, "Insufficient reputation"); // ... logic to post content }
This ensures the access control is decentralized and tamper-proof.
Consider implementing reputation decay or lock-up mechanisms to prevent stagnation. A score could slowly decay over time unless maintained through ongoing activity, ensuring the system reflects current community standing. Alternatively, when a user votes on a governance proposal, a portion of their reputation could be locked until the proposal executes, aligning their stake with the outcome. These mechanisms prevent reputation hoarding and ensure active, ongoing participation is required to maintain influence.
Finally, transparently track all reputation-weighted governance actions on-chain. Every vote, proposal creation, and access event should be emitted as an event and be queryable through subgraphs or indexers. This audit trail allows the community to verify that the system is functioning as designed and holds both users and platform administrators accountable. Tools like The Graph can be used to create a public dashboard showing proposal outcomes correlated with voter reputation distribution.
Development Resources and Tools
Tools and protocols for launching a meme platform with on-chain reputation, creator accountability, and Sybil resistance. Each resource below is used in production Web3 apps and can be integrated without inventing new primitives.
Frequently Asked Questions (FAQ)
Common technical questions and troubleshooting for developers building on-chain reputation systems for meme platforms.
An on-chain reputation system is a decentralized scoring mechanism that tracks user behavior and contributions directly on the blockchain. For meme platforms, it's essential to combat spam, sybil attacks, and low-quality content that plague permissionless environments.
Unlike traditional social media algorithms, on-chain reputation is transparent, composable, and user-owned. It typically quantifies actions like:
- Successful meme creation and curation
- Community engagement (votes, shares)
- Staking or locking tokens
- Historical accuracy of predictions or signals
This creates a trust layer, allowing platforms to surface quality content, allocate rewards fairly, and enable features like governance weight or exclusive access based on proven contribution, not just capital.
Conclusion and Next Steps
You've built the core of a meme platform with on-chain reputation. This section covers key takeaways, security considerations, and how to extend your project.
You now have a functional foundation for a meme platform where user reputation is transparently tracked on-chain. The core system you've built demonstrates how to use a ReputationToken to quantify engagement—minting tokens for content creation and burning them for moderation actions. This creates a self-regulating economic layer where a user's stake in the platform's health is visible and verifiable. The next step is to integrate this reputation score into the platform's frontend logic, using it to weight content visibility, grant moderation privileges, or unlock premium features.
Before launching, a thorough security audit is critical. Key areas to review include the minting and burning logic in your ReputationToken contract to prevent inflation exploits, the access controls on your platform's admin functions, and the handling of user-submitted data to avoid front-end manipulation. Consider using established libraries like OpenZeppelin for secure contract templates and tools like Slither or Mythril for static analysis. For mainnet deployment, start on a testnet like Sepolia or Holesky, and use a service like Tenderly to simulate complex transaction flows and edge cases.
To extend your platform, consider implementing more sophisticated reputation algorithms. Instead of simple mints and burns, you could incorporate time-based decay, quadratic weighting for votes, or sybil-resistance mechanisms like proof-of-personhood from World ID. You could also use the reputation score as collateral in a lending pool or to govern a DAO that controls a community treasury. Explore cross-chain reputation by deploying your token standard on multiple networks using a LayerZero OFT or Axelar GMP, allowing users to port their social capital across ecosystems.
For production, you'll need robust off-chain infrastructure. Index on-chain events for fast querying using The Graph or Subsquid. Implement secure, gasless transaction relaying for user actions via Biconomy or Gelato to improve UX. Use decentralized storage like IPFS or Arweave for meme metadata and images, storing only the content hash on-chain. Finally, engage with the community early—deploy on a testnet, gather feedback, and consider open-sourcing your contracts to build trust. The combination of memes and verifiable reputation creates a powerful new primitive for community-owned social platforms.