Skip to main content

High-performance P2P Swarm implementation in C/Python with Signed RPC and IPC

Project description

KadePy

High-Performance Kademlia DHT Implementation for Python

KadePy is a robust and efficient Distributed Hash Table (DHT) library implementing the Kademlia protocol. It combines a high-performance C extension core for network handling and routing with a user-friendly Python wrapper.

Features

  • High Performance: Core logic (UDP reactor, routing table, storage, protocol) implemented in C for minimal overhead and maximum throughput.
  • Cross-Platform: Fully compatible with Windows, Linux, and macOS.
  • Hyperswarm Native Extension (New in v0.2.0):
    • Noise Handshake (XX Pattern): Secure, authenticated connections using libsodium (Ed25519/Curve25519).
    • UDX Transport: Reliable, encrypted UDP transport with congestion control and packet ordering.
    • Holepunching: Built-in NAT traversal.
    • Private Bootstrap Mode: Run isolated nodes on fixed ports to serve as private network beacons.
  • Secure:
    • Uses XSalsa20-Poly1305 for transport encryption.
    • Implements secure random number generation.
  • Concurrency: Thread-safe architecture with a dedicated network reactor thread, releasing the GIL whenever possible.
  • Easy to Use: Simple Python API for creating nodes, storing values, and finding peers.

Installation

From Source

git clone https://github.com/ON00dev/KadePy.git
cd KadePy
pip install .

Requirements

  • Python 3.10+
  • C Compiler (GCC/Clang on Linux/macOS, MSVC on Windows)
  • Libsodium (automatically bundled on Windows if built via setup.py)

Quick Start

Basic Node

from kadepy import Swarm
import time

# Create a node on a random port
node = Swarm()
print(f"Node started on port {node.port}")

# Create another node to bootstrap
bootstrap_node = Swarm(port=8000)
print("Bootstrap node on port 8000")

# Bootstrap the first node
node.bootstrap("127.0.0.1", 8000)

# Announce a topic (hash)
topic_hash = b'\x00' * 32 # 32-byte hash
node.announce(topic_hash, node.port)

# Find peers for the topic
peers = node.get_peers(topic_hash)
print("Found peers:", peers)

# Keep alive
try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    print("Stopping...")

Architecture

KadePy follows a hybrid architecture:

  1. C Extension (_core):

    • UDP Reactor: Handles non-blocking socket I/O using select (or platform specific polling).
    • Protocol: Implements Kademlia message serialization/deserialization.
    • Routing: Manages K-Buckets and node lookups.
    • Storage: In-memory key-value storage with expiration.
    • Crypto: ChaCha20 encryption and secure RNG.
    • Hyperswarm (Experimental): Native C implementation of Noise/UDX (work in progress).
  2. Python Wrapper (Swarm):

    • Provides a high-level API.
    • Manages the C reactor lifecycle.
    • Handles bootstrapping and iterative lookups.

Contributing

Contributions are welcome! Please check out the CONTRIBUTING.md guide for details.

  1. Fork the project.
  2. Create your feature branch (git checkout -b feature/AmazingFeature).
  3. Commit your changes (git commit -m 'Add some AmazingFeature').
  4. Push to the branch (git push origin feature/AmazingFeature).
  5. Open a Pull Request.

License

Distributed under the MIT License. See LICENSE for more information.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kadepy-0.2.3.tar.gz (280.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kadepy-0.2.3-cp314-cp314-win_amd64.whl (250.1 kB view details)

Uploaded CPython 3.14Windows x86-64

File details

Details for the file kadepy-0.2.3.tar.gz.

File metadata

  • Download URL: kadepy-0.2.3.tar.gz
  • Upload date:
  • Size: 280.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for kadepy-0.2.3.tar.gz
Algorithm Hash digest
SHA256 3a4931a6e573a826e919de5875be19afe60a8a37f7a5c823e2f7ad6c62aeb136
MD5 bfe51032b0546f72590b5a49539ffcae
BLAKE2b-256 fa445f2f0a5014e09da858a9ceaf3db62570c5f7914fdb79597abdc8928b2be7

See more details on using hashes here.

File details

Details for the file kadepy-0.2.3-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: kadepy-0.2.3-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 250.1 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for kadepy-0.2.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b71a190cb892b651eb656eb84b6eb600a8259a4e1d96259c39c82e02db07824f
MD5 6a1538ab0179dc171891570b473e304d
BLAKE2b-256 f44c778f88fd31ecadeb68c105172d85e1eb0e0623c468573a541003f057470f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page