1.一种基于边缘计算的轻量级且可扩展的区块链系统,其特征在于:涉及身份认证层、节点层、共识层和存储层;所述身份认证层中的证书注册机构CA对节点层中的节点进行身份认证以及角色层级划分;所述共识层通过基于可验证随机函数VRF的身份证明PoI共识协议来进行委员会选举与更迭以及新区块的产生与验证;所述存储层实现区块存储结构优化以及历史区块数据卸载;
上述身份认证层、节点层、共识层和存储层之间的具体工作过程如下:
S1、节点身份认证与角色层级划分
所有节点在加入区块链网络时通过证书注册机构CA进行身份认证,并将节点层中节点角色划分为高级节点、中级节点和低级节点;高级节点和中级节点承担区块链的全节点角色,边缘节点部署在高级节点层,高级节点参与共识并存储全账本,中级节点存储最新纪元的区块数据即可参与共识,低级节点通过连接高级节点或中级节点来发起交易,存储区块头和其感兴趣的交易;
S2、委员会选举
通过基于可验证随机函数VRF的抽签算法从中级节点和高级节点合集中选出部分节点组成委员会;委员会生命周期记为纪元ETi,当该纪元结束时,委员会发生更迭,重新挑选下一批委员;每次所选委员会成员的身份标识均将被记录到该纪元的创世区块中;
S3、新区块生成与验证
委员会成员在一个固定的时间段内通过不断改变输入随机数r的值计算一个哈希函数,并得到一个哈希值的输出集合 委员会成员在自己的哈希值输出集合 中找到一个具有最多前置连续零的哈希值Zi,并将该哈希值Zi发送给委员会的其他成员,每个委员会成员均比较所有的哈希值Zi,其中哈希值的前置连续零数量最多的委员会成员获得记账权;获得记账权的委员会成员构造候选区块Bt,并发送给其他委员会成员等待验证,委员会成员验证候选区块Bt,若验证成功,则将候选区块Bt广播到区块链网络中,并附加到该成员本地存储的区块链中;
重复上述内容直到纪元结束;
S4、委员会更迭
当纪元结束时,现任委员会成员对下一纪元的随机字符串达成一致,该随机字符串用作下一纪元委员会成员选举过程中输入的随机种子;
S5、区块数据卸载,即中级节点通过存储层的数据卸载模块对历史区块数据进行删除;
每个区块Bt由纪元编号Ei和区块在纪元内的高度Hj两部分标识,利用共识的周期性,每个纪元的创世区块中更新一颗包含所有账户最新状态的完整状态树,从而删除历史纪元的区块数据而不影响区块链系统的正常运行;中级节点只需在存储空间不足时,将纪元编号Ei与当前纪元不符的区块进行删除处理。
2.根据权利要求1所述的基于边缘计算的轻量级且可扩展的区块链系统,其特征在于:所述步骤S1的具体过程为:
S1.1、证书注册机构CA检测节点层中节点Nodei的硬件资源,对节点进行角色层级划分为高级节点、中级节点和低级节点,并为每个节点分配一个角色层级表示符其中 表示高级节点, 表示中级节点,表示低级节点;
S1.2、证书注册机构CA对每个节点Nodei分配一个唯一的公私钥对
节点身份标识码ICi表示为:
ICi=SHA256(PKi||iLevel)
节点Nodei用
3.根据权利要求1所述的基于边缘计算的轻量级且可扩展的区块链系统,其特征在于:所述步骤S3的具体过程为:
S3.1、首先判断当前是否处于纪元的创世区块,若是,则将纪元生命周期长度ETi以及节点计算哈希值的时间MTi硬编码到当前纪元的创世区块内,其中ETi和MTi与当前委员会成员的硬件资源和剩余能量相关;若否,则执行步骤S3.2;
S3.2、每个委员会成员在时间缝隙MTi中通过不断改变随机数r的值来计算哈希函数SHA256(SHA256(Blockt)||ICi||r),并由所有的输出组成了一个哈希值集合 每个委员会成员分别在自己集合 中找到一个具有最多前置连续零的哈希值Zi,然后以
S3.3、每个委员会成员等待一个固定时间ST来更新区块链,在ST时间段内,委员会成员会收到其他成员的哈希值Zi,每个成员比较所有的哈希值Zi,其中哈希值的前置连续零数量最多的成员获得记账权;
S3.4、获得记账权的委员会成员选择一个新交易记录集合{Tx}t,然后生成新的候选区块Bt,并将Bt广播给其他的委员会成员;
候选区块Bt的格式为:
Bt=
S3.5、一旦收到候选区块Bt,所有委员会成员基于账户状态验证候选区块Bt以及交易{Tx}t的有效性;若验证成功,则将候选区块Bt广播到区块链网络中,并附加到该成员本地存储的区块链中;
S3.6、重复上述步骤S3.1至步骤S3.5,直至当前纪元结束。
4.根据权利要求3所述的基于边缘计算的轻量级且可扩展的区块链系统,其特征在于:所述步骤S3.3中比较哈希值Zi的具体过程为:
(1)、所有成员各自比较哈希值Zi的前置连续零数量,前置连续零数量最多的哈希值所属节点获得记账权;
(2)、当存在多个最多前置连续零的哈希值时,则比较哈希值对应输入随机数的值,随机数最小的节点获得记账权;
(3)、倘若随机数也相等,则直接比较哈希值Zi的大小,哈希值最小的节点获得记账权。
5.根据权利要求3所述的基于边缘计算的轻量级且可扩展的区块链系统,其特征在于:所述步骤S3.4中生成候选区块Bt的具体方法为:
(1)、从当前所有新交易中选择一批有效交易作为待打包的交易集合{Tx}t,并基于{Tx}t构建状态Merkle哈希树SMT、交易Merkle哈希树TMT、收据Merkle哈希树RMT,依次将根节点哈希值标记为SR、TR、RR;并设置区块体body={SMT,TMT,RMT};
(2)、设置纪元编号E,判断当前是否处于该纪元的生命周期内,若是,则E=E;若否,则E=E+1;
(3)、设置区块高度H=H+1,其中H在该纪元的创世区块中初始化为0;
(4)、设置纪元时间长度ET=ET,当前纪元节点计算哈希值的时间间隙MT=MT,其中ET、MT在该纪元创世区块已被硬编码;
(5)、设置区块头header;
header={PreHash,E,H,t,
6.根据权利要求3所述的基于边缘计算的轻量级且可扩展的区块链系统,其特征在于:所述步骤S3.5中验证候选区块Bt的具体方法为:
(1)、验证节点身份的合法性:从候选区块Bt中获取节点身份标识
若是,则执行步骤(2);
(2)、验证时间戳t的合法性:从候选区块Bt中获取时间戳t,并验证t是否在给定时间段Ti=MTi+ST内,若否,则验证失败,结束验证并丢弃该块;若是,则执行步骤(3);
(3)、验证随机数r的合法性:从候选区块Bt中获取随机数r、ICi以及哈希值Z,并计算Z′=SHA256(SHA256(Blockt)||ICi||r),若Z′≠Z,则验证失败,结束验证并丢弃该块;若Z′=Z,则执行步骤(4);
(4)、验证哈希值Z是否具有最多前置连续零:从候选区块Bt中获取哈希值Z,并与S3.3哈希值比较过程中挑选出的哈希值Z″进行比较,若Z″≠Z,则验证失败,结束验证并丢弃该块;
若Z″=Z,则执行步骤(5);
(5)、验证交易的合法性:从候选区块Bt中获取交易集合{Tx}t,根据每笔交易涉及用户的账户状态验证其是否合法,一旦有交易非法,则验证失败,结束验证并丢弃该块;若所有的交易皆合法,则将候选区块Bt广播到区块链网络中,并附加到该成员本地存储的区块链中。
7.根据权利要求1所述的基于边缘计算的轻量级且可扩展的区块链系统,其特征在于:所述步骤S5中状态树的更新方式为:
(1)、在每个纪元的创世区块中更新一颗包含所有账户最新状态的完整状态树;
(2)、在纪元内,当某些账户状态发生变化时,则在最新区块记录这些账户的最新状态,而那些状态未发生变化的账户则通过哈希指针向前引用。