Blockchain CLI in Rust

by FaustoS88

276 downloads
Not rated
GitHub

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

- 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.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.