Who moderates Yappr?
How moderation elections work on Dash Platform, and why Yappr’s moderators will be chosen by masternodes.
Samuel Westrich · October 2026 · 17 min read
A series in three parts
- Dash Platform 5.0
- Who moderates Yappr? (you are here)
- How to start or join a Yappr moderation team
Decentralized moderation is one of the hardest problems that we at DCG have ever worked on, and I would go further: I think it is one of the hardest unsolved problems in this whole industry. Plenty of smart people have tried. The trouble is that almost everything you want from it contradicts something else you also want from it.
Here are the contradictions as I see them:
- Nobody should be in charge, but someone has to act. The whole point of a decentralized network is that no single party controls it. But scams, spam waves and illegal content have to come down fast, and fast means somebody holds the power to do it.
- The community should decide, but anyone can fake a crowd. On an open network, accounts cost almost nothing. A vote that anyone can join is a vote won by whoever runs the most bots.
- Moderators must be able to act alone, but nobody should have unchecked power. Waiting for a committee on every spam post is far too slow. Letting one person remove anything, at any time, forever, is how abuse starts.
- The rules should never change under you, but bad moderators cannot be permanent. People need to know what they signed up for when they started posting. They also need a way out if the people enforcing those rules go rogue or disappear.
- The builders should stay out of it, but they are the first door everyone knocks on. The people who build an app should not decide what you can say on it. Yet they are the ones governments, journalists and angry users all go to first.
- Moderators should be paid, but paying for moderation rewards moderating. Unpaid moderators burn out, or end up being people with an agenda. Paying per action risks rewarding people for removing too much.
Most projects pick one side of each pair. The big platforms pick “someone is in charge” every single time. Most of crypto picks “nobody is in charge”, and then either lives with the spam or quietly filters it in its own app, which binds nobody else.
For Yappr, our answer is to split the job up. The masternode network picks the moderators, the moderators can only act on rules they published before the election, and Dash Platform enforces all of it on every node. Nobody, DCG included, can change those rules afterwards. Short answer first, then the details.
The short answer
Yappr’s moderators will be elected by the Dash masternode network, the same network that has voted on the Dash treasury since 2015 and that decides contested usernames on Platform today.
Anyone can put a team forward. The team publishes a charter: who is on it, which rules it will enforce, what it will charge, and how its members will share the pay. Masternodes vote, and the winning team moderates Yappr. Every action it takes is recorded publicly with a reason, and it can only act on the reasons it listed before the election.
DCG cannot moderate Yappr at all, not before the first election and not after it. Until a team is seated, nobody can post on Yappr, so there is nothing to moderate, and from then on only the elected team can act. That is not a promise. It is written into the Yappr contract, and every node on the network enforces it.
How it goes wrong today
On the big social networks, the company moderates. Things do get removed, but one company ends up in charge of the conversation. It writes the rules, changes them when it likes, enforces them through people you never meet, and it is the single door that governments, advertisers and angry mobs all know to knock on.
On a blockchain we had the opposite problem. Before Dash Platform 5.0, there was no way to keep an abusive identity out of an application. The app’s owner could not delete what someone wrote and could not stop them from writing the next thing. An app could hide content in its own interface, but that bound nobody except that one app: every node on the network still accepted the posts, and any other client still showed them.
So before Yappr could launch for real, we had to decide who should hold this power, and then build it into Platform itself.
The options we had
We looked at four ways to do it.

Figure 1. Four ways an app can run moderation. The first three each break in a way we could not accept for Yappr. The fourth is what the Yappr contract declares.
Nobody moderates. This is the purest version of “decentralized”, and it fails the fastest. Spam does not care about ideals.
The owner moderates. This is the easiest to build, and Platform 5.0 supports it: a contract can let its owner, or a fixed list of up to 16 moderators, ban, suspend and delete. For a lot of applications that is perfectly fine. For a social network it is the wrong answer. Everything comes back to whoever holds one key, and that person can be pressured, can be wrong, or can lose the key, with everyone on the app paying for it. It is also exactly what people come to a decentralized network to get away from.
Everyone votes on everything. This sounds the most democratic, but on any network where accounts are cheap, whoever makes the most accounts wins every vote. It is also far too slow. A scam post that needs a week of voting before it can come down has already done its damage.
An elected team. People make the day to day calls, because people are fast and can judge context. The people who elect them have real money at stake, so the vote cannot be won with bots. The team, its rules and its actions are all public. This is the one we chose.
A comparison that helped me explain it: in football the players do not vote on every foul, and a club does not referee its own matches. The league picks the referees, the referees apply a rulebook everyone can read, and every call is on camera. Elected moderation works the same way. Masternodes are the league, the team is the referee crew, the charter is the rulebook, and the blockchain is the camera.
How the pieces fit together
Four parties are involved, and each one can only do its own part.

