基于区块链的防护物资捐赠监管系统(一):项目简介
第1章 对研究背景及内容进行介绍
第2章 智能合约、密码学知识、共识机制等相关技术
第3章 系统的整体设计
第4章 系统功能的具体实现
第5章 系统的实验测试
目录
前言
着互联网的发展,慈善与网络的结合为慈善事业的发展提供了一条崭新的道路,伴随着参与慈善方式更加便利发生的,是网络募捐监管的滞后,本项目基于区块链技术设计实现了一种去中心化的防护物资流通监管平台,还望各位大佬指正
一、项目环境
使用工具:IDEA2019.3.3 ,Android Studio
推荐工具:Notepad++,Sublime 轻量级编辑器阅读代码很方便
语言:Java
二、相关知识
1.区块链架构
2.智能合约模型
3.相关密码学知识
3.1 哈希函数
密码学的基本工具,Hash函数,它通过散列算法能够将任意长的一段数据通过映射,调整为固定长度的数据摘要并输出。通过压缩的形式,更高效利用存储空间。并且Hash函数还具有单向算法的特性,1bit的数据不同都会影响最终的Hash值,因此常用作完整性校验。目前常用的Hash函数主要有6种,MD5、SHA-A、SHA-2、SHA-3、Whirlpool、SHA-3、SM3。
3.2 Merkle Tree
梅克尔树又称哈希树,Merkle Tree包含在区块链的每一个区块。树的每一个叶子节点如图2.3所示,均为对应数据块计算所得的哈希值,相邻的两片叶子节点将其中包含的字符串进行串联,并参与一次哈希计算,从而成为上层节点的内容,以此类推并最终得到顶层哈希值。这为区块链技术中区块数据存储校验提供了一种简单可靠的高效途径。
3.3 DH密钥交换算法
Diffie-Hellman算法,于1976年由Diffie和Hellman共同发明,算法目的在于消息通信的收发双方通过可公开信息的交换,在保证安全传输的前提下,交换对称密钥生成可共享的加密数据。算法的核心在于避免双方私钥进入网络传输流程,以消息传递模型为例,密钥交换算法模型如图所示,本文利用AES+RSA实现DH密钥交互算法,Alice作为信息发送者,Bob作为信息接受者。
首先,Alice构建密钥对,保留私钥并将公钥信息公布给Bob,将私钥信息保留;双方约定数据加密算法,Bob通过Alice公钥构建密钥对,将公钥信息公布给Alice,将私钥信息保留。
Alice使用自己保留的私钥以及Bob公钥,双方约定数据加密算法并构建本地密钥,然后通过本地密钥加密数据,Alice发送给Bob加密后的数据;Bob使用私钥及Alice公开的公钥、双方约定的数据加密算法构建本地密钥,并最后通过本地密钥对数据解密。
Bob使用自己保留的私钥及Alice公钥、双方约定的数据加密算法构建本地密钥,然后通过本地密钥加密数据,将加密后的数据发送给Alice ;Alice使用其保留的私钥、Bob的公钥、以及双方约定的数据加密算法构建本地密钥,然后通过本地密钥对数据解密。
3.4 椭圆曲线数字签名
数字签名基于非对称加密,主要用于证实数字内容具有完整性,同时可以保证确认来源,本文使用了椭圆曲线数字签名算法用于认证区块信息所有权。
用户的密钥对:(d,Q); (d 为私钥,Q 为公钥)
待签名的信息:M
签名:Signature(M) = ( r,s)
签名过程:
(1)根据 ECC 算法随机生成一个密钥对(k,R),R=(xR,yR)
(2)令 r= xR mod n,如果r = 0,则返回步骤 1;
(3)计算 H = Hash(M);
(4)按照数据类型转换规则,将H转化为一个 big endian 的整数 e;
(5)s =k^(-1) (e + rd) mod n,若 s = 0,则返回步骤 1;
(6)输出的 S =(r,s)即为签名。
验证过程:
(1)计算 H = Hash(M);
(2)按照数据类型转换规则,将H转化为一个big endian的整数 e;
(3)计算u_1 = es^(-1) mod n,u_2= rs^(-1) mod n;
(4)计算 R = (x_R,y_R) = u_1 G + u_2 Q, 如果 R为零点,则验证该签名无效;
(5)令v = x_R mod n;
(6)若v = r,则签名有效,若v ≠ r, 则签名无效。
4. P2P网络
P2P(Peer-to-Peer)又称点对点技术,网络中的每个节点既是服务和内容等共享资源的提供者,又是服务和内容等共享资源的获取者。这些共享资源能被其他对等节点直接访问,而无须经过中间的服务器,是一个无中心服务器、依靠用户群交换信息的互联网体系。
在P2P网络环境中,彼此连接的计算机处于一个互相对等的地位,无关性能地理位置,各台计算机均有相同的功能,地位平等。每一个节点既可作为服务器,通过将其拥有的资源共享给网络中任意一台其他计算机;同时又可以作为工作站服务端,享受其他节点共享的资源。整个P2P网络呈现分布式结构,不依赖专用中心服务器,如图2.5所示,也没有专用的工作站。网络中各个节点互相连接,共同维护网络,每一台计算机在发出网络服务请求的同时,也可以进行对其它节点请求的响应。P2P网络节点通常需要提供资源、服务和内容,包括:数据的共享和交换、CPU计算能力等计算资源的共享、缓存和磁盘空间存储的共享,以及网络资源共享、硬件设备共享等。
5. 共识机制
在联盟链中,联盟各个节点往往来自同一行业,有着共同的行业困扰和痛点,因此联盟链往往注重对实际问题的高效解决。在公链中很小适用的PBFT算法很适合联盟链。PBFT(Practical Byzantine Fault Tolerance),实用拜占庭容错算法,由卡斯特罗和利斯科夫在1999年提出。PBFT实现流程总分为五个阶段,如图所示,执行前在全网选举出一个主节点,新区块的生成主要由主节点完成,五个阶段分别是:Request阶段、Preprepare阶段、Prepare阶段、Commit阶段、Reply阶段。每个阶段的具体过程如下:
Request阶段:
客户端发起请求,向网络中发送数据包。
Pre-prepare阶段:
主节点收到数据包请求后确认请求编号,并向其他节点发送pre-pre消息。
Prepare阶段:
节点收到包含pre-pre数据头的消息,验证通过后广播prepare类型消息。
Commit阶段 :
节点如果收到大于2f+1(f为可以容忍的恶意节点数)条验证通过prepare类型消息,则发送commit类型消息给其他节点。
Reply阶段:
节点如果收到大于2f+1条验证通过的commit类型消息,则执行区块生成并reply生成结果。
总结
以上就是系统所涉及的相关基础知识,有很多不充分的地方,仅作参考使用。
第1章 对研究背景及内容进行介绍
第2章 智能合约、密码学知识、共识机制等相关技术
第3章 系统的整体设计
第4章 系统功能的具体实现
第5章 系统的实验测试