Protocol Berg v2: Johannes Kühlewindt - Moderation is not a bad word: Decen. Moderation in P2P Netw.
ETHBerlin·Thu, Oct 9, 2025, 12:00 AM
Moderation in peer-to-peer networks is often seen as incompatible with decentralization. Healthy, resilient distributed systems need tools to reduce spam and harmful behavior - without central authorities. Starting from an overview of existing approaches, we move into specific considerations for for peer-to-peer code collaboration tool radicle. How can cryptographic identities and social trust graphs enable collaborative moderation, reputation management, and abuse mitigation, all while preserving permissionless participation? None of this can be discussed without exploring the philosophical tension between openness and governance in decentralized content networks. Protocol Berg v2 12-13 June 2025 Berlin https://v2.protocol.berlin
Transcript
Good morning everyone. Uh second day of protocol work very early in the morning. I want to invite you for a journey. Uh let's build social media clone. At first it's very simple.
You can just create text posts. Next, we will invite our friends and family to comment and we can interact. That's great. Uh, everyone is super excited, super hyped. They tell their friends and family about it, their friends, their friends, their friends.
And what we see is exponential growth. That's amazing. Uh, who doesn't like to work on an application that is actually being used? But what is happening now? We see a type of content that we haven't seen before.
Hateful comments or just mean comments and people trying to sell us stuff. Don't worry, there is an easy fix. I I will just give myself special permissions um as a user ID one to delete all the posts I don't like I don't see fit for the platform. So I do click click and the original quality of the platform and the community is restored. My family feels comfortable again and they start posting again.
They are not moving away to a different platform. My name is Johannes. Uh, you can find me online. I am excited about open source, decentralization, the whole thing, right? I currently work on Radical, which I personally think is the greatest thing ever.
Um, I don't think you can talk about decentralization all day and then put your code on Microsoft GitHub. That's it's a personal thing. Okay. Um today we are going to talk uh I'm going to talk you through my recent thoughts on the topic of decentralized content moderation. This is a vast topic.
I don't think it's solved yet. So whatever say will be incomplete but I'm sure you can take some interesting impulses for whatever you are working on. Content moderation at its core is about evaluating content and enforcing community guidelines. And I think this is where the idea of moderation is deeply conflicting with many ideas that we have in this decentralized space. Uh mainly about censorship resistance.
So how can we deal with it? Most of the time moderation is just basic cleanup. You have spam, scam, advertisement, whatever. Pretty is pretty obvious takedowns that nobody would question. Then you have topics that are getting a bit less decisive.
You maybe nudity, right? Like what counts as nudity, highly cultural, um where people not agree anymore that easily. And then things get really spicy. You have highly politically charged topics like race, gender, public health. Those are not only controversial, but what gets silenced and what gets amplified shapes the public discourse.
And by shaping the public discourse, it influences elections and real people's lives. Most of the time, it's the platform owners that are in full control over algorithms and their moderation team. So, they get to decide what makes it into the public discourse. Yet we can't do without moderation completely either as we saw in the first example. My mom wouldn't be on the platform anymore.
So what is the issue without with our first approach? First first of all I have a platform that has a single point of failure. I have to trust a single party in that case myself as the admin and I have very little control for the other users. So those are typical problems of centralized platforms and everyone in the room uh should probably know what I'm talking about. If we want to go decentralized, however, um this is going to get so much harder.
We don't have a we don't have a central database where we can just delete records. We don't have an admin account that has permission to do so. We might not have signup restrictions if we want to preserve people's privacy. And as an added bonus, we can also make it harder by not allowing any deletes at all um by having an appendon data structure. So the context of this idea is Radical.
Radical is an uh open-source project uh decentralized code forge built on top of git. In Radical uh you have a couple of entities um those are mainly users um participants in the network nodes. I will use those interchangeably. they are identified by a DID key. Uh then you have repositories.
Um they also have an identity and we have social artifacts. Those are issues, patches, comments. Why can't we have nice things? Excellent question. Um first of all, spam.
You know, the moment your platform or your project or whatever gets a certain level of attention, it becomes attractive to spam, to advertise on, and people abuse that. Some people just can't behave. This is where the harmful content comes from. Some people do it on purpose. Then, especially in a decentralized setting, if you run part of a platform, you become legally liable for what is on there.
And uh lastly um speech while maybe protected we might not have all of the uh types of speech in our own bubble right imagine a group chat you would kick out someone that is just not behaving. So we need to think of what we want to tolerate in our spaces. If we think of moderation as enforcing guidelines we have to ask ourselves who needs to agree on those guidelines. Are they explicit or implicit? Are they written down?
And during enforcement, who gets to decide what falls within a guideline or not? If we think of moderation as a classification problem, we can think of all of those as like unclassified things. Let's say nodes or users for now. Person A might go through all of those people users note and make certain decisions. Um, those are okay.
The red ones are not. I'm going to block them. The white ones I haven't gotten around to classify them. Person B might make a very similar choice. They have a lot of overlap.
Not everything is controversial, but some is. So, what do we do with it? We have a fairly impossible challenge at our hand now. We have a classification problem that doesn't have a true answer and we have decentralized data. So no central control.
What we want to do is we want to be able to block users. We want to hide content. We want to not replicate certain code. We want to give our users still control. This is why we do this in the first place.
But at the same time, we don't use want users to need to do all of the moderation decisions on their own. I'm scared of this slide. I actually know that many of you probably know more of those platforms than me, but just high level, Masadon is federated. So you have a federated instance. That means whoever runs the instance gets to decide about moderation policies.
Um maybe there is a democratic process. I don't know. Um depends on the instance for sure. Then we have at proto or blue sky. Um in theory an open protocol uh you can publish data.
Um most of the platform is in control by blue sky. There is a growing uh growing community of building like open source implementations. So you can basically self-host the entire stack. Um good ideas that they have is labelers. Uh everyone can label everything and theoretically your custom uh uh your custom applications can then follow those labels and hide certain content.
And then Torrance. This is a fun one because I don't think every anyone would think of torren as moderated. Um but think about it. Most of the content there is illegal maybe. Um but you could still find for example Linux disk images.
And how would you find them? Through a trusted third party that points you directly to that. So everything is untrusted at first but someone would tell you this is where you find the proper content. I mentioned we want to we don't want to overload people. So imagine if you had a big red button for your own local instance.
Every peer-to-peer means you have your own instance, right? So you can you can moderate your own instance as much as you want. But basically that means you see everything before you can delete it and nobody else sees your deleted content that you deleted your content. That's not very helpful at all. So what I'm proposing is that we start talking about moderation, content moderation as two separate components in decentralized networks.
On one end you have the actual tooling stuff that helps you find surface content that you might want to look at. For example, keyword filters, stuff that look at looks at behavior, maybe machine learning stuff, whatever. All of this is tooling. And then we have the we have the second part that I want to spend a bit more time talking about which is propagation. How does whatever you do, how does your moderation decision uh affect others on the network.
So I'm proposing simple propagation rules. First I can start by applying a default. Let's think about torren. We distrust anything first. But then I can around ask around people that I trust and follow their suggestions.
So all of my friends for example, I could trust all the content that they trust. And if I make a decision that counts over all of the other decisions. So I have local override for myself. And here comes the important point. Others just in point two can follow my decisions.
That means we will look at what this means. Okay, give me a second. So, um there is something similar here, right? The idea of having trusted in- introducers already came up during the idea of web of trust. So, everyone will um will have first set of trusted intu introducers and um then you will trust everyone that they trust.
So, this concept already exists. I'm not inventing that, right? Um the idea is that over time this network will grow and you will will have a safe subset um of trusted uh of trusted users. This is supposed to be fault tolerant and uh a fault tolerant network for all public keys. The issue there is that um I don't know if anyone here uses it but like there are certain user experience challenges here, right?
Like what do you do to solve those? I'm going to look at an example here. So this is me and if we say I trust the four nodes around me and by extension I trust the entire network. That looks pretty similar to what I would have done probably anyway. Then we can model that as a DAG.
Everyone like loves dugs here. Uh they are directed because trust is directed. I can trust you but you don't have to trust me. We can remove cycles by just looking at a certain content. So even though we have a trust cycle um content only propagates basically from the root.
So if we take the example and zoom a bit in uh we see a lot of trust edges here and this doesn't look very familiar for people that spend all of their day looking at graphs. Um so let's rearrange that a bit. I put myself up top left then the people that I have close trust relationships closer uh second degree there a third degree there. So what we can already see is if we model it like this um we can make statements about the degree of relation. If we further go ahead and remove all of the edges that are not pointing in my direction it means I can now make statements about reachability.
If I introduce content, all of the green nodes will be able to hear me. Let's look at how that solves some of the real world uh challenges in moderation that we wanted that we want to have. So first of all, the simplest setup is someone produces content, I trust them, so I can consume their content. The local overrides allow me um to have moderators. Someone might produce content and I have other people that want to consume content but they trust a moderator.
They delegate their trust. I can also have a setup in which someone aggregates a lot of content that can help me with discovery. And uh in the web of trust you have the typical cold start issue where nobody trusts a new node in the beginning. So we can also have a permissive node that trusts everyone by default. Nobody would trust them but it helps us persist their content on the network.
We could have a team especially in the setup of radical where you have like code collaboration where everyone collaborates with everyone that means everyone trusts everyone. You can already see there is a lot of edges. Uh just imagine introducing five more people. Um so we could even map something like a team setup uh with a central node hop and spoke setup. So the team node trusts everyone on the team and everyone on the team trusts that node.
So we solve this problem as well. And if we want to look at how this would look in practice, um, now please pay attention. The arrows are going in the other direction now. So those are the nodes that I'm I'm trusting, right? So whatever any one of those green nodes is producing will reach me.
The new node enters now the stage. Nobody trusts them. So we have multiple ways of how we get the first trust edge, but just assume it's solved. For example, by the person knowing each other in real life or by tapping into other social graphs. This node has now joined the trust graph.
This is how a new node joins. Now this node turns malicious. they start misbehaving by the transitive property of the rules that I'm describing here. Um, this malicious content can now reach me. But now anyone of those nodes between me and the malicious node can just remove their trust edge.
Let's say this one. What this does is it contains the issue. And I think here I think here do we see the strength of this approach because for moderation and for user experience because it only takes one node and one person I trust to make a moderation decision and that user experience regaining the full control while reducing the load for the individual user in that case me is the core idea of how I think uh we should talk about moderation in decentralized systems. And it's also the reason why I spend all of the time right now talking mainly about propagation rather than the actual tooling. I don't care if that person makes the decision based on their local ML model or just because they don't have anything else to do and go through all of the content all the time.
That's a tooling issue, right? But the propagation here is the main point. We've made a couple of decisions in this simple rule set that we can further discuss. They're are open for discussion really. First of all, we said trust is transitive.
That means everyone that I trust, I trust their trustees by extent. We also avoided weighted edges. I never have like a score of like I trust this person more than that one. So we keep it binary. That makes the implementation actually super easy.
We also don't think of degrees. So we can use cached sets locally on the nodes. But that is another property I think that allows us those more complicated setups and bringing um having aggregators or moderators and and all of them composable. The most important point here is local overrides. Um but I think the adoption of this model really hinges on the user experience.
And I guess this is where we all come in. Generally, I want to inspire you to think of decentralized systems as an opportunity to build really complex systems based on simple local rule sets. With that, I say thank you and for your attention. Uh please check out Radical. Uh we also have an event tonight um if you want to talk more about decentralization and open source and uh yeah that's it.
Thank you [Applause] Johannes. Uh and as I said now there's a QR code. Um, if you have any questions, please scan it now and add and we still have a few minutes. Um, we'll wait for a while to see if questions pop up. If not, I'm sure you can catch Johannes also in the hallway afterwards.
I see I see a few people scanning. Um, maybe I'm in the way. you need to log in with the same email for with protocolberg. But well, if you've asked a question, I can repeat it and we can we can try that. But I would prioritize any questions that pop up there.
But yeah, go ahead. If you still want to ask a question, let's see. The first question is um Oh, that's a lovely one. Let me just say it so it's also in the recording. How do we handle the decentralized notion of moderation uh with having a consistent views of reality?
Um not an easy one. Oh no, no, this is lovely. I think that's uh that's a central question whether or not you think filter bubbles are okay. Um, and the way that I think of it is again in terms of a group chat or maybe a bar or whatever, you kind of already choose who to hang out with. Um, I don't I think the fundamental problem is that currently people get all of their news from social media.
Um, but if we would for example just see uh social media as an extension for social and having other means to get your news. So, for example, independently funded news organizations. Um, I think Germany does it fine, you know. Um, not everyone needs to have uh private private TV stations and everything. I think it's a it's a it's a a touchy topic really.
Um, I I don't have an answer beyond that. Okay. And we have a bit more questions too. Uh, let's go in order popping up. Um is there a privacy issue in knowing every node that anyone trusts?
Uh yes. Yes. Um I think there is um a question of which moderation decisions do you want to make public. So if I get to choose what I make public then um then I think I get control and I think um that preserves privacy because I get to choose what I make public and what I don't make public. Um, I think that we don't necessarily need to make the trust edges public.
Um, because I can if if someone just openly publish their moderation decisions, I can secretly look at their moderation decisions and compose my own moderation set um based based on their decisions. Okay, actually there's even more questions popping up. Um, we can go again in order. Um are there relations to strategies for managing peer-to-peer overlay networks here? Uh excellent question.
Um this is a very simplified concept, right? Um so all of those nodes they had direct edges but physically they might be behind the nuts. So they cannot even talk directly to one another. So you would assume that there is some some hops in between. So the over what the overlay network gives you in the end is that those can seemingly talk directly to one another and I think we have time for one more.
Um do you think this this moderation has to be established the start of a project? Uh can it be applied retroactively? Um it's a good question. I think you need to start thinking about moderation from from the beginning. I think in the beginning nobody will care about your application.
So you can probably even leave it vulnerable to XSS and uh SQL injection and not even the hackers will care. Uh same goes for moderation. Um go ahead publish your project. Okay, I think we're out of time now. Um but if you still have a question, you can catch Johannes afterwards.
Um let's give a round of applause. Thank you Johannes for your talk. Thank you.
Automatic transcript — names and jargon may be misspelled.