Descentralized Online Social Network Research And Ideas
<div>
As almost anything I research at a first glance, the ideas are not clearly defined yet, this is a place to throw things and then organize and rewrite as needed after, Idon't even know is this pdf is a good opening anymore. <span contenteditable="false" class="search_ignore" style="font-size: 16px; color: var(--text-color); caret-color: var(--text-color);"><a content_type_id="6" object_id="12" class="search_ignore" contenteditable="false" href="https://en.wikipedia.org/wiki/Decentralized_computing">en.wikipedia.org/wiki/Decentralized_computing</a></span> <span style="font-size: 16px; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);"> </span></div><div> <div> <br></div> <div> <br></div> <div> <br></div> <div> <br></div> <div> <br></div> <div> <br></div> <div contenteditable="false" class="embed search_ignore">
<embed class="embed" src="https://storage.biont.me/biontbucket-prod/computer-systems-by-mutually-suspicious-groups.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=0057c905b0ea3240000000010%2F20260217%2Fus-east-005%2Fs3%2Faws4_request&X-Amz-Date=20260217T225250Z&X-Amz-Expires=30&X-Amz-SignedHeaders=host&X-Amz-Signature=8ef0386414dc75a51cc96f5079f7017bc5785ad1ceb6f1c4dec3aca2eda9ad56" type="application/pdf">
<a content_type_id="7" object_id="7" class="search_ignore" contenteditable="false" href="/Titigal/computer-systems-by-mutually-suspicious-groups-david-chaum/fle/7/">Computer Systems By Mutually Suspicious Groups David Chaum (application/pdf by Titigal)</a></embed></div> <div> <br></div> <div> <br></div> <div> <br></div> <div> <br></div> <div> <br></div> <div> <br></div> <div><div><div style='font-weight: 400; font-family: Arial, "sans-serif"; font-style: normal; font-size: 16px;'><span style="font-size: 16px; background-color: var(--box-color);"><font color="rgba(0, 0, 0, 0)" style="font-size: 16px;">A descentralized online social network - </font></span><span style="color: rgb(34, 34, 34); font-family: Merriweather, serif; font-size: 18px; font-style: normal; font-weight: 400; letter-spacing: normal; text-align: start;">DOSN </span><span style="font-size: 16px; background-color: var(--box-color);"><font color="rgba(0, 0, 0, 0)" style="font-size: 16px;">- that has an authentication system, a permission system and a shared file system. where a file can aways be traced to the original uploader that becomes the owner of the file has controls permissions over it, users can search and link to each others file. A user can link to as many files as he whises, being his file or another user files. The kick start of the network has to be automatic, as to create a unique identifier for a new actor than can be authenticated in a descentralized way by the network. a kick start process has to the tought for the first and second nodes of the network. On first start you to choose if a new network is to be created or give a node to connect to an existing network. This kickstart process has to make it super easy to start a new independent network from 0 ofering to be the its first node. Each node HAS to be a sender and a receiver.</font></span></div><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400;'> </span><br><div style='font-weight: 400; font-family: Arial, "sans-serif"; font-style: normal; font-size: 16px;'><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'>Its hard to getout of the desentralized propaganda (DAT, IPFS) and really understand how it works on a low level. </span>Is seems that the end of the low level path to understand how connections are established <span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'>is the BSD sockets API <span contenteditable="false" class="search_ignore"><a content_type_id="6" object_id="13" class="search_ignore" contenteditable="false" href="https://en.wikipedia.org/wiki/Berkeley_sockets">en.wikipedia.org/wiki/Berkeley_sockets</a></span> . I think every connection, independent of its higher level concept, virtualization, layering etc. has to be a low level socket using OS provided API's to control the network connections</span><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'>, these APIs all being very similar to the BSD sockets API.</span></div><div style='font-weight: 400; font-family: Arial, "sans-serif"; font-style: normal; font-size: 16px;'><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; color: var(--text-color); caret-color: var(--text-color); background-color: var(--box-color);'><br></span></div><div style='font-weight: 400; font-family: Arial, "sans-serif"; font-style: normal; font-size: 16px;'><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; color: var(--text-color); caret-color: var(--text-color); background-color: var(--box-color);'>This code shows a nice low level starting point implementation of a p2p node in python. The central concept is: </span><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'>"You have a network of the _same_ nodes. The _same_ means the same application (or an application that implements the same protocol)". It would be nice to make each node of the network run the exact same code, beyond that I think each user should be able to have multiple nodes and each node should be a device.</span><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'> </span> <span contenteditable="false" class="search_ignore" style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; color: var(--text-color); caret-color: var(--text-color); background-color: var(--box-color);'><a content_type_id="6" object_id="14" class="search_ignore" contenteditable="false" href="https://github.com/macsnoeren/python-p2p-network">github.com/macsnoeren/python-p2p-network</a></span> <span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'> </span><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; color: var(--text-color); caret-color: var(--text-color); background-color: var(--box-color);'> </span><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; color: var(--text-color); caret-color: var(--text-color); background-color: var(--box-color);'> </span><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; color: var(--text-color); caret-color: var(--text-color); background-color: var(--box-color);'> </span></div><div style='font-weight: 400; font-family: Arial, "sans-serif"; font-style: normal; font-size: 16px;'><br></div>I have read that "Tim Berners was close to a P2P network in that it assumed each user would be an active editor and contributor, creating and linking content to form an interlinked web". That's the hypertext and hyperlink, the fundamental mechanic of W3. <span contenteditable="false" class="search_ignore" style="font-size: 16px; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);"><a content_type_id="6" object_id="15" class="search_ignore" contenteditable="false" href="https://info.cern.ch/hypertext/WWW/TheProject.html">info.cern.ch/hypertext/WWW/TheProject.html</a></span> <br></div></div><div><br></div><div>There is no need to build tops on tops of protocols to have a more descentralized user driven network. tcp/ip, http, hyperlink can be used to connect people directly, each people should be given back the opportunity and responsability of keeping and managing its own data, every device already has a buit in capability of being a client and a server using TCP/IP, a tool to make easy and secure to expose one folder in your devices to the internet, and search other peoples public folders, with the fundamental mechanic of link to, pointing to would create a shared file space where each one really have the control over its files.</div><div><br></div><div><br></div><div><br></div><div>"To think about this is to go back 33 years ago, and back then, if you were sufficiently switched on and geeky, you could get yourself a computer and you could put a web server on it, you could plug it into the internet and you would have a website, so anybody could have a website. Not everybody had internet back then but, the spirit of the web was incredibly empowering to individuals(...). You could all link to eachother and the blogsphere was the felling of tremendous individual personal sovereignty, my website is out there, i got my domain name and now i have power, the same power as all these big companies. What has gonne wrong with that picture? Well, now everybody is on Facebook, so they don't have a website, they all use Mark Zuckerberg's website, on there a few things are wrong (...), what we lost is the hability for individuals to have power. Web 2.0 is this rather dysfunctional one where we have these huge silos, we have Facebook, where everything happens inside Facebook, we have Google, where everything happens inside Google, we have Linkedin, where everything happens inside Linkedin, you can't actually share (...) I would prefer a world where we could share across the plataform.<span style="font-size: 16px; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);">"</span></div><div> <span contenteditable="false" class="search_ignore"><a content_type_id="6" object_id="16" class="search_ignore" contenteditable="false" href="https://www.youtube.com/watch?v=DBB_LMepuQ4">www.youtube.com/watch?v=DBB_LMepuQ4</a></span> <span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'>this guy was mentioned as the guy in cryptography</span> <span contenteditable="false" class="search_ignore" style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; color: var(--text-color); caret-color: var(--text-color);'><a content_type_id="6" object_id="17" class="search_ignore" contenteditable="false" href="https://en.wikipedia.org/wiki/Bruce_Schneier" style="font-size: 16px;">en.wikipedia.org/wiki/Bruce_Schneier</a></span> <span style="background-color: var(--box-color); font-size: 16px; color: var(--text-color); caret-color: var(--text-color);"> </span><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; color: var(--text-color); caret-color: var(--text-color);'> </span></div><div><br></div><div><span style="font-size: 16px; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);">"One of the really important things about the way it was designed [the internet], the fact that you can put hypertext links in any format is that you should be able to represent any sort of information on the web. The web really should not force people to express themselves in any particular way, so in a way the web really is suppsed to be the infrastructure that gets out of the way, it's supposed to be a very transparent medium between the author and the reader and so if you find that life is complex on the web you are reading a complicated part of it, if you make, if you feel the web should be simple you can go and write a very simple piece of web." </span><span style="background-color: var(--box-color);">Tim Berners-Lee</span></div><div><span style="font-size: 16px; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);"> </span> <span contenteditable="false" class="search_ignore" style="font-size: 16px; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);"><a content_type_id="6" object_id="18" class="search_ignore" contenteditable="false" href="https://www.youtube.com/watch?v=BOHyLkp7TpE">www.youtube.com/watch?v=BOHyLkp7TpE</a></span> <br></div><div><br></div><div> <span contenteditable="false" class="search_ignore"><a content_type_id="6" object_id="25" class="search_ignore" contenteditable="false" href="https://www.youtube.com/watch?v=yBtyNIqZios">www.youtube.com/watch?v=yBtyNIqZios</a></span> freenet, more in par to what i was thinking<br></div><div><span style="font-size: 16px; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);"><br></span></div><div><span style="font-size: 16px; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);"> Tim Berners-Lee <span contenteditable="false" class="search_ignore"><a content_type_id="6" object_id="19" class="search_ignore" contenteditable="false" href="https://solidproject.org/">solidproject.org/</a></span> seems to me a good middleground solution to give people a digital itendity, a WebID and associate all of the data to that identity, but the data is still being hold by Id providers and Pod providers. I have trouble believing tha I have control over data that is not on my computer, the point is not that my privacy will be violated or something like that, but that my data can simple vanish from the cloud, has it happened before. So I'm still more found of a true p2p DSN, where the data is at all times in one of my devices, or at least shared across my devices, even if mirrored by other not mine devices.</span></div><div><span style="font-size: 16px; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);"><br></span></div><div><span style="background-color: var(--box-color); caret-color: var(--text-color); font-size: 16px; color: var(--text-color);"> <span contenteditable="false" class="search_ignore"><a content_type_id="6" object_id="20" class="search_ignore" contenteditable="false" href="https://link.springer.com/article/10.1007/s42979-020-00315-8">link.springer.com/article/10.1007/s42979-020-00315-8</a></span> <br></span></div><div><span style="background-color: var(--box-color); caret-color: var(--text-color); font-size: 16px; color: var(--text-color);"> <span contenteditable="false" class="search_ignore"><a content_type_id="6" object_id="21" class="search_ignore" contenteditable="false" href="https://docs.python.org/3/howto/sockets.html">docs.python.org/3/howto/sockets.html</a></span> <br></span></div><div><br></div><div>Requirements:</div><div> 1. E<span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'>ach device is a node, each node can have muliple sockets/connections</span></div><div><span style="background-color: var(--box-color); caret-color: var(--text-color); font-size: 16px; color: var(--text-color);"> 2. The same exact piece of code should be run in all nodes/devices. In p2p networks sometimes nodes have to play different functions like relay, discover or be a third party helping a NAT punch. In a true equal p2p network the same code should be running in all peers and each peer would have the option to play every function in the network. What make peers equal is not the fact tgat they all play the same role, but they all have the option to play every role.</span></div><div><span style="background-color: var(--box-color); caret-color: var(--text-color); font-size: 16px; color: var(--text-color);"> 3. One identity can have multiple nodes.</span></div><div><span style="background-color: var(--box-color); caret-color: var(--text-color); font-size: 16px; color: var(--text-color);"> 4. A Node should handle identity authentication</span><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'>, </span><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'>content response, content request and </span><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'>content linking</span></div><div><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'> 5. Content should aways stay in the devices of an identity, even if possible mirrored or copied.</span></div><div><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'><br></span></div><div><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'>I'm thinking in more depth about the indexing of users and contents. some names should be defined, insired by the original www <span contenteditable="false" class="search_ignore"><a content_type_id="6" object_id="23" class="search_ignore" contenteditable="false" href="https://info.cern.ch/hypertext/WWW/Terms.html#anchor">info.cern.ch/hypertext/WWW/Terms.html#anchor</a></span> </span></div><div><br></div><div>links made in Biont should be not just apressing the phisical user id and text or media id it points to, but also replicating it locally.</div><div><br></div><div>I'm thinking that the user main page should contain a flat index of all pages he has and all pages or files he is pointing to, he should keep locally all the pages and files in his list, being his or not. by linking to another user page or file he is not only making an index of the adresses of the content and user, also making a replica of the content to be acessed by others. He also should keep an index of all external users that are indexing his content.</div><div><br></div><div>User: { </div><div><span style="font-size: 16px; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);"> user_id: {'unique_friendly_name': string,</span><br></div><div> 'unique_hash': blob<br> },</div><div> pages: [</div><div><span style="font-size: 16px; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);"> {page_id: blob, links: [</span></div><div> { page_id or media_id: blob, content_adresses: [] },<br> <span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'>{ page_id or media_id: blob, content_adresses: [] },<br> </span><span style='font-family: Arial, "sans-serif"; font-size: 16px; font-style: normal; font-weight: 400; background-color: var(--box-color); color: var(--text-color); caret-color: var(--text-color);'>{ page_id or media_id: blob, content_adresses: [] },</span></div><div> ]</div><div> },</div><div> ]</div><div> medias: [media_id, media_id]</div><div>}</div><div><br></div><div>no support for linking media yet</div><div><br></div><div>In biont you can: upload a content and own it, link to a content and help manage it, point to and replicate, access a content and visualize it.</div><div><br></div><div>a link should have a content identifier and a list of users that point to that content, each link is a hash table of node ids that points to it. path to content should be:</div><div><br></div><div>click link > get users that point to that content > get devices that have that content</div></div><div><br></div><div>Only the node that the identitty is owner of the content can receive payment, replica nodes cannot receive payments for others data, that makes as a dynamics to contribute more to be receiving. </div><div><br></div><div>The Comes From section of the page is the hash table of all pages that points to it, by consequence the decives of the comes from node habe replicas of the data and can respond with the page to requests. </div><div><br></div><div>Each link in the goes to section of the page is a hash of all pages that points to it, its a copy of the comes to of the pointing page.</div><div><br></div><div>When a link is followed, node should present link hash table to the corresponding node, the corresponding can trow away the has table or accept it. Data of last update will be helpful in reducing unnecessary traffic.</div><div><br></div><div>Maybe a more elegant protocol would be.</div><div><br></div><div>Page A has a Link to B clicked:</div><div><br></div><div>A: B is on?</div><div>B: yes</div><div>A: I point to you.</div><div>B: Ok, here is a list of everyone that points to me</div><div>A: Ok, got the list.</div><div>A: everyone help me send.</div><div><br></div><div>Or</div><div><br></div><div>A: B is on?</div><div>(No response)</div><div>A: everyone help me send.<br></div><div><br></div><div>A and B being pages of an entity, physically inside the entity can be multiple devices answering the requested content.</div><div><br></div><div>Users creating links and clicking on links as triggers to create replicas and update files are a wonderful organic approach to making a slowly growing, slowly changing, reliable network. </div><div><br></div><div>There has to be a way to retrieve all users, all pages, all files, at least the titles and usernames. This index represents the whole network, while the link relations itself can the indexes by the comes_from goes_to table.</div><div><br></div><div>Retroshare</div><div>Tox</div><div>Briar<span style="font-size: 16px;"> </span><span style="font-size: 16px;"> </span></div><div><br></div><div>26/06/2024</div><div><br></div><div>Uma forma mais prática e real de abordar isso é criar uma rede social baseada em diversos servidores funcionando como modulos. um servidos central é um módulo onde cada usuário pode cadastrar seu próprio servidor para ser indexado, um móludo para reunir todos os usuários. cada usuário é um servidor e assim tem liberdade de controlar a implementação por baixo, desde que ofereca a mesma api para acessar seus arquivos e páginas.</div><div><br></div><div>18/06/2025</div><div><br></div><div>Agora já tenho uma idéia mais refinada do que fazer, a rede consiste em 3 módulos: um módulo para hostear o armazenamento de arquivos, que idealmente tem uma única identidade responsável por ele. outro módulo para realizar as operações de escrita no armazenamento e outro módulo para realizar as operações de leitura no armazenamento. O dono do armazenamento controla e da permissão aos servicos de escrita e leitura. Os serviços de escrita e leitura seguem um protocolo para registrar os dados de qual arquivo linka com qual arquivo no próprio armazenamento do usuário. Na prática cada armazenamto pode ser um object storage S3 compatível e o dono desde storage pode se inscrever em serviços de leitura dos seus dados para oferece-los para outros usuários, através dos servicos de leitura é que um usuário consegue linkar seu arquivo com arquivos de outros usuários.</div>

1
Author Titigal
Created 21 Feb 2024
Updated 17 Feb 2026
Comes From
Goes To
All of Titigal