I can't wrap my head around how someone came up with something so genius. Oh, and I'm doing my MSC thesis around this algorithm, and this was by far the best explanation I came across
I'm really surprised by the fact that this video has such a low statistics. The video is great, you are great, the explanation is great. You deserve more
It's niche, but at the same time, if this were public knowledge, we wouldn't have crappy and leaky message apps like Telegram or Signal. Instead we'd have a truly decentralized web.
Thanks for this. I've read the Kademlia paper and a bunch of stuff online where people try to explain it. But I could never INTUITIVELY grasp why the "k-bucket" routing table scheme actually made sense until watching this video.
Incredibly well explained. The algorithm reminds me of a theory spanwned some time ago, about the 5 grades of friendships. You are 5 acquaitances away from anyone on this planet
I´m studing computer ingeneering and this is the best explanation i found about Kademlia. Great video, simple explanation, new subscriber. Thanks form Salamanca, Spain
Thanks for the video, I needed a refresher, and it worked grat :) There are some wrong details: - 2m55s: 4/8/16 bits are 16/256/65536 values - 5m16s: why have Dijkstra to start from 0? And why is the 'v6' stored twice? - 10m15s: the way you explain the xor distance, and the examples you chose, makes it look like it's |a-b| (see one of the comments), when in fact the xor measure gives a new definition of the distance which has nothing to do with the distance on the linear scale: 1000 and 0111 are 0001 away on the linear scale, but 0111 on an xor scale - 12m39s: 0101 xor 1101 is 1000 - 22m28s: the 'log' here is in fact 'ln' or 'ln2', so for 1e6 nodes, you need something like 20 hops. Still not too many, and still very impressive. And as you said, there are many details in the Kademlia protocol...
I think everyone misunderstand what O(log_n)-hop means. It does not mean that for n nodes it takes log(n) or ln(n) hops. Big O notations only refer to how much the process scales. The true expected number of hops could really be log_n multiplied by any constant.
OMG, I am totally speachless after this master explanation. How in this world Wikipedia has that horrible concepts and definitions about Kademlia, and this man, has came that easily and walk around explaining so clear everything about it.... I am really thankful for having seeing this video. Sr, now you can delete it from TH-cam, I know all that I need to XDDD. Thanks, for real....
A little late to the party, but this is an awesome video and I have learned a lot from it. I have a small piece of feedback, though I’m not sure if implementing it would be helpful for your intended audience. I feel that your explanation of the triangle property leaves a little to be desired. At a surface level, the triangle property doesn’t have all that much to do with “triangulation” in the sense most people are familiar with, i.e. taking measurements from multiple places to narrow down a point’s location. **Way** down under the hood, the triangle property is important for triangulation, but only because it’s important for basically any process that involves geometry and metrics, and as far as I can tell the use of the word triangle in both of these concepts is more or less coincidental. Having not read the Kademlia paper, I have a guess as to how the triangle property may be relevant to the hopping protocol: basically a big hop plus a small hop lands not much farther away from the starting point than just the big hop. This assures us that we will never hop into the wrong distant k-bucket from our current node.
The idea is that xor is the new distance measurement. So you cannot compare xor(a,b) with a |a-b|. But you have three things which are very important for the algorithm to converge to the desired destination: 1. distance to self is 0: xor(a, a) = 0 2. the order of the nodes is not important: xor(a, b) = xor(b, a) 3. triangle inequality: xor(a, c)
Now, what if you duplicate parts k-buckets over distributed systems, and suddenly you add in redundancy. If you can also add in "life expectancy probability" (for servers, i.e. for server up time, but also for server creation) into the calculation, then you can have a truly dynamic system, that can have servers pop up and "die" everywhere, without it mattering in the slightest for either up-time or service delivery times (outside of time units that are noticeable for human beings anyway). In other words, it's a super stable system that's very, very hard to break by any outside force; The kind of system that might even survive a nuclear attack, just like how the Internet was intended. ;)
I don't think you should say that hashing the computer name, is the same as generating a random number, hashing it again will result in the same number, the hash isn't random, it just looks random.
Ah so you just use XOR to count occurrences of "1s" and if there are too many 1s than some threshold, then the space is too close? Edit: When you find distances you basically find probability spaces at the same time. And you can check this with the probability space of other dictionary words, to make room for enough probable possibilities in every category? Incidentally, when you do polling, you'll immediately know when or if you're about to run out of addresses, so you can load-balance efficiently and start shovelling data over to other nodes/servers.
The stuff you mention at 11:30 about being non-Euclidean doesn't really make sense. Being symmetric is a requirement to be a metric and definitely doesn't make it non-Euclidean
I want to use this process to create a distributed and secure (as in non-censorable) messaging system. It's a direct reply to EU's murmuring about illegalizing all cryptography in the region, which is just an insane take on "security".
Where is being used? Are there any new better ways to distribute? Also a little secret: Kademlia is being mispronounced everywhere. It should be kademlìa and not kadèmlia. Means Lucky man.
I can't wrap my head around how someone came up with something so genius. Oh, and I'm doing my MSC thesis around this algorithm, and this was by far the best explanation I came across
You deserve a gold medal for the simple yet clever way of explaining this protocol
I stopped at 4:00 and now I'm currently working out the trivial details so I can come back to the next step of the video.
Amazing video. To the point, good visuals, clear audio, perfection.
I'm really surprised by the fact that this video has such a low statistics. The video is great, you are great, the explanation is great. You deserve more
I totally agree. The problem is only a handful of us nerds in this world will do a search for kademlia.
@@flcoder jajajaja is so niche
It's niche, but at the same time, if this were public knowledge, we wouldn't have crappy and leaky message apps like Telegram or Signal. Instead we'd have a truly decentralized web.
You did an amazing job of explaining the algorithm. What an ingenious system.
I am shocked how simple and fascinating you made it! First time I see a video from you, but already your fan.
Thanks for this. I've read the Kademlia paper and a bunch of stuff online where people try to explain it. But I could never INTUITIVELY grasp why the "k-bucket" routing table scheme actually made sense until watching this video.
Music to our ears. It's not a simple concept!
Best educational video award on TH-cam? They should give out prizes
Haha thank you!
What an incredible explanation. Thank you so much!
Incredibly well explained. The algorithm reminds me of a theory spanwned some time ago, about the 5 grades of friendships. You are 5 acquaitances away from anyone on this planet
nicely presented the complex thing in simple ways
I´m studing computer ingeneering and this is the best explanation i found about Kademlia. Great video, simple explanation, new subscriber. Thanks form Salamanca, Spain
Thanks. Best explanation of Kademlia ever
Thanks for this, amazing presentation!
This is the best explanation out in the web so far. Just earned a sub!!
I probably need to watch one more time to understand the nuances, but I like the way you explain. Thank you
just pure knowledge, amazing.
This was such a clear explanation. Thank you.
One of the best videos on Kademlia. Really straightforward!
The best explanation I've seen in the Internet! Great!
excellent explanation, thank you for making this video!
Must also join the ranks and offer thanks for the eloquent explanation.
Amaaaaaaaazing!!!!!!!!!!!!!!!!!!!!!!!!!
Please keep uploading such great content!
Thanks for the video, I needed a refresher, and it worked grat :)
There are some wrong details:
- 2m55s: 4/8/16 bits are 16/256/65536 values
- 5m16s: why have Dijkstra to start from 0? And why is the 'v6' stored twice?
- 10m15s: the way you explain the xor distance, and the examples you chose, makes it look like it's |a-b| (see one of the comments), when in fact the xor measure gives a new definition of the distance which has nothing to do with the distance on the linear scale: 1000 and 0111 are 0001 away on the linear scale, but 0111 on an xor scale
- 12m39s: 0101 xor 1101 is 1000
- 22m28s: the 'log' here is in fact 'ln' or 'ln2', so for 1e6 nodes, you need something like 20 hops. Still not too many, and still very impressive.
And as you said, there are many details in the Kademlia protocol...
Isnt n11 placed wrong aswell, for the routing table of n5? Maybe im confusing smth here but 0101 Xor 1011 is 1110 not 1011 (18m23s)
@@rhylow2733 Yes, absolutely correct. And why the 'v6' is twice there, once at position '6', and once at position '12' is also a mystery to me.
I think everyone misunderstand what O(log_n)-hop means. It does not mean that for n nodes it takes log(n) or ln(n) hops. Big O notations only refer to how much the process scales. The true expected number of hops could really be log_n multiplied by any constant.
Phenomenal video. Came from IPFS :)
Really extremely insightful explanation
I love the way you have presented the idea behind the paper. Thanks for the video. Hope to see more such papers explained.
such quality and expertise it was like watching a Netflix episode, Thanks
This was brilliant. Thanks for breaking down such complex subject matter in a straightforward way!
Wow, fantastic video!!. You should do a video explaining the K-bucket split. When happens and why :)
top-notch explanation, subd!
Best explanation on the internet!!
I really like this video. earned yourself a sub.
Thanks so much!
I have to make this for my homework in distributed systems really helpful thanks
You are amazing! Thank you so much, this is really helpful!!!!
Please make more videos, go through more papers. Your explanation is really good.
Working on it! We're partway through a series on bloom filters now.
Amazing, amazing explanation! Thank you
Glad you enjoyed it!
I think there are some mistakes :
- at 12:35 0101^1101 should be 8 not 11
- at 18:14 n11 shouldn't be at 1110 ? n5^n11=0101^1011=1000=8 right ?
Yes. You're absolutely correct
Idk how I got here, but very nice clear explanation. Can you update your channel description to say what you're about?
thank you, this was a great explanation
I love this explanation so much. Instantly clicked for me!
Really clear explanation. Thank you!
what a fantastic video! So cool and so dope.
Awesome awesome awesome video! Loved it, and it's very inspiring
Very nice explanation 👍
Such a great explanation ! kudos
Fantastic presentation
Amazing explanation ! thank you
OMG, I am totally speachless after this master explanation. How in this world Wikipedia has that horrible concepts and definitions about Kademlia, and this man, has came that easily and walk around explaining so clear everything about it.... I am really thankful for having seeing this video. Sr, now you can delete it from TH-cam, I know all that I need to XDDD. Thanks, for real....
great video! thanks a bunch for the work! 😍
Wow you definitely just earned a new subscriber 🤝🧠
A little late to the party, but this is an awesome video and I have learned a lot from it. I have a small piece of feedback, though I’m not sure if implementing it would be helpful for your intended audience. I feel that your explanation of the triangle property leaves a little to be desired. At a surface level, the triangle property doesn’t have all that much to do with “triangulation” in the sense most people are familiar with, i.e. taking measurements from multiple places to narrow down a point’s location. **Way** down under the hood, the triangle property is important for triangulation, but only because it’s important for basically any process that involves geometry and metrics, and as far as I can tell the use of the word triangle in both of these concepts is more or less coincidental. Having not read the Kademlia paper, I have a guess as to how the triangle property may be relevant to the hopping protocol: basically a big hop plus a small hop lands not much farther away from the starting point than just the big hop. This assures us that we will never hop into the wrong distant k-bucket from our current node.
Thanks for the video! Which camera you're using?
🙏 thanks! Sony a7iii
@@n0computer Ah, heavy artillery :D
very easily explained
great video!
Great video, thanks!
Amazing. Loved it.
Very helpful, thank you!
Best explanation ever
Thanks! I love this video so much 🙂
clear explanation, thanks!
This is amazing !!
Cool video :)
I don't really understand what the benefits of Kademlias K-Buckets are over Chord's Finger Tables. Seems like the same concept to me.
why xor is not working for 0001 xor 1000 = 9 but real distance is only 7
The idea is that xor is the new distance measurement. So you cannot compare xor(a,b) with a |a-b|. But you have three things which are very important for the algorithm to converge to the desired destination:
1. distance to self is 0: xor(a, a) = 0
2. the order of the nodes is not important: xor(a, b) = xor(b, a)
3. triangle inequality: xor(a, c)
At th-cam.com/video/1QdKhNpsj8M/w-d-xo.html shouldn't the n11 node be the second last leaf (from left to right)?
Now, what if you duplicate parts k-buckets over distributed systems, and suddenly you add in redundancy. If you can also add in "life expectancy probability" (for servers, i.e. for server up time, but also for server creation) into the calculation, then you can have a truly dynamic system, that can have servers pop up and "die" everywhere, without it mattering in the slightest for either up-time or service delivery times (outside of time units that are noticeable for human beings anyway). In other words, it's a super stable system that's very, very hard to break by any outside force; The kind of system that might even survive a nuclear attack, just like how the Internet was intended. ;)
omg, what a great video
I don't think you should say that hashing the computer name, is the same as generating a random number, hashing it again will result in the same number, the hash isn't random, it just looks random.
good video
amazing
I need this
Thanks
Ah so you just use XOR to count occurrences of "1s" and if there are too many 1s than some threshold, then the space is too close? Edit: When you find distances you basically find probability spaces at the same time. And you can check this with the probability space of other dictionary words, to make room for enough probable possibilities in every category? Incidentally, when you do polling, you'll immediately know when or if you're about to run out of addresses, so you can load-balance efficiently and start shovelling data over to other nodes/servers.
amazing video that you
The stuff you mention at 11:30 about being non-Euclidean doesn't really make sense. Being symmetric is a requirement to be a metric and definitely doesn't make it non-Euclidean
Kademlia is the "small world network" theory in actual use.
Sooooooo much this
I want to use this process to create a distributed and secure (as in non-censorable) messaging system. It's a direct reply to EU's murmuring about illegalizing all cryptography in the region, which is just an insane take on "security".
Damnnn
like this video
the lesson was very useful, but his green eyes.......💔💔💔
Where is being used?
Are there any new better ways to distribute?
Also a little secret: Kademlia is being mispronounced everywhere. It should be kademlìa and not kadèmlia. Means Lucky man.
Amazing! but please try to speak slower, would be perfect for non-english speakers. Thanks
youtube provides the feature to run at 0.75x speed. his speaking is not a problem.