Easiest way to find the correct kademlia bucket

Posted by Martin on Stack Overflow See other posts from Stack Overflow or by Martin
Published on 2010-04-16T23:44:39Z Indexed on 2010/04/16 23:53 UTC
Read the original article Hit count: 345

In the Kademlia protocol node IDs are 160 bit numbers. Nodes are stored in buckets, bucket 0 stores all the nodes which have the same ID as this node except for the very last bit, bucket 1 stores all the nodes which have the same ID as this node except for the last 2 bits, and so on for all 160 buckets.

What's the fastest way to find which bucket I should put a new node into?

I have my buckets simply stored in an array, and need a method like so:

Bucket[] buckets; //array with 160 items

public Bucket GetBucket(Int160 myId, Int160 otherId)
{
    //some stuff goes here
}

The obvious approach is to work down from the most significant bit, comparing bit by bit until I find a difference, I'm hoping there is a better approach based around clever bit twiddling.

Practical note: My Int160 is stored in a byte array with 20 items, solutions which work well with that kind of structure will be preferred.

© Stack Overflow or respective owner

Related posts about kademlia

Related posts about dht