Figure 2. Masternodes vote for a charter, the winning charter seats its team, and the team moderates Yappr, citing a reason from its charter every time. A small fee on every post pays the team.
What each one does:
- People on Yappr post and reply. Each post also pays a very small moderators fee.
- Masternodes and evonodes vote for a charter. They never touch a post themselves.
- The moderation team is a leader and up to 15 members. It moderates Yappr, and every action has to cite one of the reasons in its charter.
- The Yappr contract holds the rules of the game, and they were frozen when the contract was created. Which content can be moderated, what a team may do to it and how long an election lasts can never be changed afterwards, not even by DCG.
Why masternodes?
Because a masternode’s vote cannot be faked. To run a masternode you lock 1,000 DASH. An evonode locks 4,000 DASH, which is why its vote counts four times. Making a thousand fake accounts costs almost nothing. Making a thousand masternodes would take a million Dash.

Figure 3. A vote is backed by Dash that is locked up. An evonode locks four times as much as a masternode, so its vote counts four times. A fake account has nothing locked and no vote.
Three more things make masternodes a good fit. First, they already vote: the treasury has run on masternode votes for more than ten years, and contested usernames on Platform are decided the same way, so we reused that machinery instead of inventing a new one. Second, they are not Yappr: they are neither the people who built it nor the people being moderated, which makes them about as neutral a third party as a decentralized network has. Third, they have every reason to want applications on Dash to be healthy and trusted, because that is where the value of their collateral comes from.
Is that a perfect electorate? No. Masternode owners are not a mirror of Yappr’s users, and I am sure some people will argue they are the wrong voters. In my opinion they are the best voters available today, and the important part is that they choose people, not posts.
How an election works
Here is an election from start to finish, with the numbers Yappr’s contracts declare on mainnet.

Figure 4. Yappr’s election on mainnet: three days of notice after the contract is registered, then 7 days for teams to enter and 7 more days of voting. With a single team there is nothing to vote on, so it is seated on day 7.
- A leader writes a charter. It says what the team will moderate and how, lists the reasons it will act on (for example Spam, Scam or Impersonation, each one a short public document), says what share of the moderators fee it will charge, and says how the pay will be split inside the team.
- People ask to join. Anyone who wants to serve on that team files a request with a private message that only the leader can read. Nobody can be put on a team without having asked.
- Everyone gets three days of notice. Nobody can enter the election until three days after the Yappr contract is registered. Leaders can file charters and collect members during that time, so nobody gets seated before the community has seen the contract.
- The leader enters the election. The leader picks members from those requests and enters the charter. Entering costs 0.5 Dash, which pays for the masternode votes.
- Other teams have 7 days to enter too. Masternodes can vote from the moment the election opens.
- If another team entered, voting runs 7 more days. The charter with the most votes wins. There is no option to block everyone, so an election always ends with a team, and a tie goes to the team that entered first.
- If nobody else entered, there is nothing to vote on, and the team is seated when the 7 days end.
When a team wins, its charter is written to the chain and the team can start right away. On testnet, where you can try all of this today, the notice and both windows are one day each.
Joining and leaving a team
A team is a leader and the people who serve with them, and nobody ends up on a team without asking.

