district0x / district-proposals

Proposals for new districts to be built by the district0x Team.
https://vote.district0x.io/
212 stars 36 forks source link

Frontpage - A Decentralized Forum Platform #254

Open Hibero opened 6 years ago

Hibero commented 6 years ago

Frontpage0x - A Decentralized Forum Platform

Purpose:

Frontpage0x is a decentralized forum platform that incentivises users to create valuable content and successful moderation of forums while providing penalties to malignant users, trolls, or bad moderators.

Description:

Frontpage0x uses a group of smart contracts to allow creation and moderation of forums and foster creation of quality posts. It can essentially be explained as a Token Curated Registry (TCR) composed of individual Curation Markets with moderation, tipping, and reputation features.

Fig 1. Frontpage TCR

**Forum Creation** When a user creates a forum, they must signal they want to generate a forum and put down a deposit with a one-time fee in Frontpage Tokens. At time of creation, the forum creator sets the name and the forum is given a unique id. Names are only restricted from having numbers in them. If there are multiple forums that share the same name, the forum with the most users will have the specified name, such as "/cats". The other forums that share the same name shall have their rank behind their addressable name, such as “/cats2” and "/cats3". **Forum Challenge** Within six months of the forum being generated (the challenge period), if a user finds that the forum is unethical or malicious, they may challenge the forum. To challenge the forum, the user must put down a deposit in Frontpage Tokens. Once the challenge starts, it continues like normal TCRs. Voters vote on whether the forum is ethical or not. - If the forum is deemed unethical, the challenger receives half of the deposit of the creator and voters share the other half. The forum is then removed from Frontpage Registry and current forum stakers lose their tokens. If there are previous challenges that have lost, they will receive half of their challenge deposit back from the creator. - If the forum is voted as ethical, half of the challengers deposit is added to the creator's current deposit and the other half is split among the voters. An unlimited number of challenges may happen within the challenge period. Once this challenge period is completed, the challenger receives all of the deposit (with the challenge winnings.) **Forum Staking and Number of Users** Addressable names are calculated by the number of users. This is calculated by the number of tokens that exist for the forum. For a user to have the privilege to post a comment or a thread, they must own the particular token for that forum. The price of this token is determined by the number of tokens already in existence per the [Curation Market Whitepaper.](https://docs.google.com/document/d/1VNkBjjGhcZUV9CyC0ccWYbqeOoVKT2maqX0rK3yXB20/edit) More tokens, higher the price; less tokens, lower the price. There is no limit of forum tokens that a user may have. They may also hold forum tokens from other forums. **Unstaking from a Forum** Unless the user has recently posted a comment or a thread, the user may return their forum token. The amount returned from the token is determined by the number of tokens in existence. e.g. 1 Forum Token out of 100 Forum tokens is unstaked and pays out 1% of the deposited amount. **Upvoting** The forums are open to readers but if there is content that anyone finds as valuable or insightful, the content can be upvoted for a small fee with Frontpage Mana. This fee will be split into three parts, one part for the content creator, one part for the moderator, and one part for the district funds. Content generators are expected to earn the vast majority of the fee.

Fig 2. Upvote fees are split

