%0asWjhFa51ri/OOSXJgC/aUweNzhxHi2/7+PXhwUzH8=.sha256
{ "previous": "%waogukJ4rCFpkA1Vk0JIhLhaXQkBJnblO/lH1h7+SsQ=.sha256", "author": "@EMovhfIrFk4NihAKnRNhrfRaqIhBv1Wj8pTxJNgvCCY=.ed25519", "sequence": 2668, "timestamp": 1465967774766, "hash": "sha256", "content": { "type": "post", "text": "## \"DHT\" on a \"trust\" network\n\nbittorrent/DAT like protocols are pretty good for moving heavy data. (video, OS images, etc) the best part is that you collaborate only with other peers who are invested in a particular dataset.\n\nBut the weakness (in my opinion) is that they rely on a DHT.\nDHTs are bad because peers collaborate anonymously, you have cannot estimate their trustworthyness and consequently, DHTs tend to have poor privacy (because an adversary could easily add peers that monitor you) and poor sybil resistance (again, because you have no way to know that a peer is \"near you\" or \"on your side\")\n\nThis happens because work is distributed between peers uniformly.\nPeers are mapped into a hash ring, so to get a hash, you traverse peers closer and closer to your target.\n\nOne of the core ideas in ssb is to map the computer network along the social network (thus defeating spam, because you arn't friends with spammers)\n\ncould we make a thing that is _functionally equivalent_ to a DHT without allocating work uniformly?\n\nHere is my idea: identify a resource by it's hash, but attach a set of \"hints\". In most computer systems, you would probably use a heirachical namespace of some form to route me a message... but that just strengthens the patriarchy. What about _non heirachical routing_?\n\nBasically, you have a graph, a network. and you need a terse way to locate any node. With a heirachical network, you arrange nodes into a tree. (effectively \"flattening\" the network) What if there was another way to represent the location of a node? Any real life network will have an inherent structure, it's most probably gonna be a [scale free network](https://en.wikipedia.org/wiki/Scale-free_network) aka a \"small world\" network.\n\nThat means, the path between any two nodes is fairly short, due to the existance of hubs/superconnectors that connect between local sub-networks. Maybe you could address a node using it's address and then a short list of super connectors it's associated with.\n\nThat list of connectors could be represent peers it follows, or it could represent \"categories\" scifi, techno, country-music etc.\nYou'd request id+categories, and if a peer knows the id, it connects you directly, if not, it forwards you to peers it knows that are associated with more of the categories than it has.\n\nYou might get a message to me by using \"node.js, javascript, sailing, crypto, nz\" you might not know me, but you might know someone who knows `javascript`, or `sailing` or `nz` once you can get there,\nyou can get closer and closer.\n\nTo test this idea, generate a randomized scalefree graphs, then randomly pick one node to connect to another. (assume they get the id+categories via another channel) what is the probability that they already know someone closer to a category? how many categories are needed, and how much do you need to remember about your peers, and for a given settings, how many peers will you need to contact to connect to a peer or swarm?\n\n\\#AirportIdeas", "mentions": [] }, "signature": "BG7BdxCGQkHJXIv9s7oVPyaIBOGLhd5yI1s6HQK2arg1+NvAcKclTWB8EXF+1zUGroT1DbbIDYFY3yyQBDBuAQ==.sig.ed25519" }
Built with git-ssb-web