前置机参与区块链共识的方法与流程

文档序号:14861400发布日期:2018-07-04 07:39阅读:577来源:国知局
前置机参与区块链共识的方法与流程

本发明涉及区块链技术。



背景技术:

现有区块链技术数据传输冗余多,共识效率低。



技术实现要素:

发明内容

为了克服上述现有技术的不足,本发明提供了一种前置机参与区块链的共识方法,通过分区分片的前置机来接收交易数据,可保证在受攻击的情况下,有多个通道能进入共识节点,共识节点只需接收前置机发送经过验证的交易数据,而共识节点之间只需要传输验证结果即可,大幅度减少数据传输及提高区块链共识的效率。

本发明所采用的技术方案是:

1、前置机参与区块链共识的方法,区块链生成新区块的步骤如下;

步骤s1,前置机取2/3及以上的共识节点的最大高度h,加1作为最新的区块高度;

步骤s2,前置机接收交易指令,验证交易签名是否正确及是否符合交易条件,如支付不能超过该支付地址余额,验证通过后附加步骤s1确定的区块高度h+1,签名后发送给其他所有的共识节点,前置机在确定新的h+1高度作为本轮共识的区块高度,可以约定一个超时时间t1,超过超时时间后不再以h+1区块高度发送交易数据;

步骤s3,若共识节点验证交易签名符合条件,则将验证结果发送给其他所有的共识节点,共识节点收到h+1高度的第一个数据后,约定一个超时时间t2,超过超时时间后不再接收任何h+1高度的数据;

步骤s4,每个共识节点收到其他节点发过来的验证结果,累计投票,达到一定的票数后,生成高度为h+1的新区块,新的h+1区块头哈希计算时包含前一高度为h的区块的头哈希值;

步骤s5,每个共识节点将高度为h+1新区块发送到前置节点,可包括余额状态信息;

步骤s6,前置机比较出已发送的h+1高度的交易数据中未被写入共识区块h+1的交易数据,作为h+2高度的数据,连同新收到的数据发送给所有的共识节点,可规定每个区块发送数据的上限,超过上限的交易数据会归到h+3高度的数据等到下一轮发送。

2、前置机可将支出地址分区,如支付地址的前二位00、01、10、11分4个区,每个支付地址分区后再将交易哈希分片,按附图2步骤如下;

步骤s1,用户将交易发送给支付账户地址的分区所在的那些前置机,每台前置机可以规定每个区块高度传送的最大笔数,分区用户数量越多分配的前置机越多,可按交易哈希值来对用户数量的级别来取模,比如北京3台前置机,每个北京支付地址的交易,根据不同的交易哈希值取3的模,可以对应不同的前置机,即使部分前置机损坏或被攻击,用户还可以变换交易哈希值通过其他前置机进入区块链共识节点;

步骤s2,每个支出地址分区下的交易哈希分片的交易数据都是完全独立的,在对签名进行校验及正确计算余额后,可依次或按同一高度的数据打包发送给所有的区块链共识节点;

步骤s3,所有的共识节点收到所有前置机发送的同一高度的但完全独立的交易数据,可以多线程校验及计算余额,可以将分区分片的交易结果分送给其他所有的共识节点进行投票,若共识节点的验证结果和前置机验证结果一致,再加一个本共识节点的私钥签名即可,若有不一致的数据,则需要剔除,将剔除的数据及共识结果的哈希值传送给其他共识节点,以便对比投票;

步骤s4,共识节点对分区分片的数据分别投票达成共识结果后,打包发给对应的分片前置节点,分片前置节点对该分片的数据对比后,把前次已发送但未写入区块的数据再次验证,通过验证的交易数据按下一个高度发送给所有的共识节点。

3、对于每个高度传送交易数据的时候,把交易哈希值的某几位写入位图表,让用户同时提供不同的交易哈希值,前置机选一个使之不与其他交易的位图重叠,或者放入后面或后面几个区块高度的位图表,前置机可以按位图表的位置来放置各交易哈希值,并计算梅克尔树的哈希值,前置机把数据传送给共识节点后,可以通过位图表和梅克尔树的哈希值快速对比数据的一致性,获取遗漏数据,或剔除不一致的数据。