**Ranking** Posts with more upvotes will rise to the top of the ranks in the forum and fall over time. **Moderation** After the creation of a forum, the forum creator becomes a Lead Moderator. Lead Moderators have privileges to add and remove other moderators. Additional moderators are allowed but they will require to pay a similar fee as the forum creator during creation. In the event that a moderator finds the content of a post against the policies of the forum, they may call for user to forfeit a single forum token. This forum token will be forcibly unstaked and the funds will fall under control of the district, not the moderators. Moderators are limited to a number of tokens that they may forfeit per hour. Moderators will find it in their best interest to keep users by the way of upvoting. More user, more potential upvoting and more income; less users, less potential upvoting and less income. **Forum Takeovers** In the event that the moderators of “/cats” have acted in an unacceptable way. Users may decide to return their "/cats" tokens and buy "/cats2" tokens for the competing forum “/cats2” which has more acceptable moderators (note that users can always have deposits in multiple forums). Losing users possibly lowers the amount of quality content generated. Well-respected members that leave could bring a lot of users with them. If enough users switch, “/cats” may be bumped to “/cats2” and “/cats2” to “/cats”. This can be regarded as a forum takeover. A forum will need to have more users for over a week for the name change to occur. **Frontpage Voting Topics** - Forum Creation - Forum Creation and Challenger Deposit Amounts - Forum Creation Fees - Curation Token Parameters (Forum Token Parameters) - Initial Prices - Cost Curve - Upvoting Fee - Upvoting Fee Amounts - Upvoting Fee Distributions (Content Creator, Moderators, District Funds) - Use of Frontpage Funds **Frontpage Token** The Frontpage Token (FPT) will be used as a voting token similar to the Dank Token in Meme Factory. It will have the added utility of also being used as the native currency for Forum Creation. Forum Creation deposits and fees will need to be paid through the FPT. Note that the Frontpage token is not intended to be used for forum user deposits or upvote pricing. FPT will be generated by DNT (District Network Token) holders staking their DNT into the Frontpage District. For every week, that a DNT holder has their DNT staked into the district, they will earn 1/100 FPT per DNT. This is to reward long-term stakers. **Frontpage Mana** Frontpage Mana will be used to give Upvotes on posts and comments and to buy Forum Tokens. It is meant to be a very liquid and abundant token aka very cheap. To generate Mana, you can freely convert Frontpage Tokens to Mana at a ratio of 1:100 (Frontpage:Mana) and vice versa. At launch, there will be a large amount of Mana generated to jumpstart the system. **Frontpage Initial Funding** If there is an initial sale of the Frontpage Token to fund development bounties: - Total Initial Supply: 360,000 FPT - Token Sale: 260,000 FPT (FPT not bought will be burned) - Community Incentives: 100,000 FPT - Founders: **0** FPT ETH will be the fundraising currency The conversion will be equivalent to DNT being staked in the Frontpage District for a year i.e. 1 ETH will be converted to 5200 FPT (at a DNT price of 0.001ETH). All usage of funds will be voted on through a CarbonVote implementation. Remaining funds will be put into the districts control. *All Details are subject to change until Token Sale* **Contract Layouts**

Fig 3. Forum Creation and Challenging

Fig 4. Post Creation

Fig 5. Post Moderation

Fig 6. Comment Creation

Fig 7. User Creation

Fig 8. Forum Token Sale

Todo: Forum Contract Interaction with Users **Wireframes**

Fig 9. Forum Page

