暑期实习项目-区块链设计与实现
一、设计目标
区块链(BlockChain)是当前研究的热点,它是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,用以构建一个去中心化的信用价值体系。区块链利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式来保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。
本项目利用所学的JavaWeb技术去建立一个简单的区块链数据库,并能通过共识机制来进行节点的插入与验证。在实施本项目之前,需要大家先了解区块链的基本原理,包括共识机制以及HASH运算、公钥私钥等密码学知识。
二、基础知识
1.JavaWeb开发技术;
2.区块链基本原理;
3.HASH算法;
4.共识机制、拜占庭将军问题;
5.SQL数据库操作语言。
三、开发工具:
1.开发语言:Java/JSP/HTML
2.开发工具:Eclipse;
3.Web系统:Tomcat;
4.数据库:MySQL;
四、区块链结构
五、设计内容
本项目只要求设计一个简单的区块链数据库,要求能完成:,区块链节点设计与添加,包括创世区块的创建、取得共识后的节点插入、数据真实性认证等。
1.系统建立超级用户,普通用户通过网页进行通过网页的方式用户进行注册,由系统管理员审核通过后,普通用户即可由注册时的用户名和密码登录系统;或者采用邮箱验证的方式,邮箱验证后视为审核通过,即可使用注册时的用户名和密码登录。
2.用户登录系统后即可享有操作区块链的权利。用户要想向区块链中插入一个节点,首先向系统发出节点插入申请,只有得到4人以上的同意才能将节点插入数据库中。节点一旦出入数据库后就不能删除。
3.节系统需要提供每个节点真实性的验证操作。
六、数据库设计
数据库一共含三张表,分布是用户表(usertable)、共识记录表(consensustable)和区块链表(blockchaintable)
1.用户表-usertable
字段 | 类型 | 备注 |
用户名 (usrno) | 文本 | 主键 |
姓名(username) | 文本 | |
密码(password) | 文本 | |
邮箱(useremail) | 文本 | |
2.共识记录表-consensustable
字段 | 类型 | 备注 |
用户名 (usrno) | 文本 | |
发起事件(event) | 文本 | 主键 |
时间戳(datetime) | 文本 | |
同意人数(agreenum) | 数字 | |
3.区块链表-blockchaintable
字段 | 类型 | 备注 |
前一个节点的hash (prehash) | 数字 | |
用户名 (usrno) | 文本 | |
节点内容(event) | 数字 | |
时间戳(datetime) | 日期时间型/文本型 | |
本节点hash (currentdate) | 数字 | |
七、设计要求
1.要求以7人为一组,选择一名小组长,由小组长当然项目经理的角,完成任务化解、任务分配、任务测试与联调等工作。小组长要明确每个组员所负责的任务,并检查每个组员的研发进度,同时负责每个阶段文档整理,包括需求分析表、数据库设计表、模块划分与任务分配、系统使用说明书等。
2.每个组员自己建立开发环境和运行环境。组员根据小组长分配的任务,自行查阅资料完成,独立完成任务。确实有问题的地方可以提出来,组员可以相互讨论,互相帮助来解答,但是切不能由其他组员越俎代庖。
3.在本项目规定的基本任务之上,每个小组可以查阅资料,了解区块链的最新发展技术,可以拓展本项目功能。
八、考核要求
本项目在5天期间完成,根据每个组的完成速度、完成质量等进行综合评分,包括:1.是否在规定时间提前完成;2.系统是否达到所设定的每个功能;3.系统在本项目基本任务之外有没
有进一步的拓展和创新;4.本项目开发的每个阶段文档是否齐全等。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论