Algorithm-Kademlia

 view release on metacpan or  search on metacpan

eg/kademlia_demo.pl  view on Meta::CPAN

use v5.40;
use lib '../lib';
use Algorithm::Kademlia;
#
my $local_id = pack 'H*', '00' x 32;
my $rt       = Algorithm::Kademlia::RoutingTable->new( local_id_bin => $local_id );

# Fill with some dummy peers
for ( 1 .. 50 ) {
    my $pid = pack 'C*', map { int rand 256 } 1 .. 32;
    $rt->add_peer( $pid, { index => $_ } );
}
my $target  = pack 'H*', 'ff' x 32;
my @closest = $rt->find_closest( $target, 3 );
say 'Top 3 closest peers to FF...:';
say sprintf ' - ID: %s (Peer #%s)', unpack( 'H*', $_->{id} ), $_->{data}{index} for @closest



( run in 2.399 seconds using v1.01-cache-2.11-cpan-cdf2f3d4e48 )