March 28, 2023

Let's Chatter!

MiniDapp Spotlight
Let's Chatter!

Recently, Minima released Chatter - our new decentralized social media dApp - and Chief Architect, SpartacusRex, discussed this in our March Community call. We are extremely excited to have released this and we figured it was worth creating a blog to dig deeper into what Chatter is all about. With Chatter you can socialise with your MaxContacts and beyond over Maxima...

Want to check it out for yourself? Head to our MiniDapps site to see what is available!

What is Chatter?

Tl;dr: Chatter is a decentralized, scalable, and permissionless microblogging, social media and messaging network MiniDapp. Chatter allows users to share text, images, and basic HTML, or link audio and video files from the web to their Maxima (our Layer 2 information transfer layer) contacts. Re-chatting or replying to a post you receive will forward it onto your contacts, serving to spread the post further across the network. There is no limit to how far a post could reach. Great chats will spread, but unpopular chats will not. The system self-manages. Your Chatter stream begins when you install the MiniDapp, and each user’s feed is unique. Chatter creates a web-like social graph between Minima users, and every post, repost, and reply contributes additional security to the Minima blockchain. There is no server. No website. None of it is centralized so none of it will stress a single point of failure. Not like Twitter, not like Facebook, not like TikTok… Chatter is its own thing.

Layers

First things first, to understand Chatter, we must understand how the layers of Minima work, especially Maxima.

Each layer contributes to a truly decentralized, censorship resistant network. Minima is layer 1: it is the blockchain layer for value transfer and is fully decentralized through a distributed PoW network where each node is equal and does a small amount of work, thus serving to construct and validate the blockchain. We’ve talked a lot about Minima and all the funky things that it does, but there is also a layer called Maxima which runs on top of Minima. Minima is the base, peer to peer, value transfer layer. Since we’ve got a peer to peer network, the size that we have on Minima lends itself well for something beyond just value transfer: information transfer.

The difference between value transfer and the information transfer is quite interesting, because to validate value, everybody has to be involved: giving somebody something affects somebody else. What this means is that when you post a Minima transaction, that is flood-fill - it fills the entire network so every single user gets every Minima transaction. Everyone processes that transaction and validates it like an accountant to make sure that it's true.

All transactions are processed by all nodes on the network. It is flood-fill.

Everybody has to do that because it involves transfer of value. However, transfer of information is different: when you're transmitting information, only the people that are involved need to see that transaction. Only people who are involved in relaying that information need to be involved. Hence, transferring information isn't a flood-fill operation, explaining why Minima operates on a flood-fill basis, but Maxima operates on a peer to peer basis. What makes this interesting is that flood-fill protocols don't scale, so all layer ones, including Minima, Bitcoin, and Ethereum, don't scale on layer one, because everybody has to process everything.

Everybody should process everything: that is what Minima provides as we believe it is what makes a network truly decentralized. However, on other chains, they get a smaller and smaller subset of people to validate those transactions (known as validators), which is how they manage to increase their throughput. On Maxima, because it's peer to peer, that does scale. It is possible for everyone to be sending each other messages without it affecting everybody else. The only people that are involved are you, the person that you're sending information to, and the relay nodes that are processing that transaction to get the message to them.

So how does it work? 🛠

Maxima does something very interesting and unique: how it works is that it makes you pay to send your messages. How you pay is in work - not MINIMA. When you want to send a Maxima message, you do the same thing you would with a Minima transaction and you mine that message. That way, when you send it on through the network to the people that are involved in forwarding that message to the final recipient, everybody along the chain can objectively tell that you have done some work to protect the network. “I'll forward your message, as long as you do some work protecting my coins.”

Additionally, since Minima is a cooperative network game, theoretically, Minima provides a win-win situation. What this means is that when you're doing the work, you're not doing it to protect someone’s coins, you're doing it to protect your own coins. The work you do is based on your chain, where you have your coins stored. This removes the need for fair play and assumed kindness through symbiosis - you're not doing your work just to benefit someone, but you're doing that work to protect your own coins or interest. It affects you in that it allows you to do what is specifically relevant to you - and it protects your coins as well. This provides a solution where we get a use out of PoW that isn't to do with mining coins.

What this means is that the more messages that are sent over Maxima, the more secure the Minima network is. The more secure the Minima network is, the more value you can store securely on the network. The more value you can store securely on the network, the more valuable a network.

This provides a logical linear progression from the number of messages you send on Maxima to the value of your Minima coins. This makes Minima incredibly unique, as we’ve got a scalable technology that directly impacts the value of Minima coins so we actually want users to send Maxima messages and use the network to send messages. The more messages you send, the more work you do, the more secure the Minima network is.

Security 🔐

Maxima has been written with decentralization and security as the base layer. What it’s primarily designed to do is to make sure that no one ever knows what you're saying or who you're saying it to. This is because every time you connect to the Maxima network, you pick a new random name, a new random ID. For example, one day you could be xyz@hotmail.com, and the next day, you could be ijk@gmail.com. And every day, you pick a different address.

Information you send goes to everyone: that's what the contacts list does. You can send a message to anybody on the Maxima network and you do not need to hold any MINIMA to do so. How the process works is that the contacts keep updating with current addresses on the network - with addresses on the network constantly changing. Every time it changes, you receive a completely new random public private key pair which is sent to your contacts. This bolsters security as it makes it very difficult to spam. As soon as you don't want someone to get a hold of you, you just don't tell them where you are on the network and you disappear. All the messages are encrypted, so only the person that you send a message to can read the message, and the person knows that you're the one that sent it. In this regard, Minima has a very robust, secure network for messaging through Maxima.

