--- title: Block-resistant online social networks tags: Vlad, Slides slideOptions: transition: slide --- # Block-resistant online social networks How can we make unblockable and popular OSN? ## Short answer Yes, it is possible And short answers are libp2p and distributed OSNs For file sharing — we can use DHT, Torrent, IPFS For content distribution and subscription, we can use a federation model of connectivity. The essential signals of DeOSN evolution are Solid platform, Matrix chat, and Diaspora. They showed that it is possible to build distributed, user-friendly, secure, and fast social networks. Missing features are: - profit sharing with end users - control/managed users' data sharing by users - powerful distributed file sharing than ipfs or torrent - UI/UX isn't effective and user-friendly (WhatsApp vs Signal) - hard to engage top audience And remember, DeOSN is hard to block as hard to block Tor ;) ## Risk model What are the denials for social networks and chats? 1) Is privacy problem, they know what you did last summer Government global observers, Internet, and Mobile Providers, FAANG (Facebook, Amazon, Apple, Netflix, and Google) have full or partial access to your content. 2) Blocking problem, who can block you? - Internet backbone, Big ISP - DC and Hosting providers - Internet and Mobile Providers - Browser vendors 3) Censorship problem, they moderate you, don't they? - Application stores/market places - OSNs operators, moderators - Government through requests to OSNs ## What are the vulnerable parts of the OSN? What kind of data should be secure? - Images, files, and other media - Text contents and posts - Likes, emotions, comments - Connection or relationships - Profiles and personal pieces of information User data is not under user control but more under OSNs control. It sounds incorrect. How can they block or limit access to your content? - They can shut down and take over your domain - Also, they can block your content using traffic filtering and network disconnecting (disconnect your hosting from the internet) - Search engine censorship — they can hide your site from a search result - As OSNs' moderators and operators, they can quickly close or delete your content. ## Current industrial state of decentralized OSNs ### Current audience of DeOSNs | Name | Type | Users | Nodes | | :--------: | -------: | ----------: | ----: | | Your DeOSN | Social | ~500,000,000 | ~1000000 | | … | Matrix | Chat | ~28,000,000 |~60000 | | Mastodon | Social | ~3,107,197 | 3443 | | Diaspora | Social | ~705,662 | 202 | | Pleroma | Social | ~27,770 | 590 | | PeerTube | Video | ~20,018 | 331 | It's big, but not enough if you compare the matrix with Facebook or Twitter. ### DeOSNs' features and traits - Distributed Datacenter (DDC) DeOSNs should be distributed and independent from Single DataCenter and ISP. - Cryptography Your and other people's data may be stored more securely. Each subscriber checks it's your post or not using a digital signature. - File sharing Nowadays, most DeOSN are based on distributed filesharing mechanics, such as IPFS, Torrents, and other P2P/DHT-based solutions. It is possible to share big files. - Connectivity The most crucial functionality of modern OSNs is subscribing to other publishers. DeOSNs usually didn't store your followings and followers list in one place. If you choose to secure your connectivity list, nobody will get it. - Performance First generations of DeOSNs were very slow. But the lesson was learned, and we already have effective strategies. - UI/UX Young startups started spending more time on UI/UX. And unfortunately, it is the first weak part of DeOSNs. DeOSNs should be more oriented to ordinary people. - Marketing It is the second weak part, and it is a huge problem. DeOSNs startups are still oriented to geeks, and it's the point for change. ## Is it possible to build decentralized Facebook, and how expensive can it be? ### Where is a roadmap? What should we made and rework? - IPFS/Distributed file sharing We need to extend IPFS and add the following features: - Encryption and re-encryption on the fly — nucypher + ipfs + filecoin - Content storing expiration — for massive content sharing, we should ready to purge useless if the community and author not prepared to pay for storing - Financial motivation for people who host file sharing nodes - UI/UX Also, we need to make user-friendly web and mobile clients. - Ad The unsolved and very revolutionary way is asking people to share private data and pay users royalty after using shared data. The working example is brave browser and BAT, where people earn money on seeing adverts. So, the modern decentralized social network should invent and implement advert based on these technics. It is an instrumental and maybe independent project for other DeOSNs - Paid subscription A working example was https://steemit.com/, and only fans, modern DeOSN may have paid subscriptions as part of authors and network motivations. - Marketing If we solve up topics, we ready to spend money on offline and online marketing, people should learn that they have another way to connect. ### Is the world ready for changes? Yes, people ready to pay for digital goods are prepared to subscribe and pay for content, and they clearly understand that they like to control who owns their data. For example, Whatsapp, matrix, signal, and telegram are growing up on their vision of securing and keeping users' data. It's time to make Facebook killer based on E2E encryption and P2P distribution. ### Is it expensive? Yeah, it's need time to draw a more detailed plan, but it may cost: - Rework IPFS/File — 1.2-1.5m$ - UI/UX (mobile, web, branding) — 0.150-0.2m$ - Content Nodes — 0.9-1.3m$ - Clients (iOS/Android/Mac/Win/Linux) — 1.5-2m$ - Personal data sharing — 0.3-0.5m$ - Advert provider concept - 0.2-0.3m$ - Marketing — 50m$->∞ (never-ending marketing and promoting, should be based on platform revenue) - Financial part (blockchain) — 1.5-2m$ ## Flow ### Classical OSN ```graphviz digraph { compound=true rankdir=LR ratio = auto; graph [ fontname="Source Sans Pro", fontsize=20 splines=true overlap=false ]; node [ fontname="Source Sans Pro", fontsize=18]; edge [ fontname="Source Sans Pro", fontsize=12 ]; { rank=same adp thief user } subgraph advert { rankdir=LR adp [label="Ad Publisher"] [shape=box] } subgraph thief { rankdir=LR thief [label="Data consumer"] [shape=box] } subgraph users { user [label="Publisher/Consumer"] [shape=box] } adp -> { ad, earn } [ltail=session lhead=session] user -> { fs, userdata } [dir="both"] ad -> { user, thief } userdata -> thief -> earn subgraph cluster2 { concentrate=true privateapi [label="Private API" shape=plaintext ] mobile web desktop label="Proprietary clients" } subgraph cluster1 { concentrate=true { rank=same fs userdata } { rank=same ad op } op [label="Operator"] [shape=triangle] fs [label="Media storage"] [shape=box] ad [label="Ad provider"] [shape=box] userdata [label="Personal, Content, Subscription"] [shape=box] manage [label="Moderate and manage" shape=plaintext ] earn [label="Earn money" shape=plaintext ] ad -> userdata [dir="both"] manage -> { fs, userdata } earn -> op -> { manage, ad } label="Facebook private DC" } {mobile, web, desktop} -> privateapi -> {fs, userdata} [dir="both"] } ``` ### Your Decentralized OSN ```graphviz digraph { compound=true rankdir=LR ratio = auto; graph [ fontname="Source Sans Pro", fontsize=20 splines=true overlap=false ]; node [ fontname="Source Sans Pro", fontsize=18]; edge [ fontname="Source Sans Pro", fontsize=12 ]; subgraph advert { rankdir=LR adp [label="Ad Publisher"] [shape=box] } subgraph thief { rankdir=LR thief [label="Data consumer"] [shape=box] } subgraph ad { ad [label="Ad provider"] [shape=box] } subgraph ipfs { fs [label="Distributed FS"] [shape=box] } subgraph cluster { concentrate=true { rank=same fs userdata } userdata [label="Personal, Content, Subscription"] [shape=box] user [label="Publisher/Consumer"] [shape=box] share [label="If user share" shape=plaintext ] label="Users pod" user -> { fs, userdata } } subgraph cluster2 { concentrate=true api [label="Public Open API" shape=plaintext ] mobile [label="Reference Mobile"] mobile3 [label="Third parties Mobile clients"] desktop [label="Reference Desktop"] desktop3 [label="Third parties Desktio clients"] web [label="Reference Web client"] web3 [label="Third parties Web clients"] label="Reference clients" } {web, web3, desktop, desktop3, mobile, mobile3} -> api -> { perm, share } -> { userdata, fs } { rank=same thief } { rank=same ad adp } earn [label="Earn money" shape=plaintext ] perm [label="If user permit" shape=plaintext ] { thief, ad } -> perm -> { userdata } [dir="both"] adp -> { ad } [ltail=session lhead=session] { user, thief, ad } -> earn -> user {fs, userdata} -> share -> user } ``` ## Working examples - https://matrix.org - https://joinmastodon.org - https://diasporafoundation.org - https://mastodon.social/@ChriVo ## Useful links - https://en.wikipedia.org/wiki/Internet_censorship - https://en.wikipedia.org/wiki/Distributed_social_network - https://en.wikipedia.org/wiki/Web_of_trust - https://the-federation.info - https://solidproject.org/ - https://solidproject.org/apps - https://filecoin.io/ - https://ipfs.io/ - https://medium.com/coinmonks/how-to-build-a-decentralized-social-network-dapp-how-to-govern-it-ac746751d6f8 - https://basicattentiontoken.org/ - https://tu-dresden.de/ing/informatik/sya/ps/ressourcen/dateien/beschaeftigte/mitarbeiter/folder-2016-01-25-7369698949/crv/paul14survey.pdf?lang=de - https://wiki.p2pfoundation.net/Category:P2P_Infrastructure ## Thank you! :man_in_business_suit_levitating: You can find me on - [LinkedIn](https://linkedin.com/in/kalloc) - [GitHub](https://github.com/kalloc) - [Telegram](https://t.me/kalloc) - [Facebook](https://fb.com/kalloc)