A secure and decentralized peer-to-peer messaging system built on blockchain technology. Send encrypted messages across a distributed network while maintaining transparency and integrity through blockchain verification.
This project demonstrates a blockchain-based messaging system with the following features:
- 📦 Distributed blockchain for message storage
- 🔐 Encrypted messaging using AES-256
- 🌐 Peer-to-peer network with gossip-based peer discovery
- 🔍 Automatic node discovery using mDNS (Multicast DNS)
- ⛏️ Proof-of-work consensus mechanism
- 📊 Performance profiling tools
- 📱 Mobile SDK for integration with mobile applications
- 🖥️ Web interface for easy interaction
The system is split into several main components:
blockchain: Core blockchain implementation with cachingcrypto: Encryption/decryption utilitiesnetwork: P2P networking and peer discoverysdk: Software Development Kit for easy integrationmobile: Mobile application integration examplesweb: Web interface for interacting with the networkcmd/aetherwave: Application entry point and CLI
- Go 1.21 or higher
- Basic understanding of blockchain concepts
- Basic knowledge of Go programming
Clone the repository:
git clone https://github.com/freeeakn/AetherWave.git
cd AetherWaveInstall dependencies:
make install-depsBuild the project:
make buildmake runTo enable automatic node discovery using mDNS:
make run ARGS="-discovery"make start-networkThis will start a network of nodes with automatic discovery enabled. The nodes will find each other automatically on the local network.
To stop the network:
make stop-networkBuild and run with Docker:
make docker-build
make docker-runClean up Docker resources:
make docker-cleanAetherWave includes an extensive test suite, including unit and integration tests.
make testmake test-unitmake test-integrationmake test-coverageA code coverage report will be generated in the coverage/ directory in HTML format.
make test-with-scriptThis option runs tests using a special script that:
- Generates detailed logs for each test
- Creates code coverage reports
- Records error information in a separate file
- Outputs code coverage statistics
All logs and reports are saved in the test-logs/ and coverage/ directories.
AetherWave includes tools for performance profiling:
make profileThis will run profiling for CPU usage, memory usage, and block creation, saving the results in the profiles/ directory.
Run the linter to check code quality:
make lintSet up the development environment with necessary tools:
make dev-envAetherWave provides an SDK for mobile application integration. Example code is available in the mobile/ directory.
Access the web interface:
make webThis will open the web interface in your default browser.
cmd/- Executable filesaetherwave/- Main application entry point
pkg/- Core packagesblockchain/- Blockchain implementationcrypto/- Cryptographic functionsnetwork/- Network interactionnode.go: Node implementation for P2P communicationdiscovery.go: Automatic node discovery using mDNS
sdk/- Software Development Kit (internal)
sdk/- External SDK for third-party integrationmobile/- Mobile integration examplesweb/- Web interfacetests/- Integration testsscripts/- Helper scriptsDockerfile- Main application Docker imageweb/Dockerfile- Web UI Docker imagedocker-compose.yml- Multi-node orchestration
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For questions and support, please open an issue on GitHub.
| Component | Status |
|---|---|
| Core Blockchain | ✅ Stable |
| P2P Network | ✅ Stable |
| mDNS Discovery | ✅ Stable |
| Encryption | ✅ Stable |
| Mobile SDK | ✅ Stable |
| Web Interface | 🟡 Beta |
| Documentation | 🟡 In Progress |