与现有技术相比,本发明的有益效果是通过分区分片的前置机来接收交易数据,可保证在受攻击的情况下,有多个通道能进入共识节点,共识节点只需接收前置机发送经过验证的交易数据,而共识节点之间只需要传输验证结果即可,大幅度提高共识效率。

附图说明

图1为前置机参与区块链共识方法的说明图;

图2为前置机分区和分片验证和传输交易数据的说明图。

具体实施方式

下面结合附图1和附图2对本发明进一步说明。

前置机可将支出地址分区,如支付地址的前二位00、01、10、11分4个区,每个支付地址分区后再将交易哈希分片,如附图2,北京(3个前置机)、上海(4个前置机)、杭州(2个前置机)、深圳(3个前置机);

步骤s1,用户将交易发送给支付账户地址的分区所在的那些前置机,每台前置机可以规定每个区块高度传送的最大笔数,分区用户数量越多分配的前置机越多,可按交易哈希值来对用户数量的级别来取模,比如北京3台前置机,每个北京支付地址的交易,根据不同的交易哈希值取3的模,可以对应不同的前置机,即使部分前置机损坏或被攻击,用户还可以变换交易哈希值通过其他前置机进入区块链共识节点;

步骤s2,前置机取2/3及以上的共识节点的最大高度h,加1作为最新的区块高度,前置机接收交易指令,验证交易签名是否正确及是否符合交易条件,如支付不能超过该支付地址余额,验证通过后附加区块高度h+1,签名后发送给其他所有的共识节点,前置机在确定新的h+1高度作为本轮共识的区块高度,可以约定一个超时时间t1,超过超时时间后不再以h+1区块高度发送交易数据;

每个支出地址分区下的交易哈希分片的交易数据都是完全独立的,在对签名进行校验及正确计算余额后,可依次或按同一高度的数据打包发送给所有的区块链共识节点;

步骤s3,所有的共识节点a、b、c收到所有前置机发送的同一高度h+1的但完全独立的交易数据,可以多线程校验及计算余额汇总,可以将分区分片的交易结果分送给其他所有的共识节点进行投票,若共识节点的验证结果和前置机验证结果一致,再加一个本共识节点的私钥签名即可,若有不一致的数据,则需要剔除,将剔除的数据及共识结果的哈希值传送给其他共识节点,以便对比投票,共识节点收到h+1高度的第一个数据后,约定一个超时时间t2,超过超时时间后不再接收任何h+1高度的数据;;

步骤s4,每个共识节点收到其他节点发过来的验证结果,累计投票,达到一定的票数后,生成高度为h+1的新区块,新的h+1区块头哈希计算时包含前一高度为h的区块的头哈希值,共识节点对分区分片的数据分别投票达成共识结果后,打包发给对应的分片前置节点,可包括余额状态信息。

步骤s5,分片前置节点对该分片的数据对比后,把前次已发送但未写入区块的数据再次验证,通过验证的交易数据按下一个高度发送给所有的共识节点,

对于每个高度传送交易数据的时候,把交易哈希值的某几位写入位图表,让用户同时提供不同的交易哈希值,前置机选一个使之不与其他交易的位图重叠,或者放入后面或后面几个区块高度的位图表,前置机可以按位图表的位置来放置各交易哈希值,并计算梅克尔树的哈希值,前置机把数据传送给共识节点后,可以通过位图表和梅克尔树的哈希值快速对比数据的一致性,获取遗漏数据,或剔除不一致的数据。

前置机比较出已发送的h+1高度的交易数据中未被写入共识区块h+1的交易数据,作为h+2高度的数据,连同新收到的数据发送给所有的共识节点,可规定每个区块发送数据的上限,超过上限的交易数据会归到h+3高度的数据等到下一轮发送。

本发明的目的是引入前置机对共识交易数据进行分区分片预处理,将校验过的数据再发送到共识服务器,共识服务器之间主要传送共识结果。

本方法较好地分散了处理交易数据的负荷,提高了区块链的共识效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1