Search code examples
javasocketsdhtkademlia

Kademlia Implementation in Java


I want to setup a Kademlia network to connect peers and build a p2p network. I'm going to distribute processing power of nodes within the network. For network I found this Kademlia Java implemented Setup from git. https://github.com/JoshuaKissoon/Kademlia
enter image description here

I want to know how to setup this and use to implement the network. I found that

JKademliaNode kad1 = new JKademliaNode("Node1", new KademliaId("ASF45678947584567467"), 7574);

JKademliaNode kad2 = new JKademliaNode("Node2", new KademliaId("ASERTKJDHGVHERJHGFLK"), 7572);

is used to create 2 instances of the peers and following code to connect them with each other.

kad1.bootstrap(kad2.getNode());

But that was to connect them in the same program where it's running.

I want to connect them accordingly for different computers. Been stuck here for hours. I don't know how to use this.


Solution

  • According to Kademlia protocol you can find in here, "To join the network, n node U must have a contact to an already participating node W. U then performs a node lookup for it's own node ID."

    You should have two instance of the nodes.

    Instance 1:

    JKademliaNode kad1 = new JKademliaNode("Node1", new KademliaId("ASF45678947584567467"), 7574);
    

    Instance 2:

    JKademliaNode kad2 = new JKademliaNode("Node2", new KademliaId("ASERTKJDHGVHERJHGFLK"), 7572);
    

    You can bootstrap the node2 from node 1.

    KademliaId id = new KademliaId("ASERTKJDHGVHERJHGFLK"); 
    InetAddress ip =InetAddress.getByName("Ip address of the remote node");
    Node kad2 = new Node(id,ip,7572);
    kad1.bootstrap(kad2);