# text_chain **Repository Path**: x55/text_chain ## Basic Information - **Project Name**: text_chain - **Description**: 极简局域网区块链聊天工具 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-28 - **Last Updated**: 2026-02-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🔗 TextChain > **极简局域网区块链聊天工具** - 去中心化的文本聊天系统 每条消息都是一个区块,聊天即挖矿,对话即记账。无需服务器,节点自动发现,消息永久记录在链上。 ![Python](https://img.shields.io/badge/Python-3.8+-blue.svg) ![License](https://img.shields.io/badge/License-MIT-green.svg) ![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey.svg) ## ✨ 特性 - 🚀 **零配置** - 无需服务器,启动即可使用 - 🔗 **区块链存储** - 每条消息都是区块,不可篡改 - 🌐 **自动发现** - 局域网内节点自动发现与连接 - 🎨 **精美界面** - 深色主题 GUI,视觉舒适 - 💻 **双模式** - 支持 GUI 和命令行两种模式 - ⛏️ **工作量证明** - 简单的 PoW 机制,防止 spam - 🔄 **链同步** - 节点间自动同步最长链 ## 📦 安装 ### 环境要求 - Python 3.8+ - tkinter (GUI 模式需要,通常预装) ### 快速开始 ```bash # 克隆项目 git clone https://gitee.com/your-username/text_chain.git cd text_chain # 直接运行 (GUI 模式) python main.py # 或指定节点名称 python main.py Alice # 命令行模式 python main.py --cli # 命令行模式 + 指定名称 python main.py Bob --cli ``` ## 🎯 使用指南 ### GUI 模式 1. 运行 `python main.py` 2. 输入你的节点名称(或使用默认值) 3. 等待自动发现局域网内的其他节点 4. 在输入框输入消息,按回车或点击发送 ![GUI 界面预览](docs/screenshot.png) ### 命令行模式 ```bash # 启动 python main.py MyNode --cli # 可用命令 /help # 显示帮助 /peers # 显示在线节点 /chain # 显示区块链状态 /sync # 同步区块链 /verify # 验证链有效性 /clear # 清屏 /quit # 退出 ``` ### 高级选项 ```bash # 自定义端口 python main.py --port 60001 # 调整工作量证明难度 (前导零数量) python main.py --difficulty 3 # 组合使用 python main.py Alice --cli --port 60001 --difficulty 3 ``` ## 🏗️ 架构设计 ``` text_chain/ ├── main.py # 程序入口 ├── blockchain.py # 区块链核心 (区块、链、验证) ├── network.py # P2P 网络 (发现、广播、同步) ├── gui.py # 图形界面 (tkinter) ├── cli.py # 命令行界面 └── README.md # 项目文档 ``` ### 核心模块 #### 1. 区块链 (`blockchain.py`) ```python # 区块结构 Block { index: int # 区块索引 timestamp: float # 时间戳 sender: str # 发送者 message: str # 消息内容 previous_hash: str # 前一区块哈希 hash: str # 当前区块哈希 nonce: int # 工作量证明随机数 } ``` #### 2. 网络 (`network.py`) - **UDP 广播** - 节点发现 (端口 50000) - **TCP 通信** - 消息传输与链同步 (端口 50001) - **自动重连** - 节点离线自动剔除 #### 3. 工作量证明 ```python # 默认难度:2 个前导零 difficulty = 2 # 区块哈希必须以 "00" 开头 hash.startswith("00") ``` ## 🌐 网络拓扑 ``` ┌──────────┐ │ Alice │ │ 192.168.1.100:50001 │ └────┬─────┘ │ ┌────┴─────┐ ┌──────────┐ │ 局域网 │──────│ Bob │ │ 广播域 │ │ 192.168.1.101:50001 │ └────┬─────┘ └──────────┘ │ ┌────┴─────┐ │ Charlie │ │ 192.168.1.102:50001 │ └──────────┘ ``` ## 📊 技术细节 ### 消息流程 1. 用户输入消息 2. 创建新区块 (包含 PoW 计算) 3. 添加到本地链 4. 广播到所有已知节点 5. 其他节点验证并添加 ### 链同步机制 - 新节点加入时自动请求现有节点的链 - 始终采用**最长有效链**原则 - 定期同步确保数据一致性 ### 安全性 - SHA-256 哈希保证数据完整性 - 工作量证明防止消息洪水攻击 - 链验证确保数据未被篡改 ## 🛠️ 开发 ### 运行测试 ```bash # 启动多个节点测试 # 终端 1 python main.py Alice # 终端 2 python main.py Bob # 终端 3 python main.py Charlie --cli ``` ### 代码结构 ```python # 创建区块链 chain = Blockchain(difficulty=2) # 添加消息 block = chain.add_message("Alice", "Hello, World!") # 验证链 is_valid = chain.is_valid() # 序列化 data = chain.to_dict() ``` ## 📝 示例输出 ``` ============================================================ 🔗 区块链聊天网络已启动 ============================================================ ➤ [Alice] 大家好! 16:30:45 | #1 | a3f5c8d9e2b1... ◁ [Bob] 欢迎加入! 16:31:02 | #2 | b7e4f1a8c3d6... ➤ [Alice] 这条消息会被永久记录 16:31:15 | #3 | c9d2e5f8a1b4... ``` ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件 ## 🙏 致谢 - 灵感来源于比特币的区块链技术 - 感谢所有贡献者 --- **Made with ❤️ by TextChain Team** *去中心化,从聊天开始*