This project implements a decentralized distributed file storage system using Go, leveraging cryptography and peer-to-peer (P2P) libraries. It allows users to store files securely and distribute them across a network of nodes. The decentralized nature ensures no central authority controls the data, while the cryptographic functionality ensures data integrity, confidentiality, and security.
Files are divided into chunks and stored across multiple nodes.
Uses a P2P network for file sharing and retrieval, ensuring scalability and decentralization.
Files are encrypted before being distributed to ensure data security.
Replicates file chunks across nodes to provide fault tolerance.
Cryptographic hashing is used to verify file integrity.
Users can retrieve files from the decentralized network by reassembling chunks.
Any user can join the network as a storage node and contribute resources.
The primary language used for development.
Provides encryption and hashing for secure file storage.
Implements decentralized communication and file sharing among nodes.
Go version 1.16 or later Network of nodes (local or remote) to participate in the decentralized system Basic understanding of Go, P2P, and cryptography
git clone https://github.com/yourusername/decentralized-storage-system.git cd decentralized-storage-system
go mod tidy
go build -o decentralized-storage
./decentralized-storage Usage File Upload
./decentralized-storage node --start
./decentralized-storage upload --file The system will encrypt the file, divide it into chunks, and distribute it across the connected nodes.
./decentralized-storage download --file The system will fetch the distributed chunks from the network, verify their integrity using cryptographic hashes, decrypt the data, and reassemble the file.
./decentralized-storage node --join
./decentralized-storage node --list
./decentralized-storage node --status
Node address File chunk size Encryption algorithm Maximum replication factor These settings can be adjusted in the config.yaml file.
All files are encrypted using AES-256 before being distributed.
Files and chunks are hashed using SHA-256 to verify integrity and prevent tampering.
Nodes in the P2P network are authenticated using public-private key pairs.
Fork the repository. Create a new branch for your feature or bug fix. Commit your changes and create a pull request.
This project is licensed under the MIT License.