What can we do with this tech? 📲

This is where Chatter fits in. Building on top of Maxima, SpartacusRex has written a dApp called Chatter. Everybody on Twitter is raving about Nostr, which is supposed to be a decentralized social media protocol. Diving into the specifications of Nostr, however, you will be well surprised to see that it's almost identical to the JSON packet that is sent over the Maxima network. People love that you can send these messages to people in a sort of decentralized way through Nostr, but the issue lies with incentive. Users don't have an incentive to relay your messages.

Peer to peer networks are not new; there have been prior attempts to try to create a network that we could all use, and what all of them lacked is incentive compatibility of the peer to peer information layer. Enter Minima.

We understand that altruism isn't enough. All other networks, including Nostr, rely on people - “I'll set up a node, and you can just bounce your messages through me”. This never works. There are always more people who want to use the tech, rather than run the tech - that's just the way the world works.

With Minima, the philosophy is different. “As long as you protect my coins by doing a small amount of work, I’m happy to let you bounce your messages off of me”. This means Minima’s peer structure is incentive compatible. On Nostr, there are many instances of people having to find alternatives to, say, put images on a CDN, as there are too many people using this relay, or that relay. When coming up with applications that run, you need to think about whether they're going to scale, whether the protocol itself is going to be able to handle a billion users, or if there will always be a bottleneck where everything breaks.

When trying to come up with a new version of Twitter, SpartacusRex came up with a protocol called Chatter. It is important to note that MiniDapps are not the same as writing an application: this isn't the world of centralized applications. When writing a MiniDapp, what you are doing is writing an implementation of a decentralized protocol. In the Chatter application, the protocol is written down on one page of text that has basically two message types. A user can send a message and can request the message: that's it! It is specified with utmost detail so that everybody who wants to write an implementation of it can. You can write an implementation: a MiniDapp that speaks that language. This is really important as it means that the author has no control over it, and that anybody can take the MiniDapp and change it or write another one. As long as you implement the same protocol, and stick to the message format and what a Chatter message is expected to look like, your application can speak to another application.

How do messages propagate with Chatter? 📈

When thinking about Chatter, it helps to break it down into simpler processes. Can you send a message to a million people? And can they reply? No. How would your phone handle a million requests? How would you be able to get it? How would you be able to physically process that much information?

This is why you cannot think of Chatter like Twitter. It’s its own thing. With Chatter, it's not a question of me following you. If you are running a Chatter account, and a million people start to follow you, that does not mean that a million people can send you messages - that would blow up your phone! 🔥

Chatter reverses the process. You write a message, just like on Twitter: “Hey, isn't the world a beautiful place?!” You then send that out to your contacts. They see this in their chat, and retweet that or re-chat that. Essentially, they take that message, and then they forward it. This then goes on to their contacts, and so on. In this way, you make a system that propagates outwards from you, and you can choose to make a somebody on Chatter a “super chatter”. This allows you to automatically reach out for messages from someone and it means that it is perfectly possible that the message that somebody sends could propagate out to a million people. But that message will have propagated through many people. The same thing happens when replying - you cannot actually reply directly to messages.

When somebody wants to reply to that message, say if somebody wanted to reply saying, “No, I think the world is rubbish”, that message gets sent to their contacts and they can look at that message and choose whether to broadcast it. If somebody replies to your message with a rather salient comment, it is more likely that the message will propagate backwards across the network and so you will have received a reply. When you reach out to a message, you always reach out to the parent messages as well. Hence, the full thread of the conversation can be understood, and everything bounces through your peers. This creates a filter system, so you now have a system where only the messages your friends and their friends and friends’ friends etc. decide to propagate will get through to you.

This scales well. There’s no way a million messages will be filtered through your contacts to you so there's no way you’re going to receive 300,000 messages, for example. This enables a protocol that doesn't have that bottleneck of centralization. It's completely decentralized. The application itself is written in such a way that all of us could be on it, Chatting - or Chattering - what we think are good messages. All information transfer on Maxima benefits Maxima as explained earlier, so there's no bottleneck and no way that Chatter is going to blow up in some fashion. This makes it a scalable application built on top of a scalable protocol. Additionally, it’s also totally censorship resistant as nobody knows what other people are chatting to other people about.

So that's Chatter, a pure Maxima application, like Max Solo which is a simple proof of concept WhatsApp clone. Remember, with Maxima, the more messages you send, the better the experience of the application and the more secure the Minima network becomes, the more valuable your Minima coins become. It’s a win-win situation, as we are incentivized to continue running the Maxima network, and those who run the nodes that relay your messages are incentivised correctly.

Sounds relatively simple and straightforward? That’s because it should be. It’s what we’re all about at Minima.

Accountability ⚖️

Just taking an opportunity to highlight the importance of accountability. It is also important to realise that this isn’t just about the security of the network and loads: it extends towards how we're actually running our communication channels, how we're interacting with each other, and how we're interacting with the network. This point is about accountability - not only around how you protect your node and your coins, but also how you look into information.

Do your research. Try things out. Enable and afford your own freedom. Be accountable.

Want to check out Chatter for yourself? Head to our MiniDapps site to see what is available!