{"signature": "0x79b5503b6b333f7f02632fbd0ad0664caaa9dac96609bab3bd482a519a8335d979608f43474019827fabb1cc402ca79adc31bcc1e377234a7e8e39d96f0382821c", "application": {"round": "0x2d4d59757d5a7c3c376fc47b9f4501c347b9654d", "answers": [{"type": "email", "hidden": true, "question": "Email Address", "questionId": 0, "encryptedAnswer": {"ciphertext": "ww+tfpABqEYs98Jk5pBYkR3kW4kWw8LEvQRmYztrxF0C1hSfIS8rN5K68IeJ/mtj", "encryptedSymmetricKey": "c04242b9be94425fa0e3f77223a6717034e5d70c681493ee74a8d09ac79e754edb64ec5e8bb718db3b1de1da708ed512c9dbe86091619a25477b5b1a76bfc8e7fe22d8cbd22d1bed378988e644bebbfe2649fefff6f6cb25fa917b0349ddf691eec08eb6cc0bdf2ca514722a9ac877532440c191291bfa3fcb80c642754cd1230000000000000020742c8a90de7781916c57485f0034f0d236255e265412ff430f29553552d9d046a7937b7be721ced9f986d686b246fe8d"}}, {"type": "short-answer", "answer": "@estebanabaroa", "hidden": true, "question": "Telegram Handle", "questionId": 1}, {"type": "short-answer", "answer": "https://github.com/plebbit", "hidden": true, "question": "Project GitHub Repo", "questionId": 2}, {"type": "short-answer", "answer": "https://t.me/plebbit", "hidden": true, "question": "Link to your Public Group Chat", "questionId": 3}, {"type": "short-answer", "hidden": true, "question": "Have you participated in a previous Gitcoin Grants Round? If so, please name the rounds or link the builder profile to prior rounds.", "questionId": 4}, {"type": "paragraph", "answer": "\n    Potential Integration Points\n\n    Could use Ethereum for certain verification processes\n    Might implement smart contracts for specific features\n    May utilize Ethereum for optional cryptocurrency features\n\n    Indirect Benefits use cases for decentralized applications\n\n    Contributes to broader Web3 ecosystem development\n    May drive adoption of blockchain technologies\n", "hidden": true, "question": "How does your project contribute significantly to the Ethereum network's infrastructure? Please provide specific examples and metrics if available.", "questionId": 5}, {"type": "paragraph", "answer": "Privacy Innovations:\n\n    Decentralized Architecture\n\n    No central servers storing user data\n    P2P content distribution via IPFS\n    No mandatory account registration\n    Anonymous participation options\n\n    Privacy-Preserving Features\n\n    Encrypted communications\n    No tracking mechanisms\n    No personal data collection\n    Optional identity verification\n\nInteroperability Developments:\n\n    Protocol Design\n\n    Open standards for content sharing\n    IPFS integration\n    Compatible with existing P2P networks\n    Extensible architecture\n\n    Integration Capabilities\n\n    API development for third-party apps\n    for multiple clients\n    Cross-platform compatibility\n    Modular design approach\n\nUser Experience Improvements:\n\n    Interface Design\n\n    Reddit-like familiar interface\n    Simplified on\n    Community management tools\n    Mobile-friendly design goals\n\n    Content Management\n\n    Decentralized moderation tools\n    Community governance features\n    Content discovery mechanisms\n    Voting and ranking systems\n\nTechnical Innovations:\n\n    Content Distribution\n\n    P2P content sharing\n    Distributed storage\n    Efficient data propagation\n    Redundancy mechanisms\n\n    Moderation System\n\n    Cryptographic verification\n    Community-based governance\n    Transparent moderation actions\n    Fork capability for communities", "hidden": true, "question": "Describe any pioneering development work in your project, particularly in enhancing privacy, interoperability, or user experience.", "questionId": 6}, {"type": "paragraph", "answer": "Key Problems Addressed:\n\n    Centralization Issues\n\n    Challenge: Traditional social platforms have central points of control\n    Solution: Fully decentralized architecture using IPFS\n    Improvement: No single point of failure or control\n\n    Privacy Concerns\n\n    Challenge: User data collection and surveillance\n    Solution: Privacy-first design with optional anonymity\n    Improvement: No mandatory personal information or tracking\n\n    Content Censorship\n\n    Challenge: Platform-controlled content moderation\n    Solution: Community-governed moderation\n    Improvement: Resistant to centrorship\n\n    Storage Scalability\n\n    Challenge: Centralized server costs and limitations\n    Solution: Distributed IPFS storage\n    Improvement: More efficient resource utilization\n\nAdvantages Over Alternatives:\n\n    Technical Architecture\n\n    P2P content distribution\n    No reliance on blockchain for every action\n    More efficient resource usage\n    Better scalability potential\n\n    User Experience\n\n    Familiar Reddit-like interface\n    Lower barrier to entry\n    No cryptocurrency required for basic use\n    Simplified onboarding\n\n    Governance Model\n\n    Community-driven decision making\n    Transparent moderation\n    Ability to fork communities\n    No corporate control\n\n    Cost Structure dependency\n\n    Lower operating costs\n    Sustainable community model\n    Optional cryptocurrency integration\n\nHowever, it's important to note that Plebbit is still evolving and these solutions continue to be developed and refined.", "hidden": true, "question": "What specific problems or challenges in the Ethereum ecosystem does your project address? How does your solution improve upon existing alternatives?", "questionId": 7}, {"type": "paragraph", "answer": "Here's a suggested roadmap and funding allocation strategy for Plebbit's development:\n\nPhase 1: Foundation (Months 1-6) Estimated Budget: 30% of Grant\n\n    Core Infrastructure\n\n    Stabilize P2P networking\n    Enhance IPFS integration\n    Improve content distribution\n    Security hardening\n    Basic moderation tools\n\n    Essential Features\n\n    Core client development\n    Basic API implementation\n    Community management tools\n    Content persistence solutions\n\nPhase 2: Enhancement (Months 7-12) Estimated Budget: 35% of Grant\n\n    User Experience\n\n    Mobile app development\n    UI\n    Enhanced search functionality\n    Rich media support\n    Improved onboarding\n\n    Developer Tools\n\n    SDK development\n    API documentation\n    Testing frameworks\n    Integration guides\n\nPhase 3: Scaling (Months 13-18) Estimated Budget: 25% of Grant\n\n    Advanced Features\n\n    Enhanced moderation tools\n    Community governance systems\n    Content recommendation\n    Advanced search capabilities\n\n    Platform Scaling\n\n    Performance optimization\n    Network efficiency\n    Load balancing\n    Storage optimization\n\nPhase 4: Ecosystem (Months 19-24) Estimated Budget: 10% of Grant\n\n    Integration & Partnerships\n\n    Third-party integrations\n    Developer ecosystem\n    Community partnerships\n    Educational resources\n\n    Long-term Sustainability\n\n    Governance framework\n    Community tools\n    Documentation maintenance audits\n\nBudget Allocation:\n\n    Development (50%)\n\n    Core protocol\n    Client applications\n    Security features\n    Performance optimization\n\n    User Experience (20%)\n\n    Interface design\n    Mobile development\n    Usability testing\n    Accessibility\n\n    Documentation & Support (15%)\n\n    Technical documentation\n    User guides\n    Developer resources\n    Community support\n\n    Quality Assurance (10%)\n\n    Testing\n    Security audits\n    Bug bounties\n    Performance monitoring\n\n    Community & Marketing (5%)\n\n    Community building\n    Educational content\n    Awareness initiatives\n    Developer outreach\n\nSuccess Metrics:\n\n    Technical\n\n    Network stability times\n    Storage efficiency\n    Security incidents\n\n    Adoption\n\n    Active users\n    Content creation\n    Developer participation\n    Community growth\n\n    Development\n\n    Code quality\n    Documentation coverage\n    Feature completion\n    Bug resolution\n\nRisk Management:\n\n    Technical Risks\n\n    Regular security audits\n    Backup solutions\n    Contingency plans\n    Performance monitoring\n\n    Community Risks\n\n    Regular feedback\n    Transparent communication\n    Community involvement\n    Clear governance\n\n    Development Risks\n\n    Agile methodology\n    Regular reviews\n    Milestone tracking\n    Resource management\n", "hidden": true, "question": "Outline your project's roadmap and how the grant funds will be used to achieve your development goals.", "questionId": 8}, {"type": "paragraph", "answer": "\n    Infrastructure\n\n    Uses IPFS for distributed content storage\n    Demonstrates viable P2P architectures\n    Reduces reliance on centralized servers\n    Provides use case for decentralized systems\n\n    Network Effects\n\n    Encourages adoption of decentralized technologies\n    Builds user awareness of P2P systems\n    Creates demand for decentralized services\n    Expands Web Aspects:\n\n    Platform Security\n\n    Encrypted communications\n    Cryptographic verification systems\n    No central point of failure\n    Distributed data storage\n\n    User Security\n\n    Privacy-preserving design\n    Optional anonymity\n    No required personal data\n    Community-based trust systems\n\nIndirect Benefits to Ethereum:\n\n    Ecosystem Growth\n\n    Demonstrates practical Web3 applications\n    Potential for future Ethereum integrations\n    Expands decentralized use cases\n    Drives innovation in P2P systems\n\n    Technical Learnings\n\n    Protocol development insights\n    Scalability solutions\n    Security implementations\n    Decentralized governance models\n", "hidden": true, "question": "How does your project contribute to the decentralization and security of the Ethereum network?", "questionId": 9}, {"type": "paragraph", "hidden": true, "question": "For any project deploying smart contracts on blockchain networks, please list all your deployer addresses and their corresponding blockchain networks. Use this format for each entry: [deployer_address], [chain_id]\u2014for example, 0x123abc..., 42161 (This represents a deployer address on the Arbitrum network). Please include a separate line for each unique deployer address and blockchain combination.", "questionId": 10}], "project": {"id": "0xd77bec3500a1b3e54ead391aeaad9a664f92643beaa8a50d4302bd67ef7949cf", "title": "Plebbit", "logoImg": "bafkreifvkkfu3do7o2wawba3my7rirune5yeyait44nv2hwqothv4uwjne", "metaPtr": {"pointer": "bafkreieddstoxh2kqbj2kk3zqehbnb4fcwycoue3xxghsqd6rta5st6bwy", "protocol": "undefined"}, "website": "https://plebbit.com", "createdAt": 1718559288527, "userGithub": "rinse12", "credentials": {"github": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..nGsFqY3Ebwcy7KM9uV6EMrLqcpZ-KtojQah-mYrcp1ilzrAjAFe-EH2zSTRDVKcK8SF3fgrmElurF0DSGA5IBw", "type": "Ed25519Signature2018", "created": "2024-10-23T15:46:13.225Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2024-10-23T15:46:13.225Z", "expirationDate": "2025-01-21T15:46:13.225Z", "credentialSubject": {"id": "did:pkh:eip155:1:0xCed7E65e1da560bbdA16D308A63D12f91A4ca6B2", "hash": "v0.0.0:W+gqblm5KduyvVTbXMopqOMxTpC8Lvxu+sDW7N5QJ6s=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextGithubOrg#plebbit#98007027"}}, "twitter": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..zQGE0g6bpjnjUVhEHQWVLPgZr2VdGxaIm0MOeUnHu9eRa_nqt6ChLDd5S-5uOuMX3-Ygdo2Y2Fi_Xd88W9z0CQ", "type": "Ed25519Signature2018", "created": "2024-10-23T15:45:54.077Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2024-10-23T15:45:54.077Z", "expirationDate": "2025-01-21T15:45:54.077Z", "credentialSubject": {"id": "did:pkh:eip155:1:0xCed7E65e1da560bbdA16D308A63D12f91A4ca6B2", "hash": "v0.0.0:6IyKMzPPSk3nnVB6MegFtMyAPjINWA/ypy1GtA66vww=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextTwitter#getplebbit"}}}, "description": "Plebbit is a protocol and tooling for creating decentralized forum applications like Reddit, Facebook groups, Discourse, etc. It's a pure P2P protocol, it doesn't use any central server, databases, public HTTP end point, DNS, etc. It uses parts of the IPFS and Ethereum stack to create everything it needs:\n\nIPFS for immutable data, like a published comment or a recent subplebbit page.\n\nIPNS for mutable data, like replies to a comment, upvote counts, new posts/comments published on a subplebbit, etc.\n\nIPFS pubsub for authors publishing comments/votes to a subplebbit and for the captcha challenge exchange between authors and subplebbits.\n\nENS for usernames, community names, and serving the client in browsers.\n\nScalability and fees\n\nA decentralized social media/forum has 2 problems: How to store the entire world's data on a blockchain, and how to prevent spam while being feeless. We propose solving the data problem by not using a blockchain for content, but rather IPNS and IPFS pubsub. Unlike cryptocurrencies that must know the order of each transaction to prevent double spends, social media does not care about the order of posts, nor about the availability of old posts.\n\nNote that we must still use a blockchain (ENS) for usernames and community names because those do care about doublespends and ledger history availability.\n\nIPNS\n\nThe IPNS name (also ENS name) is the name and address of the subplebbit, e.g. \"memes.eth\".\n\nPubsub\n\nTo publish a post to a subplebbit, a user would publish a pubsub message with a \"topic\" equal to the subplebbit's ENS name. This allows the subplebbit owner to reply with \"challenge\" and \"challengeverification\" messages signed with his ENS' public key that all pubsub peers can verify.\n\nCaptcha service over pubsub\n\nNondeterministic pubsub (like user generated comments) is susceptible to spam attacks that would DDOS it, as well as makes it impossible for moderators to manually moderate an infinite amount of bot spam. We solve this problem by requiring publishers to first request a captcha challenge from the subplebbit owner's peer. If a peer or IP address relays too many captcha challenge requests without providing enough correct captcha challenge answers, it gets blocked from the pubsub. This requires the subplebbit owner's peer to broadcast the result of all captcha challenge answers, and for each peer to keep this information for some time.\n\nNote: The challenge implementation is completely up to the subplebbit owner. He can decide to prompt all users, first time users only, or no users at all. He can proxy 3rd party services like Google captchas. He can use other challenge types, like a proof of stake/holding/payment of a certain token, a whitelist, invite list, etc.\n\nLifecycle of creating a subplebbit\n\nSubplebbit owner starts a Plebbit client \"node\" on his desktop or server. It must be always online to serve content to his users.\n\nHe generates an IPNS public key, and adds it as a TXT record to his ENS name, which will be the \"address\" of his subplebbit.\n\nHe configures captcha options, like how often and what kind of captchas to show.\n\nHe publishes the metadata of his subplebbit to his IPNS record. This includes subpebblit title, description, rules, list of public keys of moderators, etc.\n\nLifecycle of reading the latest posts on a subplebbit\n\nUser opens the Plebbit app in a browser or desktop client, and sees an interface similar to Reddit.\n\nHis client joins the public key addressing network as a peer and makes a DHT query for each address of each subplebbit he is a member of. The queries each take several seconds but can be performed concurrently.\n\nThe query returns the latest posts of each subplebbit, as well as their metadata such as title, description, moderator list and captcha server URL.\n\nHis client arranges the content received in an interface similar to Reddit.\n\nLifecycle of publishing a post on a subplebbit\n\nUser opens the Plebbit app in a browser or desktop client, and sees an interface similar to Reddit.\n\nThe app automatically generates a public key pair if the user doesn't already have one.\n\nHe publishes a cat post for a subplebbit called \"cats.eth\"\n\nHis client joins the pubsub network for \"cats.eth\"\n\nHis client makes a request for a captcha challenge over pubsub.\n\nHis client receives a captcha challenge over pubsub (relayed from the subplebbit owner's peer).\n\nThe app displays the captcha challenge to the user in an iframe.\n\nThe user completes the captcha challenge and publishes his post and captcha challenge answer over pubsub.\n\nThe subplebbit owner's client gets notified that the user published to his pubsub, the post is not ignored because it contains a correct captcha challenge answer.\n\nThe subplebbit owner's client publishes a message over pubsub indicating that the captcha answer is correct or incorrect. Peers relaying too many messages with incorrect or no captcha answers get blocked to avoid DDOS of the pubsub.\n\nThe subplebbit owner's client updates the content of his subplebbit's public key based addressing automatically.\n\nA few minutes later, each user reading the subplebbit receives the update in their app.\n\nIf the user's post violates the subplebbit's rules, a moderator can delete it, using a similar process the user used to publish.\n\nWhat is a \"post\"\n\nA post is an IPFS file for its immutable content, like timestamp, title, author signature, etc. Each post's IPFS file also contains its own IPNS name which links to its mutable content, like its upvote count, replies, etc. Each post is part of a linked list, i.e. it points to the previous post's IPFS CID.\n\nWhat is a \"subplebbit\"\n\nA subplebbit is an IPNS record updated every 5 minutes, it contains the latest post's CID, the title, description, the CIDs of the latest post pages sorted by new, hot, top, etc. It also contains the pubsub \"topic\" address to publish to it. Full schema available at https://github.com/plebbit/plebbit-js#schema\n\nUsing anti-spam strategies other than the captcha service\n\nThe captcha service can be replaced by other \"anti-spam strategies\", such proof of balance of a certain cryptocurrency. For example, a subplebbit owner might require that posts be signed by users holding at least 1 ETH, or at least 1 token of his choice. Another strategy could be a proof of payment, each post must be accompanied by a minimum payment to the owner of the subplebbit. This might be fitting for celebrities wanting to use their subplebbit as a form of \"onlyfan\", where fans pay to interact with them. Both these scenarios would not eliminate spam, but they would bring them down from an infinite amount of spam, to an amount that does not overwhelm the pubsub, and that a group of human moderators can manage. Proof of balance/payment are deterministic so the pubsub can block spam attacks deterministically. Even more strategies can be added to fit the need of different communities if found, but at this time the captcha service remains the most versatile strategy.\n\nConclusion\n\nWe believe that the design above would solve the problems of a serverless, adminless decentralized Reddit alternative. It would allow unlimited amounts of subplebbits, users, posts, comments and votes. This is achieved by not caring about the order or availability of old data. It would allow users to post for free using an identical Reddit interface. It would allow subplebbit owners to moderate spam semi-automatically using their own captcha service over peer-to-peer pubsub. It would allow for all features that make Reddit addictive: upvotes, replies, notifications, awards, and a chance to make the \"front page\". Finally, it would allow the Plebbit client developers to serve an unlimited amount of users, without any server, legal, advertising or moderation infrastructure.\n\n", "lastUpdated": 0, "projectGithub": "plebbit", "projectTwitter": "getplebbit"}, "recipient": "0x5Bc4FF33f86E0272be53Fa25861294489AB2FE2a"}}