More to come... **Possible attack vector** Attackers generate a large amount of user accounts to disrupt a forum. This can be alleviated by having liveliness tests. - Liveliness tests would force deposited users to post or "upvote" so often or their token is unstaked and they are no longer deemed a user. This would force work on the attacker to maintain the attack. In general, liveliness tests seem to be useful to keep actual user numbers accurate. ## **Summary** Frontpage uses a multi-layered hybrid curation market to create strong incentives for insightful content creation while giving tools to users and moderators to battle malicious actors. Main differences between standard Curation Markets and Frontpage's Hybrid Curation Market - Names of forums are determined by the number of existing tokens - Non-refundable deposits by moderators to keep them in check. - Tokens can be forfeited by moderators. (A single one for a specified time.) This seems like a strong way to disincentivize and punish malicious users. - "Upvoting" are added to better incentivize content creators and moderators. This also allows reputation from taking over. i.e. ideas over people. - "Free" upvotes and downvotes can also be seen as new bonders bonding and old bonders leaving the contributor. **Possible considerations** - ~Moderator voting by forum token holders.~ A user attack by a rogue actor seems too possible. Nobody votes on moderators except moderators. Users can always group up to make a new forum or join one with more acceptable moderators. - ~Instead of district0x stakers determining bonders percentage from upvotes, contributors do.~ To make reputation a standardized thing, this will not be implemented. - ~Another possible idea is to have districts in district0x have a version of the features mentioned above natively. District0x stakers would vote on moderators and forum participants will need to be the district0x stakers. A certain amount of a depositor's district0x stake will be burned by moderators when they deem the depositor has broken policies too many times. DNT could also be used for "upvotes".~ **Tasks to do** - [ ] Phase 1 (I have a dream...) - [x] Finish Major Characteristics of Frontpage - [x] Finish Frontpage Token Parameters - [x] Generate Frontpage Contract Layouts - [x] Generate Initial Frontpage Wireframe - [x] Polish Explanatory Diagrams - [ ] Have Proposal Reviewed (Also go through consideration section and finalize) - [ ] Phase 2 (It's Raining Tokens, Hallelujah) - [ ] Generate Initial Frontpage Tokens (if needed) - [ ] Generate Carbon Vote Implementation(this step can be neglected if an aragon instance is applicable) - [ ] Build Initial Voting Website (this step can be neglected if an aragon instance is applicable) - [ ] Phase 3 (Finalize All The Things) - [ ] Finalize Contract Layouts - [ ] Finalize Frontpage Wireframes - [ ] Phase 4 (A wild forum appears) - [ ] Build prototype of a single forum (/Frontpage) on Test Network - [ ] Write forum token smart contracts - [ ] Write forum smart contracts - [ ] Finish Web3, IPFS, and Frontend functionality of forum - [ ] Complete User Page - [ ] Complete Buy Forum Token Page - [ ] Complete Forum Page - [ ] Test all core functionality - [ ] Phase 5 ( Build it and they may come) - [ ] Modify MemeFactory TCR Solidity Contracts to match Frontpage model - [ ] Finish Web3, IPFS, and Frontend Functionality of Frontpage - [ ] Complete Create Forum Page - [ ] Complete Landing Page - [ ] Complete Help Page - [ ] Test on Test Network - [ ] Phase 6 (My God, it's full of stars!) - [ ] Do audits on everything - [ ] Test on Test Network - [ ] Release on Main Network ## **Current Repository** https://github.com/Frontpage0x/frontpage0x ## **Ethereum Address**: 0x46742B64E57bBAEEF4B45BB98B1283B0CB9e71BF
Bradymck commented 6 years ago

Nice. Great to see progress on the checklist. Have you thought about setting open bounties for this?

Hibero commented 6 years ago

This has been a bit of obsession of mine over the last week but I finally feel that I'm nearly done with the large brush strokes. Making it into curation markets wrapped around by a TCR has been fun lol

I plan on reading through the proposal, polishing off certain aspects, and creating rough contract layouts this week. I think the Week of the 18th "I'll put my money where my mouth is" and create some bounties for reviews, initial tokens, and visuals (images, logo, and wireframes).

P.S. I'll admit, the main concern is scalability. Been reading a lot about Plasma and I'm curious if I should strategically push the smart contract architecture in that direction.

Bradymck commented 6 years ago

As far as Plasma is concerned. Can you elaborate on what you mean by pushing the architecture in that direction? Is there something specific you want to do that payment and state channels won't do right now?

Hibero commented 6 years ago

I was thinking that if each post, comment, and "like" were over the Ethereum Main Network they may cause heavy contract usage (state changes). Maybe I missed something but I thought state-channels were restricted to actual transactions. I do know that there are ways to do ERC-20 token state-channels, so I guess for "likes" that could be doable.

Hibero commented 6 years ago

Mike Goldin gave some good insight into using the Plasma architecture. I'll need to look into it more as we farther in smart contract development.

Also, anyway we can use the EIP way of doing proposals? I'd really like to have a way to track my changes and issues aren't tracked.

nginnever commented 6 years ago

Maybe I missed something but I thought state-channels were restricted to actual transactions.