Figure 5. Nobody joins a team without asking. The leader picks members for the election or adds them later, takes them off, and can take a removal back. The pot is paid out before every change.
Asking to join. Anyone who wants to moderate files a join request for a specific charter. It carries a short message about why they want to serve, encrypted so that only the leader can read it, and each person can ask once per charter. The leader picks the team from those requests: up to 15 members go into the election with the charter and are elected together with it.
Joining later. After the election, the leader can add more people, but only from the same pool of join requests, and only up to the number the contract allows. On Yappr that is 10 additions at a time, and taking an added member off frees their place.
Leaving. The leader can take anyone off the team, an elected member or an added one, without a vote and without giving a reason. A removal can be undone: if the leader takes it back, the member is on the team again. A member who wants to leave files a resignation request, again readable only by the leader, and the leader acts on it.
The leader stays. The leader cannot be removed or replaced, and cannot resign. That changes once challenges ship, when the masternode network will be able to replace a whole team, leader included.
Two rules keep this fair. First, the pot is paid out before every change to the team, to the team as it was. A member who is removed is paid for the work they did, and someone new shares nothing that was earned before they arrived. Second, the leader cannot reshape the team to get a settled post removed. Taking members off does not lower the number of approvals needed, and on Yappr someone the leader added cannot approve removing a settled post that was written before they joined.
What a seated team can do, and what it cannot
On Yappr, the team can remove posts, replies and profiles, work through reports, warn people, suspend them for a while, or ban them. Direct messages are different. They are end-to-end encrypted, live in their own contract, and nobody moderates them: if someone bothers you there, you block them.
A ban stops someone from posting, replying, liking or following on Yappr. It does not touch their Dash, their username, their identity or any other application, and they can still take down their own posts. They just cannot write anything new on Yappr.
Every one of those actions is checked by every node before it goes through:

Figure 6. What every node checks before a moderator’s removal goes through. A refused action changes nothing, and the moderator still pays its fee.
- The person acting must be on the seated team. Anyone else, the Yappr owner account included, is refused.
- The action must name one of the reasons the team listed in its charter. A team that ran on “spam and scams” cannot suddenly remove posts for being political. If it wants a new reason, it has to win an election with it.
- The action is stored publicly with who did it, when, and why. When a post or a reply is removed, a removal record stays behind, so anyone can see that it was removed and not lost.
- A removal can be undone by the team within 7 days, in case of a mistake.
Fresh posts and settled posts
There is one more rule that I think matters a lot for trust, and it is about time.

Figure 7. Any one moderator can remove a fresh post. Once it has stood for a day, it takes the leader and two more members, each approving on chain.
For one day after a post is written or edited, any one moderator can remove it alone. That is when moderation is actually needed: a scam or a spam wave has to come down fast.
After that day the post is settled, and one moderator can no longer remove it. It takes the leader and two other members, each approving on chain. Moderation should deal with what was just written. It should not let one person quietly reach back and erase something that has stood unchallenged for months. If the author edits the post, it counts as new content and the clock starts again.
How moderators get paid
Moderation is real work. Unpaid moderators burn out, or end up being people with their own agenda. So the Yappr contract adds a small moderators fee to every post, reply and report: about 0.0008 Dash for a post at today’s fee level, and less for a reply. That fee goes into a pot on chain.

Figure 8. Every post, reply and report pays a small moderators fee into a pot on chain. The team claims it at most once per epoch, split the way its charter says. The 10 / 40 / 50 split here is only an example.
The team claims the pot at most once per epoch, which is about every nine days, and it is split three ways, in percentages the charter sets: a share for the leader alone; a share split equally among the other members, which leaves the leader out (if the team has no other members, it goes to the leader); and a share split across the whole team, the leader included, by how many actions each person actually took (equally if nobody acted). A team can also charge less than the maximum, which makes posting on Yappr cheaper, so teams can compete on price as well as on rules.
Could paying by action encourage moderators to remove too much? It is a fair worry. Only bans, suspensions, warnings and removals count, every one of them has to cite a listed reason and is public, undoing an action does not count, and the leader can remove a member who farms actions.
Your own layer: blocks and shared block lists
Moderation on Yappr works in three layers, each reaching fewer people than the one before.

