2020-12-07

 打块节点不是真实物理设备—区块链打块节点安全吗?

当下问题?

区块链是未来信用时代最重要的社会基础设施之一,它的稳定安全可靠将是基础设施的基本要求,而其中安全性是首先要满足的条件,虽然在真正的区块链的解决方案中,已经解决了数据不被篡改的基本安全要求,但在实际运行过程中这样是远远不够的。区块链是一个整体解决方案,其运行需要有实际的运行主体,技术上的主要运行主体是运行区块链节点软件的计算机设备,这些设备本身的安全性也将影响整个区块链的运行安全,在这些影响设备本身安全性的因素中,最大的不确定因素是来自外部的对未公开漏洞的攻击,或者采用已知方法对类似DDOS的洪水攻击,就算没有漏洞可攻破,也可以让你穷于应付这些攻击而无法将计算能力花在运行区块链上,从而影响区块链网络的正常运行。目前针对此类问题,就设备本身被攻击的问题采用最多的是传统的网络隔离及防火墙的方法,但这在要求开放的区块链网络中,很多区块链会被防火墙隔离,会影响区块链网络的运行。因此,如何解决,既能保持节点设备的开放,又能保证区块链网络不怕被攻击,成为一个急需解决的问题。

解决问题
所要解决的技术问题在于提供一种能够防止区块链节点被暴露攻击,实现了锻造区块与物理设备逻辑分离,既能保持节点设备的开放,又能保证区块链网络不被攻击,保证了区块链网络安全正常的运行。

[0004]为解决上述技术问题,本发明的技术解决方案是:

[0005]一种用于区块链的即时随机出块的方法,包括如下步骤:

0006启动区块链节点,节点加载本地数据并进行数据同步,完成本地区块更新;

0007区块链网络中的选举管理器列出处理本地区块的设备入围名单;

0008选举管理器对设备入围名单进行检查,确定目标设备对本地区块进行锻造;

0009区块链网络中的矿工管理器收到上一个区块后,检查该区块合法性后处理该区块内的交易;

0010区块链网络中的矿工管理器提取设备入围名单的抽取序号;

0011选举管理器对入围名单进行清理;

0012使用抽取序号提取清理后的入围名单中的待定设备Who=indexOf(List,Index);

0013判断待定设备是否为目标设备;

0014若是,则开始锻造区块,若不是,则返回S4;

0015完成区块的锻造。

[0016]进一步的,所述步骤(2)中列出处理本地区块的设备入围名单的具体方法是:

0017选举管理器发起一个投票;

0018等待本轮投票结束后统计投票结果;

0019确定列入入围名单的投票数标准;

0020将投票数高于投票数标准的的设备列入入围名单中。

[0021]进一步的,所述步骤(3)中对设备入围名单进行检查的具体方法是:

0022提取一个入围名单中的设备信息;

0023判断该设备是否为目标设备;

0024若不是,则返回S31;

0025若是,则标记目标设备对本地区块进行锻造;

0026完成设备入围名单的检查。

[0027]进一步的,所述步骤(5)中矿工管理器提取设备入围名单的抽取序号的具体方法是:

0028矿工管理器提取本地区块的特征信息Info=MD5(DATAblock);

0029矿工管理器根据该特征信息计算得出随机种子Peer=Hex2NUM(Info);

0030矿工管理器18.提取该种子得到的抽取序号Index=SubString(Peer,1,1)。

[0031]进一步的,所述步骤(6)选举管理器对入围名单进行清理的具体方法是:

0032提取一个入围名单中的设备信息;

0033判断该设备是否已锻造区块;

0034若是,则将该设备从入围名单中删除后继续提取下一个入围名单中的设备信息;

0035若不是,则继续提取下一个入围名单中的设备信息;

0036完成入围名单清理。

[0037]进一步的,所述步骤(9)中锻造区块的具体方法是:

0038开始进入锻造区块的状态;

0039开始生成新的区块头;

0040开始处理未处理的交易;

0041将已处理的交易装入区块头;

0042完成新区块的锻造,将新区块广播到区块链网络中。

[0043]一种用于区块链的即时随机出块的系统,包括:

[0044]矿工管理器,所述的矿工管理器与区块链网络相连,用于管理当前可参与锻造区块的矿工,以及为这些矿工提供即时随机的排队顺序;

[0045]选举管理器,所述的选举管理器与区块链网络相连,用于接收投票信息,并进行计票统计工作,确定出每一轮处理本地区块的设备入围名单;

[0046]打块管理器,所述的打块管理器与区块链网络相连,用于常规的区块锻造与发送;

[0047]所述的矿工管理器、选举管理器和打块管理器交叉网状连接。

[0048]进一步的,所述的矿工管理器包括矿工清单模块、矿工秩序模块和即时随机模块,所述的矿工清单模块用于列出已成为矿工的清单,所述的矿工秩序模块中,会将当前入选的矿工按照特定的顺序排列,所述的即时随机模块根据当前最后一个区块的数据来从矿工秩序模块中抽取一名本轮未参与打块的矿工进行打块。

