You are reading content from Scuttlebutt
@Dominic %0asWjhFa51ri/OOSXJgC/aUweNzhxHi2/7+PXhwUzH8=.sha256

"DHT" on a "trust" network

bittorrent/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.

But the weakness (in my opinion) is that they rely on a DHT.
DHTs 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")

This happens because work is distributed between peers uniformly.
Peers are mapped into a hash ring, so to get a hash, you traverse peers closer and closer to your target.

One 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)

could we make a thing that is functionally equivalent to a DHT without allocating work uniformly?

Here 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?

Basically, 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 aka a "small world" network.

That 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.

That list of connectors could be represent peers it follows, or it could represent "categories" scifi, techno, country-music etc.
You'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.

You 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,
you can get closer and closer.

To 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?

#AirportIdeas

@Anders %rIntRCYhSdp8WTzBABnemFGnPsP44e1kbAxzbhHJYmc=.sha256

Agree with this. I was looking at hypercore and maybe using webrtc to send data in the browser only. But then I found out that it needs signalhub to get going and that kind of sucks as you need to have signalhub running somewhere. If only the peer information could be sent using something like scuttlebot (maybe using an ephemeral channel), then you could boostrap this on a trusted network as you say. That would be really cool!

@Dominic %I1VrsvJK2zDGmHuUi1aQai/eR+1LAt1+euYKtDRBnIg=.sha256

oh, update on that: I've been thinking about how best to add other protocols, and usually they need a bit of help from an intermediary... I was thinking a neat way to do this would be to tunnel through a pub to another peer - then you could privately exchange webrtc connection setup stuff. (or you could just have a chat through that tunnel too)

User has not chosen to be hosted publicly
@Bob %2r4pSSW/6oeuO+xhIsNLeFUf6ZpH9OeuKEIyp1jTUa8=.sha256

DHTs are bad because peers collaborate anonymously, you have cannot estimate their trustworthyness and consequently

maybe you could make a DHT out of trusted peers. And instead of just XOR distance you could use foaf distance for k-buckets

You'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.

Would the peer you request the id+categories still be a vulnerability for an eclipse attack?

@pfraze %g0NwdBE61/IMIum1wKgVB5XL/PxpOeh8qU5lhJIbkIY=.sha256

maybe you could make a DHT out of trusted peers

That seems promising to me

@Bob %jHuBVVuxhO2nOhtaWozs+Rtooth+4HOJE/i9wqO4Pb4=.sha256

ref prev dicussion %GAl4Ydu...

@Dominic %KqUNvZbLdbWlDwnTe17IRAAmK75INhsXejZozuztzsU=.sha256

@amnovak you can think of all the possible categories as a irregular multidimentional space (a network) and then you could reference a subspace by a vector in those dimentions. You personally might not know very much about sailing, but there still a chance that you are connected to someone who is (because you are now ;) Likewise, I'm not a biohacker, but I do know a handfull of them, so I could probably route those messages on.


hmm, no @null_radix's idea is also interesting.

maybe you could make a DHT out of trusted peers. And instead of just XOR distance you could use foaf distance for k-buckets

Oh, I realize now I didn't fully understand this proposal the previous time it came up. Let me translate into my own words to ensure I understand: You'd still use uniformly allocated buckets,
i.e. peers would arange themselves into a hash ring, but peers wouldn't just promiscuiously associate with whoever had a closer XOR distance to their id. Instead, they'd go through their social network to find peers that are closer to a target, but also related to them (and thus trustworthy)

I think this could work! This idea seems like it might be easier to build (and evaluate via a simulation)

User has not chosen to be hosted publicly
User has not chosen to be hosted publicly
Join Scuttlebutt now