Skip to content

Datamesh is a secure, decentralized data storage layer built in Rust using the libp2p protocol. It enables users to register, upload, download, and manage files with strong privacy guarantees. Users authenticate using ed25519 cryptographic keys, ensuring secure access to their data.

Notifications You must be signed in to change notification settings

kR1s0147/DataMesh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Datamesh: A Private Data Storage Layer

Overview

Datamesh is a secure, decentralized data storage layer built in Rust using the libp2p protocol. It enables users to register, upload, download, and manage files with strong privacy guarantees. Users authenticate using ed25519 cryptographic keys, ensuring secure access to their data. It uses a peer-to-peer network to store and share data, ensuring privacy and security. The platform is built using Rust and leverages the Tokio runtime for asynchronous operations. It supports user registration, file uploads , and secure downloads with signature verification. The Protocol uses ed25519 for public key cryptography to ensure the integrity and authenticity of data transfers. This Protocol uses libp2p for peer-to-peer networking, allowing nodes to communicate and share data efficiently. The Protocols uses in this project are GossipSub for message propagation and Request-Response for direct communication. kademlia is used for distributed hash table (DHT) functionality, enabling efficient data retrieval and storage across the network.

Datamesh Client

A command-line interface (CLI) tool written in Rust, provides an intuitive way to interact with the Datamesh protocol. It allows users to register, upload, and download files securely. The client uses ed25519 for public key cryptography to ensure the integrity and authenticity of data transfers. It interacts with the DataMesh server via HTTP requests, sending and receiving data in JSON format. The client supports user registration, file uploads, and downloads, handling cryptographic signatures for secure operations.

Demo video - Working of datamesh

Watch a quick demo of the Datamesh Client in action:

Datamesh Demo

Click the image above to view the demo video.

Features

  • Secure Authentication: Users register and authenticate using ed25519 key pairs for robust cryptographic security.
  • Private File Storage: Upload and download files, ensuring data privacy (Currently integrating the Security).
  • Decentralized Architecture: Leverages libp2p for peer-to-peer networking, enabling resilient and distributed data storage.
  • CLI Tool: The Datamesh Client offers a simple, powerful interface to interact with the protocol.

Installation

Prerequisites

  • Rust (stable, version 1.65 or higher) and Cargo
  • libp2p dependencies (automatically managed via Cargo)
  • A compatible operating system (Windows, macOS, or Linux)

Installing Rust

Install Rust and Cargo using rustup:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

Installing Datamesh Client

Clone the repository and build the CLI tool:

git clone https://github.com/kr1s0147/datamesh.git
cd datamesh
cargo build --bin datamesh --release 

The compiled binary will be available at ./target/release/datamesh.

For the datamesh-client

git clone https://github.com/kr1s0147/datamesh.git
cd datamesh
cargo build --bin datamesh-client --release 

The compiled binary will be available at ./target/release/datamesh-client.

Usage of Datamesh-Client

Registering a User

Generate an ed25519 key pair and register with the Datamesh network:

./datamesh-client register --private_Key <privatekey> --URL <RPC_URL>

Uploading a File

Upload a file to the Datamesh storage layer:

./datamesh-client upload --file <path-to-file> --private_key <private-key> --URL <RPC_URL>

The file is encrypted using your ed25519 key and stored across the libp2p network.

Downloading a File

Retrieve a file from the Datamesh network:

./datamesh-client download --file-id <file-id> --private_Key <private-key> --output <path-to-save> --URL <RPC_URL>

The file is decrypted using your private key and saved to the specified location.

Security

  • ed25519 Keys: Datamesh uses ed25519 for signing and verifying transactions, ensuring secure authentication and data integrity.
  • libp2p Networking: Utilizes libp2p’s peer-to-peer protocols for secure, decentralized communication.
  • Key Management: Store your private key securely. Loss of the private key will result in permanent loss of access to your files.

Technical Details

  • Protocol: Built in Rust using the libp2p framework for peer-to-peer communication.
  • Cryptography: Leverages ed25519-dalek for key generation and signing.
  • Storage: Files are sharded and distributed across the libp2p network with encryption.

Usage Datamesh

Running the nodes

You can run nodes at your local network , you can span different port numbers for the different addresses. Steps:

./datamesh 
Enter Node Number:
./datamesh Enter Boot address:

Leave 3 option with NA , if it is bootnode(firstnode)

Contact

For questions or support, reach out to me at:

About

Datamesh is a secure, decentralized data storage layer built in Rust using the libp2p protocol. It enables users to register, upload, download, and manage files with strong privacy guarantees. Users authenticate using ed25519 cryptographic keys, ensuring secure access to their data.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages