Encrypted social network based on blockchains

Project Type
Project idea

Encrypted social network based on blockchains

I know, I know. Blockchains, buzzwords, hear me out. Take the concept of Google Hangouts. Circles. Each circle or group of friends all derive a sharked key or can use a pki infrastructure. Posts to that group will go into a global blockchains, but can only actually be read by the people who have the key. This allows for a decentralized yet still totally private network. Plus every client is a hosting node meaning little to no infrastructure, no need (much less even the technical possibility) for ads.
  • 1
    Mastodon is quite nice, would be great with support for it
  • 1
    There's also Retroshare
  • 4
    You wanna store all that unstructured, user-generated content in a blockchain? Yeah, no. Your nodes are gonna run out of space in seconds, and/or you'll have absolutely horrific syncing problems and delays, and your network will be a total clusterfuck.

    Sorry, this is not the tech you're looking for.
  • 1
    @endor I'm not going for a Facebook style, millions of users posting gifs type thing. Almost Twitter-like, but just text.

    140 char a piece, 1.4m per 10,000 messages. Not too bad. Compression could help, forking to a private blockchain, while less available is even more private and takes the strain off the main one.

    It's not a perfect solution but I think it's reasonable. I've seen much worse blockchain projects, many who have no business using blockchains. I think this makes some sense.
  • 0
    @deadPix3l you have to also consider block hashes, timestamps, usernames/userids, plus all the user's data (emails, passwords, *avatars*, name and stuff) has to be stored somewhere.
    And don't forget: you need to encrypt all your content if you want to make it private. Currently, only Monero does that, and it generates at least 12kb of data for each transaction due to signatures.

    Twitter generates tons of content too, and if you split it up too much you'll have a horrible time syncing it up among users.
    A constant 1 Mbps of new content means adding 1GB of new data every ~2.25h. Give it a week or two, and most of your potential userbase won't have enough storage to allocate. New users will take days to sync up before being able to use the platform. And if your nodes aren't fast enough, most of your users will be effectively DoS'd by sync lag.
  • 0
    @deadPix3l if you're thinking of sharding, things get real messy real fast. Even the big cryptos are still struggling to come up with a good implementation, and yet the amount of data they generate is still smaller than my previous example.

    Besides, using a blockchain to store content would imply storing every new and old revision made to it: think 'git commit' every time someone makes a correction to a post, or changes his email, or his avatar, or whatever.
    Eventually your blockchain would be bogged down with tons of old data that you can't get rid of (unless you figure out how to safely implement pruning - good luck with that).

    Tl;dr: it's a bad idea (TM)
    You do not want a blockchain for the application you described
  • 0
    Better idea: why don't you make it an i2p/zeronet-based service? Every user hosts only his personal content on his personal machine, and when you want to access someone's data you just request it directly from them.

    Every active user also acts as a small caching node for any content that is passing through his machine (without having any access to the contents though).

    Adding a friend = exchanging public keys for e2e communication.
    Adding a page (fb style) = adding its x509 certificate (or gpg key) to your known list (so all posts can be cryptograpically signed, to avoid spoofing/mitm). Gpg keys is probably better, in case you want to comment on the page or chat with the owner.
    Groups = multisig posts.

    The only issue I see would be ensuring that every user's content can be obtained even after he logs off/shuts down his pc, which means you'd have to ensure that every bit of content has to be at least cached on at least one node in the network at any given moment
  • 0
    @endor you're right. Thanks for that actually. Yknow when you have a brilliant idea that only works on the surface if you don't think too hard about it?

    Yea idk if this is all that acheivable after all, even with i2p or other solutions. Oh well. Tried, failed, next idea!
  • 0
    @deadPix3l the thing is, if you want to create social media, you can't just "not go for Facebook". First of all, you will be a competition if you succeed in any way. Second of all, if you su ceed, you will get users really quicky, we are talking millions weekly. Do you think you could scale it that fast? Remember, any kind of social media is all about networks between people
  • 1
    @deadPix3l That said, if you like the idea of having your own social network, go for it. I'm working on one, not sure if it will succeed, but I don't have anything to do anyway, so why shouldn't I try?
  • 0
    @deadPix3l you're welcome, tearing ideas apart and trying to find any issues/critical points is kind of my thing, so I enjoy it.

    Seriously though, an i2p/zeronet-based service might actually work though. Maybe you could have something like a two-tiered network, where pools of users are connected through centralised servers which store an encrypted local copy of the user's data, thus solving the availability problem without compromising on censorship resistance and security.

    The servers would just act as a backbone to relay the data around, but they would have no control over the content (thanks to encryption) nor its origin (thanks to i2p's anonimity).
    This way, the only 'bad' thing they could do is not relaying all the data entirely: you would not be able to censor individual content/users without taking down the entire network with them
  • 0
    I am new to block chains and development in general, but I am unable to grasp what benefit would hosting a social network on blockchain would accomplish ( that maybe isn't possible with Facebook for example )
  • 0
    @confusedGuy-sh it would be completely decentralized, meaning no one company could dictate what you can and can't post, or what info is required (email, phone number). The community gets to decide the rules. And subcommunities with differing rules could pop up and branch the block chain. It means everything would be available to everyone always, but only readable by those with the key, and nobody controls it what so ever. (Ignoring the 51% problem)
  • 0
    @deadPix3l yeah, but that also creates a few problems. If you can't control the data flow, what will you do about illegal activities? You know that you would still be responsible for them as a company? Also, it would be much harder for average user to get into the network. Look at Mastodon, it's not really doing too good outside of tech community
Add Comment