Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Next Step Microgrant: plebbit: serverless, adminless, decentralized reddit alternative #143

Closed
estebanabaroa opened this issue Mar 23, 2022 · 2 comments
Assignees
Labels
type:microgrant Adoption Microgrant (https://github.com/protocol/ipfs-grants/blob/master/MICROGRANTS.md)

Comments

@estebanabaroa
Copy link

estebanabaroa commented Mar 23, 2022

1. What is your project?

Plebbit is serverless, adminless, decentralized Reddit alternative built completely with IPFS/IPNS/pubsub/ENS. It doesn't use any central server, central database, public HTTP endpoint or DNS, it is pure peer to peer (except for the web client that can't join a P2P swarm directly, web clients use interchangeable HTTP providers).

How it uses the IPFS/ENS stack:

  • IPFS for immutable data, like a published comment or a recent subplebbit page
  • IPNS for mutable data, like replies to a comment, upvote counts, new posts/comments published on a subplebbit, etc
  • Pubsub for authors publishing comments/votes to a subplebbit and for the captcha challenge exchange between authors and subplebbits
  • ENS for subplebbit names and usernames (also works with public key hashes for people who don't want to use crypto)

How we solve pubsub DDOS/spam:

Nondeterministic 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 challenge (captcha or other) from the subplebbit owner's peer. If a peer or IP address relays too many challenge requests without providing enough correct challenge answers, it gets blocked from the pubsub. This requires the subplebbit owner's peer to broadcast the result of all challenge answers, and for each peer to keep this information for some time.

What is a "post"

A 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.

What is a "subplebbit"

A 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

Full whitepaper: plebbit/whitepaper#2

2. How are you planning to improve this project?

Release alpha client and get our community to test it. Alpha client will have the following functionalities:

  • Create a subplebbit using a GUI (Electron client with bundled IPFS binary)
  • Publish posts, comments and votes over pubsub using a GUI (Web and Electron clients)
  • Request and serve simple image captcha challenges over pubsub using a GUI (Web and Electron clients)
  • Get a feed of multiple subplebbits using a GUI, with preloading optimizations of IPFS/IPNS data (Web and Electron clients)

3. Will the work be Open Source?

yes

4. If selected, do you agree to complete weekly updates and a grant report upon conclusion?

yes

5. Does your proposal comply with our Community Code of Conduct?

yes

6. Links and submissions

Additional questions:

@estebanabaroa estebanabaroa added the type:microgrant Adoption Microgrant (https://github.com/protocol/ipfs-grants/blob/master/MICROGRANTS.md) label Mar 23, 2022
@ErinOCon ErinOCon assigned ErinOCon and unassigned SeedingTrees Mar 24, 2022
@ErinOCon
Copy link
Collaborator

Hi @estebanabaroa, Thank you for your proposal. We will review this and get back to you, on this thread, with a status update or questions.

@ErinOCon
Copy link
Collaborator

Hi @estebanabaroa, This microgrant has been approved! Look out for an email to submit payment details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type:microgrant Adoption Microgrant (https://github.com/protocol/ipfs-grants/blob/master/MICROGRANTS.md)
Projects
None yet
Development

No branches or pull requests

3 participants