Rust中的区块链CLI
这个仓库包含一个用Rust实现的简单区块链演示。该项目通过一个最小的命令行应用程序说明了Rust的核心原则,并集成了一个MCP服务器,通过网络公开区块链功能。
概述
该应用程序实现了一个基本的区块链,其中每个区块包括:
- 索引:区块在链中的位置。
- 时间戳:ISO 8601格式的创建时间。
- 数据:用户提供的内容。
- 上一个哈希:前一个块的SHA-256哈希值。
- 当前哈希:根据块的内容计算的SHA-256哈希。
菜单驱动的CLI允许您:
- 添加新块。
- 打印当前区块链。
- 验证区块链的完整性。
技术
- 锈:一种专注于安全和性能的系统编程语言。
- sha2:用于计算SHA-256哈希值。
- 计时:使用UTC时间进行精确的时间戳。
- 塞尔德 & 瑟德约森:用于JSON序列化(用于MCP通信)。
入门指南
先决条件
构建并运行
要使用Cargo创建和运行项目,请在终端中执行:
cargo new blockchain_app
cd blockchain_app && cargo run_注意:如果您克隆了此存储库,只需导航到项目文件夹并运行 cargo run._
用法
运行应用程序时,CLI显示以下选项:
- 添加块:输入数据以创建新块。
- 打印区块链:显示区块链中的所有区块。
- 验证区块链:验证每个块是否正确链接。
- 退出:关闭应用程序。
MCP服务器集成
该项目包括一个与CLI同时运行的MCP服务器。它在听 127.0.0.1:7878 并允许外部客户端使用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","block":null}测试MCP服务器
- 运行应用程序:\
打开终端,导航到项目目录(blockchain_app),然后运行:
cargo run您将看到CLI菜单和一条消息,指示MCP服务器正在侦听 127.0.0.1:7878.
- 从单独的终端查询:\
打开一个新的终端窗口,使用netcat测试MCP命令(nc).例如:
- 要检索最新块,请执行以下操作:
echo '{"command": "latest_block"}' | nc 127.0.0.1 7878- 要添加新块,请执行以下操作:
echo '{"command": "add_block", "data": "sample transaction"}' | nc 127.0.0.1 7878_注意:MCP服务器与CLI一起在单独的线程中运行,因此请确保为这些测试使用不同的终端窗口。_
总结
该项目演示了如何在Rust中将区块链逻辑与外部可访问的MCP服务器相结合。它为网络化工具集成提供了一个实例。