[0049]进一步的,所述的选举管理器包括投票存储模块、计票统计模块和轮次入围模块,所述的投票存储模块用于保存当前网络中矿工的投票情况,检查投票者数据合法性和投票数合理性,所述的计票统计模块用于统计被投票者的的票总数,并筛选出符合当前共识协议的入围矿工,加入入围旷工名单,所述的轮次入围模块用于确定当前轮入围名单和历史入围情况,并记录历史矿工入围顺序以及实际参与锻造区块的顺序。

[0050]进一步的,所述的打块管理器包括区块存储模块、区块锻造模块和区块同步模块,所述的区块存储模块用于存储锻造的区块,以及从外部接收的区块,并在接收区块时校验区块锻造主体,所述的区块锻造模块用于创建新区块,并将未处理的交易处理后放入区块中,所述的在区块同步模块用于向外广播自己锻造的区块以及接收到的新区块,同时在区块落后网络时向网络获取新区块,并检查区块的锻造者是否符合矿工秩序。

[0051]本发明的有益效果是:

[0052]

1.本发明通过将区块的管理与计算设备在概念上解绑,引入矿工的概念,让设备降级为矿机,让区块的锻造,与设备没有直接关系,能够防止正在处理的区块链节点被暴露攻击,实现了锻造区块与物理设备逻辑分离;

[0053]

2.本发明通过引入选举机制,让矿工锻造区块通过选举产生,避免多个节点对统一区块处理而导致的算力的浪费;

[0054]

3.本发明通过设计了“即时随机出块”的方法,出完上一个合法的区块后,才能知道下一个由谁锻造区块,这样既能保持节点设备处于开放状态,无需打开防火墙,同时又能保证区块链网络中的节点不被攻击,保证了区块链网络安全正常的运行。

附图说明
[0055]图1是本发明对应方法的流程图;

具体实施方式
[0056]下面结合附图和具体实施例对本发明作进一步详述。在此需要说明的是,下面所描述的本发明各个实施例中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。

[0057]为了解决区块链中的节点被恶意攻击,没办法同时兼容点设备的开放性和区块链网络被攻击的问题,本申请深入分析了区块链网路被攻击的各种主要类型,比如阻止新区块被锻造、阻止新区块被广播、入侵修改数据等,无论采用哪一种方案,都有一个前提,就是需要先知道被攻击的目标在哪里。在本发明中,解决上述问题的核心思路就是,让攻击者不知道攻击目标在哪里,或者说让攻击者找不到攻击目标。本发明中为了实现这个思路,在实现上配套了一系列措施。因为攻击的目的是破坏新的区块、阻止新的区块产生、或组织广播旧的区块,最终目标都在区块上,这里在实现上,首先就是将区块的管理与计算设备在概念上解绑,引入矿工的概念,让设备降级为矿机,让区块的锻造,与设备没有直接关系。一个矿工可以在任意一台矿机上工作,其所锻造的区块只与矿工有关,而矿工并不与矿机关联,从而把区块的锻造关系从矿机上脱离出来。当然,仅仅这样依然是不够的,多个矿工都去生产一个区块,会导致计算能力的浪费,也比较容易多的导致网络中的临时分叉,这不利于资源节约与用户体验。所以这里引入了选举机制,让谁打块的问题通过特定的规则选举出来。但是通过选举又带来新的问题,就是有哪些矿工锻造区块是提前确定好的,虽然这样可以大幅降低网络内耗,但是也更容易导致被精确攻击。所以这里进一步的设计了“即时随机出块”的方法,其核心实现思路就是将出完上一个合法的区块后,才能知道下一个由谁锻造区块,这样虽然知道下一个区块锻造者一定来自于这些人,但不知道具体是哪一位,所以就无法发起攻击,另外即使最后知道了,但由于锻造者矿工与设备已解绑,所以攻击者也不知道应该攻击哪台设备。从而,实现一个让攻击者找不到攻击目标的区块链网络,此时即使区块链网络处于开放状态,也不怕被攻击。

[0058]具体的,本发明公开了一种用于区块链的即时随机出块的方法,如图1所示,包括如下步骤:

0059启动区块链节点,节点加载本地数据并进行数据同步,完成本地区块更新;

0060区块链网络中的选举管理器列出处理本地区块的设备入围名单;具体的,所述步骤(2)中列出处理本地区块的设备入围名单的具体方法是:(21)选举管理器发起一个投票;(22)等待本轮投票结束后统计投票结果;(23)确定列入入围名单的投票数标准;(24)将投票数高于投票数标准的的设备列入入围名单中。通过选举管理器的投票来确定参与区块锻造的设备信息,防止过多设备对同一个区块进行锻造而浪费了算力资源。

0061选举管理器对设备入围名单进行检查,确定目标设备对本地区块进行锻造;优选的,所述步骤(3)中对设备入围名单进行检查的具体方法是:(31)提取一个入围名单中的设备信息;(32)判断该设备是否为目标设备;(33)若不是,则返回S31;(34)若是,则标记目标设备对本地区块进行锻造;(35)完成设备入围名单的检查。

