kademlia-dht | network-agnostic Kademlia distributed hash table | Hashing library

 by   jeanlauliac JavaScript Version: 0.1.0 License: MIT

kandi X-RAY | kademlia-dht Summary

kandi X-RAY | kademlia-dht Summary

kademlia-dht is a JavaScript library typically used in Security, Hashing applications. kademlia-dht has no bugs, it has no vulnerabilities, it has a Permissive License and it has low support. You can install using 'npm i kademlia-dht' or download it from GitHub, npm.

network-agnostic Kademlia distributed hash table
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              kademlia-dht has a low active ecosystem.
              It has 64 star(s) with 13 fork(s). There are 6 watchers for this library.
              OutlinedDot
              It had no major release in the last 12 months.
              There are 1 open issues and 0 have been closed. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of kademlia-dht is 0.1.0

            kandi-Quality Quality

              kademlia-dht has no bugs reported.

            kandi-Security Security

              kademlia-dht has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              kademlia-dht is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              kademlia-dht releases are not available. You will need to build from source code and install.
              Deployable package is available in npm.
              Installation instructions are not available. Examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of kademlia-dht
            Get all kandi verified functions for this library.

            kademlia-dht Key Features

            No Key Features are available at this moment for kademlia-dht.

            kademlia-dht Examples and Code Snippets

            No Code Snippets are available at this moment for kademlia-dht.

            Community Discussions

            QUESTION

            What does it mean by Kademlia keys are used to identify nodes as well as data?
            Asked 2020-Jan-09 at 19:56

            Okay, I've been reading articles and the paper about Kademlia recently to implement a simple p2p program that uses kademlia dht algorithm. And those papers are saying, those 160-bit key in a Kademlia Node is used to identify both nodes (Node ID) and the data (which are stored in a form of tuple).

            I'm quite confused on that 'both' part.

            As far as my understanding goes, each node in a Kademlia binary tree uniquely represents a client(IP, port) who each holds a list of files.

            Here is the general flow on my understanding.

            1. Client (.exe) gets booted
            2. Creates a node component
            3. Newly created node joins the network (bootstrapping)
            4. Sends find_node(filehash) to k-closest nodes
              • Let's say hash is generated by hashing file binary named file1.txt
            5. Received nodes each finds the queried filehash in its different hash table
              • Say, a hash map that has a list of files(File Hash, file location)
            6. Step 4,5 repeated until the node is found (meanwhile all associated nodes are updating the buckets)

            Does this flow look all right?

            Additionally, bootstrapping method of Kademlia too confuses me. When the node gets created (user executes the program), It seems like it uses bootstrapping node to fill up the buckets. But then what's bootstrapping node? Is it another process that's always running? What if the bootstrapping node gets turned off?

            Can someone help me better understand the concept?

            Thanks for the help in advance.

            ...

            ANSWER

            Answered 2020-Jan-09 at 19:56

            Does this flow look all right?

            It seems roughly correct, but your wording is not very precise.

            Each node has a routing table by which it organizes the neighbors it knows about and another table in which it organizes the data it is asked to store by others. Nodes have a quasi-random ID that determines their position in the routing keyspace. The hashes of keys for stored data don't precisely match any particular node ID, so the data is stored on the nodes whose ID is closest to the hash, as determined by the distance metric. That's how node IDs and key hashes are used for both.

            When you perform a lookup for data (i.e. find_value) you ask the remote nodes for the k-closest neighbor set they have in their routing table, which will allow you to home in on the k-closest set for a particular target key. The same query also asks the remote node to return any data they have matching that target ID.

            When you perform a find_node on the other hand you're only asking them for the closest neighbors but not for data. This is primarily used for routing table maintenance where you're not looking for any data.

            Those are the abstract operations, if needed an actual implementation could separate the lookup from the data retrieval, i.e. first perform a find_node and then use the result set to perform one or more separate get operations that don't involve additional neighbor lookups (similar to the store operation).

            Since kademlia is UDP-based you can't really serve arbitrary files because those could easily exceed reasonable UDP packet sizes. So in practice kademlia usually just serves as a hash table for small binary values (e.g. contact information, public keys and such). Bulk operations are either performed by other protocols bootstrapped off those values or by additional operations beyond those mentioned in the kademlia paper.

            What the paper describes is only the basic functionality for a routing algorithm and most basic key value storage. It is a spherical cow in a vacuum. Actual implementations usually need additional features or work around security and reliability problems faced on the public internet.

            But then what's bootstrapping node? Is it another process that's always running? What if the bootstrapping node gets turned off?

            That's covered in this question (by example of the bittorrent DHT)

            Source https://stackoverflow.com/questions/59657964

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install kademlia-dht

            You can install using 'npm i kademlia-dht' or download it from GitHub, npm.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            Install
          • npm

            npm i kademlia-dht

          • CLONE
          • HTTPS

            https://github.com/jeanlauliac/kademlia-dht.git

          • CLI

            gh repo clone jeanlauliac/kademlia-dht

          • sshUrl

            git@github.com:jeanlauliac/kademlia-dht.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Hashing Libraries

            Try Top Libraries by jeanlauliac

            js-m4

            by jeanlauliacJavaScript

            colorbrewer

            by jeanlauliacCSS

            sysexits

            by jeanlauliacJavaScript

            ninja-build

            by jeanlauliacShell

            mekano

            by jeanlauliacJavaScript