Figure 9. Three layers, from widest to narrowest. The elected team acts for everyone on Yappr. DCG only decides whether yap.pr and its apps open the door. Your blocks, and the block lists you follow, apply to you alone.
The first layer, the elected team, is what this post has been about so far. The second, DCG’s conditions, comes further down. The third belongs to each person on Yappr alone.
You can block anyone. Blocking hides that person from you, and if they follow your private feed, it takes their access away. You can also follow other people’s block lists, up to 100 of them. When you follow someone’s list, everyone they have blocked is hidden from you too. So if you trust a friend, or a group that keeps a careful list of spammers and trolls, you can use their list instead of building your own. Unfollow it, and it stops applying.
Blocks are public, which is what lets other people follow your list. They live in their own contract, separate from the one the elected team moderates, so no team can change them or overrule them.
The elected team deals with what nobody should have to see. DCG only decides which doors it opens. Everything else, you decide for yourself.
What this means for DCG
DCG can never moderate Yappr. The Yappr contract starts with nobody in charge: posts, replies, reports and profiles cannot be written at all until the first team is seated, so there is nothing to moderate, and once a team is seated, only that team can act. Following people and bookmarks work, but Yappr itself stays closed until the network has elected its moderators. We think that is the right way to begin: the very first post on Yappr will be made under moderators the network chose, not ones anyone appointed.
The moderation rules in the contract are frozen. DCG cannot shorten the election windows, give a team more powers, or switch Yappr to owner moderation. If it could, none of this would mean much.
The line goes both ways: the network refuses any moderation action from the Yappr owner account, and the team cannot ban the owner account either.
What about yap.pr and the app stores?
Remember the contradiction about builders being the first door everyone knocks on? For Yappr, that door is yap.pr, so I want to be precise about it.
Dash Core Group owns the yap.pr domain, and that is all it is: a domain. There is no Yappr backend behind it, no database and no server holding anyone’s posts. When you open yap.pr, it hands your browser a copy of the Yappr client, which is just a set of static files, and from then on your browser talks to Dash Platform directly. The client’s code is public, so the same app can be served from any other domain, run from IPFS, or built on your own computer, and every copy shows the same posts from the same network.

