This project is currently under development. It is not ready for production or even testing, so keep your expectations low. Please check back later for updates.
MicroBlockNet is a distributed blockchain application consisting of multiple nodes that interconnect in real-time. It is built to ensure redundancy, as nodes periodically attempt to reconnect to unresponsive nodes. If unsuccessful after several attempts, the unresponsive node will be removed from memory.
- Distributed Nodes: Allows for a highly available network of blockchain nodes.
- Self-Healing: Nodes constantly monitor the network, attempting to reconnect with any unresponsive peers. If a node remains unresponsive, it will be removed from the active network.
- Docker Integration: Easily set up your blockchain nodes with Docker.
- Makefile: A Makefile is provided to simplify the process of building and running the application.
- Monitoring: A monitoring created based on Prometheus and Grafana is provided to monitor the health of the network.
- Consul: Consul is used to provide service discovery and health checks for the nodes.
- Kafka: Kafka is used to provide a distributed message queue for communication between nodes and the gateway. The nodes register themselves in gateway and send messages to Kafka.
Before you begin, ensure you have the following installed:
- Docker
- Docker Compose
- Clone the repo
git clone https://github.com/yuriykis/microblocknet.git cd microblocknet
- Run the Application
If you simply want to run the application:
make gate make kafka make node
You can also test the application client by running the following command:
make client
The client will return the new transaction.
- You can use Docker Compose to run the application in the background:
make up
To run in detached mode:
make up-d
This will build the necessary Docker images and start the Docker Compose setup. Once started, your blockchain nodes will be running in Docker containers.
MicroBlockNet is designed to be robust and fault-tolerant. The nodes in the system are constantly monitoring the network, ensuring that information is consistent across all active participants. Any node that becomes unresponsive is temporarily quarantined and attempts are made to reconnect. If these attempts fail over a predetermined period, the node is removed from the active roster, ensuring that the network remains healthy.
If you would like to contribute to MicroBlockNet, please fork the repository and create a pull request. You can also create an issue if you have any questions or suggestions.
Distributed under the MIT License. See LICENSE
for more information.