一种区块链的出块方法和装置与流程

文档序号:17298514发布日期:2019-04-03 04:40阅读:1535来源:国知局
一种区块链的出块方法和装置与流程

本发明实施例涉及区块链以及安全硬件领域,并且更具体地,涉及一种区块链上的区块出块方法和装置。



背景技术:

区块链是一种去中心化的分布式账本,它将每一笔交易都记录在区块链网络的每一个节点上。每个节点内包括所有的区块,每个区块包括若干笔交易,所有区块的集合就包含了区块链上所有交易的集合,所以区块的生成至关重要。由于区块链的去中心化机制让任何一个节点都有生成区块的机会,所以如何保障每个节点出块机会的公平和公正是至关重要的。

对出块机会的设计是区块链共识机制的核心,首先想到是用软件方式出块,即在一定时间间隔内,每一个软件客户端都有一个出块机会。但是这种方式有严重的缺陷,容易受到所谓的女巫攻击,即软件客户端分身复制成多份,每份都有一个出块机会。这种缺陷导致了区块链出块机会的共识在事实上无法实现,因为每个节点为了争取最大的出块机会,都会尽量复制更多客户端直到内存或者cpu用尽。

为了解决上述出块机会共识过程中软件客户端分身复制的问题,现有技术中的proofofwork(pow)方式使用了基于算力的共识机制,即一个软件客户端就可以用尽这台机器上的所有cpu算力或内存,使得分身复制软件客户端的办法变得无关紧要,因为出块机会是跟算力或内存成正比而不是跟软件客户端数量相关。pow共识方式本质上是用硬件方式确定出块机会,硬件越强大,出块机会也越高,避免了软件客户端的分身复制缺陷。但是pow方式由于消耗大量的电力和计算资源,是一种非常低效的方式。

为了解决上述出块机会共识过程中软件客户端分身复制的问题,现有技术中的proofofauthority(poa)方式使用了基于文件的身份标识方式,即将每个出块节点的身份标识信息存放在节点上的某个文件中,被使用来设置区块中的出块身份信息。每一个身份标识在一定时间间隔内只有一个出块机会。但是此方式由于使用文件形式存放身份标识信息,很容易被窃取,从而使得其他恶意者可以获得同样的出块机会,甚至可以替换真实节点发出的区块。

综上,如何在区块的出块过程中,能以更加高效和安全的方式保证出块节点身份的唯一性和不可复制性,是区块链共识过程中保证公平和公正性的亟需解决的技术问题。



技术实现要素:

本发明实施例中提供了一种区块链的出块方法和装置,能有效的保证出块节点身份标识的不可复制性和唯一性,从而保证了每个节点出块机会的公平和公正性。本发明实施例提供了以下的技术方案:

第一方面,提供了一种区块链的出块方法,包括:

在区块链网络上接收到新的交易数据,将所述交易数据打包生成新的区块;

使用安全硬件对所述新的区块进行签名,生成数字签名,所述安全硬件内部封装了出块节点的身份识别的私钥,私钥无法被提取出来,只能在安全硬件内部使用;

读取身份识别信息,与所述数字签名合成为签名信息,添加到新的区块里面生成新的签名区块;

将所述新的签名区块发送到区块链网络上,从而让其他接收节点能够收到所述新的签名区块;

第二方面,提供了一种区块链的区块接受方法,包括:

在区块链网络中收到一个区块;

读取所述区块的签名信息,从签名信息中提取出身份识别信息,判断生成所述区块的出块节点是否为许可节点;

从签名信息中提取出数字签名,验证数字签名和身份识别信息的一致性和正确性;

当验证为许可节点并且数字签名正确时,接受所述区块。

结合第二方面,在第一种可能的实现方式中,所述使用身份识别信息判断生成所述区块的出块节点是否为许可节点,具体包括:

读取预先设置的身份识别列表;

将所述身份识别信息与所述身份识别列表做对比,判断是否是许可节点。

结合第二方面,在第二种可能的实现方式中,所述使用身份识别信息判断生成所述区块的出块节点是否为许可节点,具体包括:

获取身份识别信息的签发机构信息;

读取预先设置的签发机构信息列表;

将所述签发机构信息与所述预先设置的签发机构信息列表做对比,判断是否是许可节点。

第三方面,提供了一种区块链的出块装置,所述装置包括:

区块生成模块,用于在收到区块链上的一批交易数据后,将这些交易数据打包并生成一个新的区块;

安全硬件模块,封装了节点身份识别的私钥部分,私钥无法被提取出来,仅能在安全硬件中被使用,进行签名操作生成数字签名;

区块签名合成模块,用于把所述数字签名及身份识别信息合成为签名信息,添加到所述新的区块中,生成新的签名区块;

区块发送模块,用于把新的签名区块通过区块链网络发送出去。

