# 区块链技术研究与开发的开源项目 **Repository Path**: yanhepu/Blockchain ## Basic Information - **Project Name**: 区块链技术研究与开发的开源项目 - **Description**: 代码是用c语言写了sha256加密,然后将c的代码转换成ddl以后用Python调用,区块链的块结构和链结构,默克尔树认证,共识机制都是在Python中实现的,web展示也使用的flask+html的方式展示后续这里想改成JAVA+HTML,用JAVA调用块链和共识机制的接口。 目前共识机制只写了POW和POS,后续要加上拜占庭机制 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-04-28 - **Last Updated**: 2026-06-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 区块链原型系统 本项目是一个从零开始构建的简化版区块链原型系统,旨在深入探究区块链技术的底层原理。项目核心特色在于采用C语言与Python混合编程的方式,实现了从密码学基础到共识机制、再到Web可视化的完整流程,是一个兼具理论深度与工程实践的教学级项目。 项目概述 区块链作为一种去中心化、不可篡改的分布式账本技术,其核心思想是通过密码学保障数据完整性、利用共识机制确保多方协同一致。本项目摒弃了复杂的经济模型,聚焦于技术内核,通过模块化设计清晰地展示了以下几个关键部分: 1. 密码学基础:使用C语言原生实现SHA-256哈希算法,并将其编译为动态链接库供上层调用,确保了核心加密运算的性能与纯粹性。 2. 数据结构:在Python中定义了区块与区块链的类结构,并实现了用于高效验证交易完整性的默克尔树。 3. 共识机制:模拟了工作量证明和权益证明两种主流共识算法,展示了节点如何在去中心化网络中达成一致。 4. 交互展示:提供基于Web的可视化界面,允许用户直观地查看链上数据、执行挖矿操作和发送交易。 技术架构 项目采用分层架构设计,自下而上分为密码学层、核心逻辑层和展示层。 1. 密码学层 该层是整个系统的信任基石。为了深入理解哈希函数的运作机理,项目并未直接调用现成的Python加密库,而是使用C语言从头编写了SHA-256算法。代码实现了消息填充、哈希计算等核心步骤。编译后生成动态链接库,通过Python的ctypes模块进行调用。这种方式不仅提升了哈希计算的效率,也体现了混合编程在性能敏感场景下的应用。 2. 核心逻辑层 这是区块链的大脑,完全由Python实现,负责维护链的状态和业务逻辑。 ○ 区块与链:每个区块包含索引、时间戳、数据、前一区块哈希、默克尔根和随机数。区块链类负责管理区块的添加、验证以及处理分叉。 ○ 默克尔树:为了验证交易的完整性,每个区块内的交易数据会被构建成一棵默克尔树。树的根哈希被记录在区块头中,任何一笔交易的篡改都会导致根哈希变化,从而使区块失效。 ○ 共识机制: ■ 工作量证明:节点通过不断变更随机数,寻找一个满足特定难度条件(如哈希值前N位为0)的区块哈希。这个过程模拟了真实的“挖矿”行为,消耗计算资源以保障网络安全。 ■ 权益证明:作为一种更节能的替代方案,项目也实现了简化的权益证明逻辑,根据节点持有的“权益”来决定其生成下一个区块的概率。 3. 展示层 当前版本使用Python的Flask框架提供Web服务,并结合HTML/CSS/JavaScript构建了简洁的前端界面。用户可以通过浏览器: ○ 查看当前最长的有效区块链。 ○ 点击按钮触发挖矿,创建新区块。 ○ 提交新的交易数据。 项目结构 代码 . ├── .idea/ # IDE 配置文件 (IntelliJ/PyCharm) ├── C/ # C 语言源码目录 │ ├── py_interface.c # Python 与 C 的接口实现 │ ├── sha256.c # SHA256 算法实现 │ └── sha256.h # SHA256 头文件 ├── Core/ # 核心逻辑目录 │ ├── Driver.py # 驱动或主执行逻辑 │ ├── __init__.py # 包初始化文件 │ ├── chain.py # 区块链结构定义 │ ├── consensus.py # 共识算法实现 │ ├── merkle.py # 默克尔树实现 │ └── sha256.dll # 编译好的 SHA256 动态链接库 ├── templates/ # 网页模板目录 │ └── index.html # 主页模板 ├── test/ # 测试文件目录 ├── README.md # 项目说明文件 └── main.py # 项目入口文件 快速开始 1. 环境准备 确保你的系统已安装Python 3.x和GCC编译器。 2. 编译密码学库 在项目根目录下,执行以下命令编译C代码: make 该命令会生成一个名为libsha256.so(Linux)或sha256.dll(Windows)的动态链接库文件。(提交的代码中已生成dll,放到了core目录下) 3. 安装依赖 pip install flask 4. 运行项目 python app.py 启动成功后,在浏览器中访问http://127.0.0.1:5000即可查看区块链的可视化界面。 未来规划 ● 架构升级:计划将后端核心逻辑迁移至Java平台。利用Java的强类型系统和成熟的Web生态(如Spring Boot),将区块链和共识机制封装为标准的RESTful API。前端将通过HTTP请求与后端交互,实现前后端彻底分离,使系统架构更符合企业级应用标准。 ● 网络层实现:当前为单机模拟,未来将引入P2P网络模块,实现多节点间的通信、交易广播和区块同步,真实模拟分布式网络环境。 ● 共识算法增强:在现有PoW和PoS的基础上,探索并实现拜占庭容错等更复杂的共识算法,以研究联盟链场景下的状态一致性问题。 ● 安全机制完善:引入非对称加密技术,为交易添加数字签名,实现账户体系和交易的不可抵赖性。 关于作者 本项目由一名网络安全方向的在职硕士研究生独立开发,旨在结合工程实践与理论学习,探索区块链技术的核心奥秘。目前正在进行渗透测试相关工作,并备考CISP-PTE认证。