0062区块链网络中的矿工管理器收到上一个区块后,检查该区块合法性后处理该区块内的交易;

0063区块链网络中的矿工管理器提取设备入围名单的抽取序号;优选的,所述步骤(5)中矿工管理器提取设备入围名单的抽取序号的具体方法是:(51)矿工管理器提取本地区块的特征信息Info=MD5(DATAblock);(52)矿工管理器根据该特征信息计算得出随机种子Peer=Hex2NUM(Info);(53)矿工管理器18.提取该种子得到的抽取序号Index=SubString(Peer,1,1)。再未确定抽取序号时,后面处理区块的节点是未知的,因此,通过抽取序号可以防止后续处理区块节点的暴露,防止处理区块的节点被恶意攻击。

0064选举管理器对入围名单进行清理;优选的,所述步骤(6)选举管理器对入围名单进行清理的具体方法是:(61)提取一个入围名单中的设备信息;(62)判断该设备是否已锻造区块;(63)若是,则将该设备从入围名单中删除后继续提取下一个入围名单中的设备信息;(64)若不是,则继续提取下一个入围名单中的设备信息;(65)完成入围名单清理。该步骤的的目的是清理已经锻造区块的设备,防止其重复打造区块而被攻击。

0065使用抽取序号提取清理后的入围名单中的待定设备Who=indexOf(List,Index);通过该步骤才初步确定下一步处理区块的设备信息,而且该设备信息并非确定,还会受后续的条件约束,若该待选设备非目标设备,也将被抛弃。

0066判断待定设备是否为目标设备;

0067若是,则开始锻造区块,若不是,则返回S4;优选的,所述步骤(9)中锻造区块的具体方法是:(91)开始进入锻造区块的状态;(92)开始生成新的区块头;(93)开始处理未处理的交易;(94)将已处理的交易装入区块头;(95)完成新区块的锻造,将新区块广播到区块链网络中。

0068完成区块的锻造。

[0069]通过上述的步骤就可以实现区块链网络中的节点设备在未打开防火墙状态下开放使用却又不会暴露而被攻击,提高了区块链的处理效率。

[0070]本发明还公开了一种用于区块链的即时随机出块的系统,包括:

[0071]矿工管理器,所述的矿工管理器与区块链网络相连,用于管理当前可参与锻造区块的矿工,以及为这些矿工提供即时随机的排队顺序;优选的,所述的矿工管理器包括矿工清单模块、矿工秩序模块和即时随机模块,所述的矿工清单模块用于列出已成为矿工的清单,所述的矿工秩序模块中,会将当前入选的矿工按照特定的顺序排列,所述的即时随机模块根据当前最后一个区块的数据来从矿工秩序模块中抽取一名本轮未参与打块的矿工进行打块。矿工管理器的主要功能是将区块的管理与计算设备在概念上解绑,引入矿工的概念,让设备降级为矿机,让区块的锻造,与设备没有直接关系,同时引入的即时随机模块可以防止节点被暴露。

[0072]选举管理器,所述的选举管理器与区块链网络相连,用于接收投票信息,并进行计票统计工作,确定出每一轮处理本地区块的设备入围名单;优选的,所述的选举管理器包括投票存储模块、计票统计模块和轮次入围模块,所述的投票存储模块用于保存当前网络中矿工的投票情况,检查投票者数据合法性和投票数合理性,所述的计票统计模块用于统计被投票者的的票总数,并筛选出符合当前共识协议的入围矿工,加入入围旷工名单,所述的轮次入围模块用于确定当前轮入围名单和历史入围情况,并记录历史矿工入围顺序以及实际参与锻造区块的顺序。选举管理模块的作用是防止多个节点对同一区块同时打块,浪费算力资源。

[0073]打块管理器,所述的打块管理器与区块链网络相连,用于常规的区块锻造与发送;优选的,所述的打块管理器包括区块存储模块、区块锻造模块和区块同步模块,所述的区块存储模块用于存储锻造的区块,以及从外部接收的区块,并在接收区块时校验区块锻造主体,所述的区块锻造模块用于创建新区块,并将未处理的交易处理后放入区块中,所述的在区块同步模块用于向外广播自己锻造的区块以及接收到的新区块,同时在区块落后网络时向网络获取新区块,并检查区块的锻造者是否符合矿工秩序。

[0074]所述的矿工管理器、选举管理器和打块管理器交叉网状连接。

[0075]本发明通过将区块的管理与计算设备在概念上解绑,引入矿工的概念,让设备降级为矿机,让区块的锻造,与设备没有直接关系,能够防止正在处理的区块链节点被暴露攻击,实现了锻造区块与物理设备逻辑分离;通过引入选举机制,让矿工锻造区块通过选举产生,避免多个节点对统一区块处理而导致的算力的浪费;通过设计了“即时随机出块”的方法,出完上一个合法的区块后,才能知道下一个由谁锻造区块,这样既能保持节点设备处于开放状态,无需打开防火墙,同时又能保证区块链网络中的节点不被攻击,保证了区块链网络安全正常的运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

探索真

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值