Blockchain CLI in Rust
About
A simple blockchain implementation in Rust featuring SHA-256 hashing, CLI interface, and MCP server integration. Demonstrates core blockchain concepts through block creation and chain validation while exposing blockchain functionalities over a network.
Details
- Author
- FaustoS88
- Downloads
- 276
- Categories
- Developer Tools
Jump to
- Implements a basic blockchain with SHA-256 hashing.
- Provides a CLI menu for adding, printing, and validating blocks.
- Integrates an MCP server on port 7878 for external access.
- Supports JSON commands: latest_block and add_block.
- Built with Rust, sha2, chrono, serde, and serde_json.
Run cargo run in the project directory to start the application. The CLI presents a menu with options to add a block, print the blockchain, validate integrity, or exit. The MCP server starts automatically on 127.0.0.1:7878 and can be queried from a separate terminal using netcat (e.g., echo '{"command": "latest_block"}' | nc 127.0.0.1 7878).
Blockchain CLI in Rust
This repository contains a simple blockchain demonstration implemented in Rust. The project illustrates core Rust principles through a minimal command-line application and integrates an MCP server to expose blockchain functionalities over a network.
Overview
The application implements a basic blockchain where each block includes:
- Index: The block's position in the chain.
- Timestamp: The creation time in ISO 8601 format.
- Data: User-supplied content.
- Previous Hash: The SHA-256 hash of the previous block.
- Current Hash: The SHA-256 hash computed from the block's contents.
A menu-driven CLI lets you:
- Add a new block.
- Print the current blockchain.
- Validate the blockchain's integrity.
Technologies
- Rust: A systems programming language focused on safety and performance.
- sha2: For computing SHA-256 hashes.
- chrono: For accurate timestamping using UTC time.
- serde & serde_json: For JSON serialization (used in MCP communication).
Getting Started
Prerequisites
- Rust (latest stable version)
- Cargo
Build and Run
To create and run the project using Cargo, execute in your terminal:
cargo new blockchain_app
cd blockchain_app && cargo run
_Note: If you cloned this repository, simply navigate into the project folder and run cargo run._
Usage
When you run the application, the CLI displays the following options:
1. Add Block: Input data to create a new block.
2. Print Blockchain: Display all blocks in the blockchain.
3. Validate Blockchain: Verify that each block is properly linked.
4. Exit: Close the application.
MCP Server Integration
The project includes an MCP server that runs concurrently with the CLI. It listens on 127.0.0.1:7878 and allows external clients to interact with the blockchain using JSON commands.
Available MCP Commands
- latest_block: Retrieves the latest block in the blockchain.
- Example:
echo '{"command": "latest_block"}' | nc 127.0.0.1 7878
- Sample Output:
{"status":"ok","message":"Latest block retrieved","block":{"index":0,"timestamp":"2025-02-26T10:06:59.931506+00:00","data":"Genesis Block","previous_hash":"0","hash":"f465878acf7be88a124fd7ebc9a3640793612023828d9af8ad237eefd4a1a22e"}}
- add_block: Adds a new block with the provided data.
- Example:
echo '{"command": "add_block", "data": "sample transaction"}' | nc 127.0.0.1 7878
- Sample Output:
{"status":"ok","message":"Block added","block":null}
Testing the MCP Server
1. Run the Application:
Open a terminal, navigate to the project directory (blockchain_app), and run:
cargo run
You will see the CLI menu and a message indicating that the MCP server is listening on
127.0.0.1:7878.
2. Query from a Separate Terminal:
Open a new terminal window and test the MCP commands using netcat (nc). For example:
- To retrieve the latest block:
echo '{"command": "latest_block"}' | nc 127.0.0.1 7878
- To add a new block:
echo '{"command": "add_block", "data": "sample transaction"}' | nc 127.0.0.1 7878
_Note: The MCP server runs in a separate thread alongside the CLI, so ensure you use a different terminal window for these tests._
Summary
This project demonstrates how to combine blockchain logic with an externally accessible MCP server in Rust. It serves as a practical example for networked tool integration.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





