article
README
🚀 基于Rust的区块链命令行工具
本项目是一个基于Rust语言实现的简单区块链演示。通过一个轻量级的命令行应用程序,展示了Rust的核心原理,并集成了MCP服务器,以便在网络中开放区块链功能。
🚀 快速开始
前置条件
构建和运行
要使用Cargo创建并运行项目,请在终端中执行:
cargo new blockchain_app
cd blockchain_app && cargo run
⚠️ 重要提示
如果您克隆了此仓库,只需进入项目文件夹并运行
cargo run即可。
✨ 主要特性
- 基本区块链实现:应用实现了一个基本的区块链,每个区块包含索引、时间戳、数据、前一哈希和当前哈希。
- 菜单驱动的CLI:允许用户添加新块、打印当前区块链、验证区块链的完整性。
- MCP服务器集成:与CLI同时运行,侦听
127.0.0.1:7878,允许外部客户端通过JSON命令与区块链交互。
📦 安装指南
环境准备
项目构建与运行
在终端执行以下命令:
cargo new blockchain_app
cd blockchain_app && cargo run
若克隆了此仓库,直接进入项目文件夹运行 cargo run。
💻 使用示例
基础用法
当运行应用程序时,CLI会显示以下选项:
- 添加块:输入数据以创建新块。
- 打印区块链:显示区块链中的所有块。
- 验证区块链:确认每个块正确链接。
- 退出:关闭应用程序。
高级用法
MCP服务器交互
该项目集成了MCP服务器,可通过JSON命令与区块链交互。
可用的MCP命令
- latest_block:检索区块链中的最新块。
- 示例:
echo '{"command": "latest_block"}' | nc 127.0.0.1 7878 - 样本输出:
{"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:添加具有提供的数据的新块。
- 示例:
echo '{"command": "add_block", "data": "sample transaction"}' | nc 127.0.0.1 7878 - 样本输出:
{"status":"ok","message":"Block added successfully"}
- 示例:
交互步骤
- 启动区块链应用程序。
- 打开另一个终端,连接到MCP服务器:
nc 127.0.0.1 7878 - 输入上述命令之一并按回车。
示例代码
# 添加新块
echo '{"command": "add_block", "data": "test data"}' | nc 127.0.0.1 7878
# 检索最新块
echo '{"command": "latest_block"}' | nc 127.0.0.1 7878
🔧 技术细节
技术选型
- Rust:一种专注于安全性和性能的系统编程语言。
- sha2:用于计算SHA-256哈希。
- chrono:用于精确的时间戳,使用UTC时间。
- serde 和 serde_json:用于JSON序列化(在MCP通信中使用)。
区块链结构
每个区块包含以下信息:
- 索引:块在链中的位置。
- 时间戳:使用ISO 8601格式记录的创建时间。
- 数据:用户提供的内容。
- 前一哈希:前一块的SHA-256哈希。
- 当前哈希:从块内容计算得出的SHA-256哈希。
📄 许可证
文档未提及相关许可证信息。
⚠️ 重要提示
- 确保区块链应用程序和MCP服务器都在运行。
- 网络客户端(
nc)必须安装在系统上才能连接到MCP服务器。
Scan to contact