Figure 10. yap.pr is one way to get the Yappr client, not where Yappr lives. Whichever door you use, your browser talks to Dash Platform directly, and the domain never sees your posts.
Instead of running its own filter on yap.pr, DCG has a condition for running the client gateway there, a second one for publishing the Yappr app in app stores, and some suggestions for every team that runs.
What DCG requires to run the client gateway at yap.pr
Under US law, a website is generally not responsible for what its users post. But some content is serious enough that DCG will not run a gateway to an app where nobody can remove it, and on Yappr only the elected team can remove anything. So for DCG to have the client gateway to Yappr at yap.pr, the winning team’s charter has to list reasons that cover all of these:
- Child sexual abuse material, and the grooming or sexual exploitation of children
- Non-consensual nudity
- Terrorism
- Illegal or regulated goods and services
- Animal cruelty
- Sharing someone’s private information (doxxing)
The first two are where US law puts duties on websites directly. Child sexual abuse material is a federal crime that no website is shielded from, and the TAKE IT DOWN Act has required, since May 2026, that websites built around user content take down non-consensual nude images, including AI-generated ones, within 48 hours of a request. The rest are serious crimes or put real people in danger.
Illegal or regulated goods and services means using Yappr to sell, buy or arrange something that the law either bans outright or only allows with a license, a prescription or an age check, in a way that skips those checks. That covers illegal drugs and prescription medicine sold without a prescription; weapons, ammunition and explosives sold outside the law; human trafficking and paid sexual services; stolen and counterfeit goods; and products from endangered species. It is about trading, not talking. A post about drug policy, a review of a rifle or a photo of a craft beer is fine. A post offering pills without a prescription, a gun without the checks the law requires, or a fake designer bag is not.
If the winning team’s charter does not cover all of them, DCG would take down the client gateway at yap.pr. Yappr itself would carry on: nothing on chain depends on yap.pr, and the same client works from any other address.
What DCG also requires to publish the Yappr app in app stores
Apple and Google hold whoever publishes an app responsible for what people see in it, and both have their own content rules for social apps. So for DCG to publish the Yappr app on the App Store and Google Play, the winning team’s charter also has to list reasons that cover these:
- Threats of violence, harassment and stalking
- Incitement to violence
- Glorifying violent attacks, or sharing attackers’ footage or manifestos
- Attacking people for their race, ethnicity, national origin, caste, religion, sex, gender identity, sexual orientation, age, disability or serious disease
- Gore and graphic violence posted to shock
- Promoting self harm, suicide, eating disorders, choking games or other acts where serious injury or death may result
- Unsolicited sexual images (cyberflashing)
- Pornography showing sexual violence, bestiality or other extreme acts
- Copyright infringement reported by the rights holder
- Trademark infringement reported by the owner
Both stores also expect reports to be dealt with quickly, so a team that wants Yappr in the app stores should say in its charter that it works through reports promptly. If the winning team’s charter does not cover this list, DCG would keep the Yappr app out of the app stores. The website, and every other client, would keep working.
Here are some suggestions as to what a charter could cover
These are not conditions for yap.pr or the app stores. But a team that cannot act on them will have a hard time keeping Yappr usable, and some of them are crimes in the US:
Spam, fakes and scams
- Spam and bot accounts
- Fake engagement and coordinated manipulation, such as bought likes or networks of sock-puppet accounts
- Coming back under a new account after a ban
- Impersonation
- Malware and phishing links
- Fraud and scams
- Pump-and-dump schemes and other market manipulation
Privacy and truth
- Private photos or videos of someone shared without their consent
- Deceptive AI-generated or doctored media of real people
- Misleading people about how, when or where to vote
Beyond that, it is up to each team. A team can take its own line on adult content, on misinformation or on anything else, and masternodes can weigh that when they vote. Reasons are public documents that any team can reuse, so every team can list the same set, and teams and masternodes all know these lists before the vote.
What is not there yet
Let me be clear about what Platform 5.0 does not do yet.
- Replacing a team. Yappr’s contract already declares that its seat can be challenged, with a 30 day cool-down after every change, but the challenge vote itself comes in a later version of Platform. Until then a seated team stays seated, and its leader cannot be changed. This is the next piece I want to land.
- Changing a charter. A team cannot amend its charter after the election yet. That comes with challenges.
- Appeals. A way to appeal a moderation decision is planned as its own feature.
FAQ
Can masternodes delete my posts?
No. Masternodes only choose the team. They have no moderation power themselves.
What if nobody applies?
Then posting on Yappr stays closed until someone does. I expect teams to apply, because there is a paid job to win, but that is the price of having no fallback moderator at all.
What if the leader goes rogue or loses their keys?
Today the seated team stays, and that is a real weakness until challenges ship. It is exactly why Yappr declared its seat contestable from day one: the contract is ready for challenges as soon as Platform supports them.
Can I still block people myself?
Yes, and you can follow other people’s block lists too. Moderation is for what nobody should have to see. Blocking is for what you do not want to see.
Are DMs moderated?
No. Direct messages are not moderated, and you cannot report a DM. If someone bothers you there, block them.
Is this only for Yappr?
No. Any application on Dash Platform can declare elected moderation in its data contract when it is created. Yappr’s blog and storefront contracts are set up the same way.
Closing
At the start of this post I listed six contradictions. Here is how this design answers each of them:
- Nobody is in charge, yet someone can act. No single party owns Yappr’s moderation, and an elected team can still act right away.
- The community decides, and it cannot be faked. The voters have Dash locked up, so bots get no say.
- Moderators act alone, within limits. One moderator can handle a fresh post, but only for a listed reason, and a settled post takes three.
- The rules are frozen, and the seat is built to be challenged. The contract’s rules can never change, and Yappr’s seat is declared contestable for when challenges ship.
- The builders are out of it. DCG can never moderate Yappr, before the first election or after it, and yap.pr is only one of many doors to it.
- Moderators are paid, in the open. The pay comes from a public pot, and every action that earns it is public and tied to a listed reason.
I do not think anyone has fully solved moderation, and this design will keep improving. What I like about it is that it is honest about where the power sits. The rules are in the contract for everyone to read, the people holding the power were elected in public, and everything they do is on the record.
This took a lot of work from a lot of people across Platform: the contract rules, the elections, the fee pots, the charter contract, the proofs and the SDKs. Thank you to everyone who built it, reviewed it, and broke it on testnet so that mainnet does not have to find out the hard way.
Let’s elect some moderators!
Samuel