State Channels are not necessarily limited to balance state, however it is unclear how useful it may be for other types of state. State channels are primarily useful when you have a system where consensus on the state can be broken away from the main-chain and reduced to unanimous consensus between a finite N parties (unanimous consensus implies N can't get very large due to signature reconstruction needed on-chain and perhaps client side live-ness concerns).

For example it is perfectly acceptable to let two parties agree to their own transactions between them, since updating the state of their balances cannot affect the consensus of the whole when a simple rule on-chain enforces off-chain ledger updates can't go beyond the on-chain bonded value.

If you need a scalable system where your state update is shared or relevant to many participants and has no way to make state updates modular to small finite participants, then it may good to look at app specific side chains or plasma.

Ways in which state-channels may provide consensus on state that is not a balance ledger is through something like fun fair. You can have complicated state transitions that represent a casino game as long as the final state resolves to a balance. Or in the case of battling cryptokitties you may have the channel state be the stats of the kitteh, though these stats cannot carry over any state between channels, or the state updates must be exclusive so things like leveling from battles is not possible without some sort of consensus mechanism or rule system in place.. plasma.

So one might argue that all of this still settles eventually to only some balance update that was only relevant to the parties involved. Hope this helped!

keeganquigley commented 6 years ago

If this is similar to Steemit but without the weighted mechanism I'm all for it. With all the EOS and LISK drama going on, I've been thinking that DPOS isn't the best method for social networks. There is a better way for a monetized reddit and this could be the answer.

Bradymck commented 6 years ago

If I understand the structure, it's more of a granular TCR, so if you want to post a thread of any kind you have to put up a token deposit and if it's spam you could lose that deposit to the person who is challenging that post as "spam". Then everyone votes to add it to the forum or not.

This seems like it would be useful but a very slow way of operating a forum because of the challenge and voting periods. I think a micro TCR may need to be developed for this to work right. Though that would take a pretty active and large community to work right. However, it would keep it very high quality.

This type of accelerated TCR would need to experiment with a lot but I do think it would be an important one. Right now most TCRs take nearly a week to go through the full deposit challenge and voting periods.

Though I guess to simplify it, the period of time you can challenge something could be very short like a few hours or a day tops for new accounts and eliminate this entirely for older accounts.

Hibero commented 6 years ago

@radioactivedrummer @Bradymck

Sorry about not replying earlier. Currently on a sabbatical of sorts. So in the implementation I try to describe above, accounts that want the ability to post threads or comments would need to have a stake. That stake would be specific to that subreddit or "sub"-forum. The moderators of that subreddit can take that stake at any point if they deem it to be against the rules of the forum. Please note that users can unstake their token at anytime, given they haven't posted something recently.

There is no TCR element for moderation. The TCR element is mostly in the forum generation part, not the forum usage part. Frontpage is closer to a ranked TCR overall and just a staked system at the subreddit level. Which should be admissible due to subreddit generation being a much irregular thing then anything else in a forum congregator.

There are mechanisms that keep moderators from doing "slashing" those user stakes willy-nilly. For a forum creator (future moderator) to create a forum they must put down a large stake and go through the creation process. So they have some form of incentive to make sure they a) don't make forums that go against the voters morals and b) to put a stake into the forum's success.

When the forum is created, it is given an unique identifier and is given it's wanted name depending on it's number of users. (Half of the creator's deposit is returned also) This is a sort of ranked system where the forum with the most staked users get the particular forum's wanted name. All others will have their rank behind it such at "subforum-2".

So if moderators muck up, then they have the potential to lose their given forum name, possible lose their whole stake in the subreddit, and lose possible income.

Monetization would be determined by the voters of the district but my intent was to make system where the content generators (and moderators) are compensated moreso than the host.

From a base user perspective: 1) Put in money to post 2) Post 3) If the moderators are being jerks, leave. *I'm still going back and forth with having paid for upvoting that anyone can do or making user have to have a stake to upvote (to limit the amount of fake upvotes)

Honestly, I need to do a better flowchart or something. I'm trying to keep it as simple as possible but at the same time trying to incentivize the players correctly.

Bradymck commented 4 years ago

Hey @Hibero ,

I'm not sure if you're aware but we recently launched a new bounty to migrate your proposals to the actual District Registry: https://registry.district0x.io/

We're replacing the old voting app with the registry. Let me know if you need help but I would love to see you migrate this over so you can claim your DNT.

It does take a 10,000 DNT submit to submit your proposal but this gives you an extra 2000 you can stake in the registry beyond the deposit amount.

Hit me up on Telegram or Discord if you need help or have questions.

Telegram: https://t.me/district0x/75217 Discord: https://discord.gg/P9RQejv

PS, please excuse the canned response. I am encouraging everyone here to start migrating so they can claim their 12000 DNT.