在本发明实施例的上述技术方案中,由于出块节点标识身份识别的私钥封装在安全硬件内部,保证了私钥的不可提取和不可复制,从而避免了出块节点的分身复制,让每个出块节点有公平公正的出块机会;同时,由于私钥的不可提取和不可复制,让其他恶意者无法窃取和伪造任何一个出块节点的身份识别,从而保证了每个出块节点的安全性,避免了恶意者替换真实节点发出的区块。

附图说明

为了更清楚的说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示意性的示出了根据本发明实施例一实现的区块链的出块方法的流程图。

图2示意性的示出了根据本发明实施例一中的安全硬件签名的流程图。

图3示意性的示出了根据本发明实施例二实现的区块链的区块接受方法的流程图。

图4示意性的示出了根据本发明实施例二实现的区块身份识别方法的流程图。

图5示意性的示出了根据本发明实施例二实现的另一种区块身份识别方法的流程图。

图6示意性的示出了根据本发明实施例三实现的区块链的出块装置的框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例一提供了一种区块链的出块方法,如图1所示,该方法包括:

步骤s101:接收区块链上的交易信息,将这些交易信息打包成一个新的区块;

区块链的出块节点连接到区块链网络中,从网络中不断的接收区块链的交易数据,这些交易数据由区块链使用者生成并发送到区块链网络中;所述出块节点通过监听新收到的交易,将一批新收到的交易按照一定顺序打包成一个新的区块,所述新的区块包含了交易以及对交易和区块自身描述的元数据信息。

步骤s102:安全硬件对所述新的区块做数字签名,生成签名信息并添加在所述新的区块中,生成新的签名区块;

本实施例中的所述的安全硬件是内置身份识别私钥的、能对传入的数据进行数字签名的硬件,其内置的私钥无法被提取出来;当所述新的区块被打包生成之后,所述安全硬件使用内置的身份识别私钥对所述新的区块进行签名后生成数字签名;读取存放在文件系统上的身份识别信息,将所述数字签名与所述身份识别信息合并后生成签名信息,并将所述签名信息添加到所述新的区块中,生成新的签名区块;整个过程如图2所示。

步骤s103:将所述新的签名区块广播到区块链网络中;

把新的签名区块发送到区块链的网络中,向区块链所有节点广播,用以让其他节点都能收到此区块。

需要说明的是,在本发明实施例提供的出块方法中,安全硬件里面的身份识别私钥由运营管理者生成并写入到安全硬件内部,一旦写入将无法读取出来;同时身份识别信息也由区块链的运营管理者或者其指定的第三方机构提供或签发,存放在文件系统中,此身份识别信息可以被复制而不会影响出块节点的唯一性。

本发明实施例二提供了一种区块链的区块接受方法,如图3所示,该方法包括:

步骤s201:在区块链网络中收到一个区块;

接收节点连接在区块链网络中,当从网络中接收到一个区块时,如果所述区块是新区块则保留并进入下一步的验证步骤,否则直接丢弃它。

步骤s202:验证区块是否为许可节点产生;

提取所述区块里面的签名信息,并从签名信息中提取身份识别信息和数字签名,如果所述身份识别信息在预设的许可列表内,则身份识别验证通过,如图4所示;然后使用签名校验方法,通过身份识别信息对数字签名做校验;身份识别信息及签名校验都通过,则判定所述区块由许可节点产生;

本发明实施例中的另一种验证区块是否为许可节点产生的方法为:提取所述区块里面的签名信息,并从签名信息中提取身份识别信息和数字签名,具体的,此身份识别信息为证书形式;读取证书的签发者,如果签发者在预设的许可列表内,则身份识别验证通过,如图5所示;然后使用签名校验方法对数字签名做校验;身份识别信息及签名校验都通过,则判定所述区块由许可节点产生;

需要注意的是,会有恶意者不断的发送没有携带签名信息的区块,当接收节点检测到此种区块时,直接将此区块判定为由非许可节点产生。

步骤s203:当所述区块由许可节点产生时,接受所述区块;

当接收节点确定所述区块由许可节点产生后,将所述区块存放在本地的区块链中,否则直接丢弃。

基于上述思想,本发明实施例三提供了一种区块链的区块装置,如图6所示,该装置300包括:

区块生成模块301,用于实时监听区块链网络上的交易数据,在收到区块链上的一批交易后,将这些交易数据打包并生成一个新的区块;

安全硬件模块302,它里面封装了节点身份识别的私钥部分,私钥无法被提取出来,当安全硬件模块需要对所述新的区块做签名时,读取私钥,并使用签名算法生成数字签名;

区块签名合成模块303,读取节点文件系统中存放的身份识别信息,与安全硬件模块产生的数字签名合并为签名信息,然后将所述签名信息添加到所述新的区块中,生成新的签名区块;

区块发送模块304,用于把所述新的签名区块通过区块链网络发送出去。

本发明上述实施例中的装置是与本发明上述实施例中的方法对应的产品,本发明上述实施例中的方法的每一个步骤均由本发明上述实施例中的装置的部件或模块完成,因此对于相同的部分不再进行赘述。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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