区块链技术模型区块链技术模型区块链系统主要分六层,分别是数据层、网络层、共识层、激励层、合约层以及应用层。其中数据层是区块链的核心部分,主要封装了底层数据区块结构、加密算法以及时间戳等技术;网络层则是区块链平台信息传输的基础,包括了P2P网络的组网机制、数据传输机制以及数据验证机制等;共识层则封装了区块链网络节点使用的共识算法;激励层则是将经济因素引入区块链系统中,用于维持区块链系统的运行;合约层对各类算法、脚本、智能合约进行了封装,是区块链系统可编程的基础。应用层则是区块链技术针对具体应用场景的应用实现,如web网页、去中心化APP(DApp)等。数据层--区块结构每一个区块一般由区块头和区块体两部分组成。其中其块头部分如图2-2所示,该部分包含了父区块哈希值、时间戳、随机数、版本信息Merkle根等信息。而区块体部分则包含者本区块中所有的交易信息。区块头哈希值是一个区块链上区块的唯一标识,任何节点都可以通过对区块头通过哈希函数进行计算得到该区块头的哈希值。版本信息前一区块哈希值时间戳随机数Merkle根区块头区块体交易数据交易数据前一区块后一区块数据层—Merkle树交易信息主要存在于区块体中,它们是以一棵Merkle树形式的数据结构进行存储的。Merkle树是一棵哈希二叉树,树的每一个叶子节点都是一笔交易内容数据的哈希值。Merkle树被用来归纳一个区块中包含的所有交易,同时生成包含整个交易集合的Merkle树根。Merkle树的生成需要递归地对每两个哈希节点进行哈希计算,得到一个新的哈希值,并且将新的哈希值存入Merkle树中,直到两两结合最终只有一个哈希值,这个哈希值就是这一区块所有交易的Merkle根,存储到上面提到的区块头中。当需要证明某笔交易存在于交易列表中时,一个节点只需要计算log2N个32字节的哈希值,就可以形成一条从Merkle根到此交易的路径。例如,为验证图中的交易C,可以通过获取交易D的哈希值,然后对交易C和交易D进行二次哈希,获取交易C和交易D的哈希值Hcd,然后再获取交易A和B的哈希值Hab,再通过Hab/Hcd计算出Habcd与Merkle根的哈希值进行比较,即可验证交易C。Merkle根Hash(Hab+Hcd)HabHash(Ha+Hb)HcdHash(Hc+Hd)HaHash(TxA)HbHash(Txb)HcHash(Txc)HdHash(Txd)数据层—非对称加密非对称加密是区块链技术中因为安全需求以及鉴权需求时采用的加密技术。常用的非对称加密算法有RSA、D-H(D-H密钥协商算法)、ECDH(基于椭圆曲线的D-H密钥协商算法)、ECC(椭圆曲线加密算法)和ECDSA(椭圆曲线数字签名算法)等等。在非对称加密算法中,加密和解密过程中使用一对非对称的密码,分别成为公钥和私钥。非对称加密的密钥对具有两个特点,一个是使用公钥或者私钥进行加密后,只有另一个对应的密钥才能解开;另一个是公钥是可以向任何人公开的,但私钥则要求保密。其他人无法从公钥中推算出私钥。非对称加密技术在区块链上主要包括信息加密、数字签名和登录认证等。其中信息加密主要由信息发送者(记为A)使用信息接收者(记为B)的公钥进行加密然后发送给B,B收到信息后使用其私钥对信息进行解密。其他人由于没有A的私钥,没有办法对信息进行解密。数字签名则是A在发送消息时,先使用哈希函数第信息原文生成一个摘要,然后使用自己的私钥对信息摘要进行加密,生成的密文称为数字签名,之后将信息原文和数字签名发送给B,B接收到信息后使用A的公钥进行解密得到摘要,要确保信息是由A本人发出,B需要再对收到的信息原文使用哈希函数产生摘要,并与接收到的摘要进行对比,相同则说明信息在传输过程中没有被篡改。登录认证就是客户端使用私钥对登录信息进行加密后发送到服务器,服务器使用客户端的公钥进行解密进行登录认证。数据层—总结具有生成区块能力的节点,可以将通过在生成的区块头放入前一区块的哈希值,连接到前一区块,形成最新的区块主链。各个区块依次序连环相接,形成从创世区块到当前区块的最长主链,从而在区块链上记录了每次交易数据的完整历史,能够提供数据的溯源和定位功能。倘若区块中的内容被篡改,都会造成区块的哈希值发生改变,从而使该区块从链式结构中“脱落”,...