创世区块防伪方法及装置与流程

文档序号:11180381阅读:369来源:国知局
创世区块防伪方法及装置与流程

本发明实施例涉及通信技术领域,尤其涉及一种创世区块防伪方法及装置。



背景技术:

区块链是一种去中心化的数据库,它包含一张被称为区块的列表,有着持续增长并且排列整齐的记录。在一个新的区块链应用发展初期,由于参与者比较少,整体区块的难度值只能比较低,同时区块的个数也比较少,很容易被攻击者连同创世区块一起伪造,从而伪造出一条全新的区块链来。

如果创世区块被伪造,则创世区块中的公钥可能被攻击者修改为自己的公钥,并采用攻击者的私钥进行签名,则参与者即便验证也会通过,无法检测出来。特别是对于区块链发展初期,新加入的参与者很可能一开始就会获得伪造的区块链,从而产生迷惑。这样在区块链中出现两条完全不同的链,一部分节点维护伪造的链,而另一部分节点维护正常的链。这里面的关键是有两个完全不同的创世区块。

现有技术中还没有防止创世区块被伪造的方法。



技术实现要素:

本发明实施例提供一种创世区块防伪方法及装置,以使攻击者伪造创世区块失败。

本发明实施例的一个方面是提供一种创世区块防伪方法,包括:

预加入区块链网络的新节点向种子节点发送请求加入所述区块链网络的请求信息,所述新节点预先存储有所述种子节点的地址信息;

所述新节点接收所述种子节点反馈的创世区块,所述创世区块包括创始节点的公钥,所述创始节点是创建所述创世区块的节点,所述创始节点用于对区块链中的区块进行签名;

所述新节点根据所述创始节点的公钥对所述区块链中的区块进行验证。

本发明实施例的另一个方面是提供一种创世区块防伪装置,所述创世区块防伪装置位于预加入区块链网络的新节点,包括:

发送模块,用于向种子节点发送请求加入所述区块链网络的请求信息,所述新节点预先存储有所述种子节点的地址信息;

接收模块,用于接收所述种子节点反馈的创世区块,所述创世区块包括创始节点的公钥,所述创始节点是创建所述创世区块的节点,所述创始节点用于对区块链中的区块进行签名;

验证模块,用于根据所述创始节点的公钥对所述区块链中的区块进行验证。

本发明实施例提供的创世区块防伪方法及装置,通过种子节点分发创始节点创建的创世区块,相比于现有技术中,创始节点直接分发创世区块,从而保证了创始节点的ip地址不会被公布出来,避免了创始节点被黑客攻击;另外,种子节点的地址固化在区块链网络中的其他节点的客户端软件中,可以让区块链网络中的其他节点从预先指定好的安全节点获取创世区块,提高了节点获取创世区块的安全性;此外,根据该创世区块中的创始节点的公钥来对该条区块链进行真实性验证,提高了区块的安全性。从而使攻击者伪造创世区块失败。

附图说明

图1为本发明实施例提供的创世区块防伪方法流程图;

图2为本发明实施例提供的创世区块防伪方法适用的网络架构图;

图3为本发明实施例提供的创世区块防伪装置的结构图。

具体实施方式

图1为本发明实施例提供的创世区块防伪方法流程图;图2为本发明实施例提供的创世区块防伪方法适用的网络架构图。本发明实施例针对创世区块容易被伪造,提供了创世区块防伪方法,该方法具体步骤如下:

步骤s101、预加入区块链网络的新节点向种子节点发送请求加入所述区块链网络的请求信息,所述新节点预先存储有所述种子节点的地址信息。

如图2所示,创始节点21和种子节点22分别连接区块链网络23,创始节点21用于创建创世区块,该创世区块具体是比特币世界的第一个区块,新版本的比特币系统将它设定为0号区块,而旧版本的比特币系统设定它的序号为1。本实施例中的创世区块可以理解为区块链世界的第一个诞生的区块。创始节点21可以将自己的公钥发布在创世区块中,创始节点21通过将自己的公钥发布在创世区块中来申明自己的签名验证密钥。所有的参与者都可以从创世区块中提取该验证密钥,并对创始节点21签名后的区块进行验证。可选的,在区块链网络23中,创始节点21可以有一个或者多个,若创始节点21有多个,则多个创始节点21采用相同的公私钥对。

创始节点21将其创建的创世区块发送给种子节点22,种子节点22的个数可以是多个,即创始节点21可以将其创建的创世区块发送给多个种子节点,由多个种子节点22将创世区块发送给其他的节点,如此可以保证创始节点21的ip地址不会被公布出来,从而使得创始节点21可以作为普通的节点隐藏在区块链网络23中,避免创始节点21被黑客攻击。

另外,创始节点21作为普通的节点隐藏在区块链网络23中,接收到种子节点22同步来的记账人生成的区块后,根据签名规则对该区块进行签名,然后再将签名后的区块广播给其他的节点,或者也可以广播给各种子节点,然后由各种子节点将该新生成的区块广播出去。如此创始节点21很难被发现,另外,在本实施例中,假定创始节点21的私钥是很安全的,创始节点21的私钥被泄露的可能性很小。

此外,一个区块链网络中的种子节点的地址可以被公布给区块链网络中的其他节点,同时,也可以固化在区块链网络中的其他节点的客户端软件中。

若某一节点想加入区块链网络,如图2所示,24表示预加入区块链网络的新节点,新节点24作为一个新加入的节点,先安装该区块链的客户端软件,然后根据该客户端软件内部固化的种子节点地址,向种子节点22发送请求加入区块链网络23的请求信息。

步骤s102、所述新节点接收所述种子节点反馈的创世区块,所述创世区块包括创始节点的公钥,所述创始节点是创建所述创世区块的节点,所述创始节点用于对区块链中的区块进行签名。

种子节点22接收到新节点24发送的请求加入区块链网络23的请求信息后,种子节点22将创世区块发送给新节点24,创世区块中包括创始节点21的公钥。

另外,所述新节点接收所述种子节点发送的邻居节点列表,所述邻居节点列表中包括所述新节点的邻居节点的标识信息。所述新节点根据所述邻居节点列表,向所述邻居节点发送请求获取区块链账本的请求信息。所述邻居节点列表中邻居节点的标识信息是按照所述新节点的邻居节点的优先级排序的;所述邻居节点的优先级是根据所述邻居节点的ip地址所在的网段和所述新节点的ip地址所在的网段确定的。

新节点24向种子节点22发送请求加入所述区块链网络的请求信息时,种子节点22还可以根据新节点24的ip地址对应的网段,确定新节点24的邻居节点,种子节点22向新节点24发送创世区块的同时,还可以向新节点24一并下发邻居节点列表,该邻居节点列表中包括新节点24的邻居节点的标识信息,可选的,邻居节点列表中邻居节点的标识信息是按照所述新节点的邻居节点的优先级排序的,邻居节点的优先级是根据所述邻居节点的ip地址所在的网段和所述新节点的ip地址所在的网段确定的,例如,与所述新节点的ip地址在同一个网段的邻居节点的优先级较高。

新节点24从邻居节点列表中获取第一个邻居节点的标识信息,可选的,第一个邻居节点的优先级最高,并向邻居节点列表中的第一个邻居节点发送请求获取区块链账本的请求信息,如果预设时间之后,新节点24没有接收到优先级最高的邻居节点返回的区块链账本,则从邻居节点列表中选择第二个邻居节点,该第二个邻居节点的优先级低于第一个邻居节点的优先级,并向该第二个邻居节点发送请求获取区块链账本的请求信息,如果预设时间之后,新节点24没有接收到该第二个邻居节点返回的区块链账本,则从邻居节点列表中选择第三个邻居节点,依次类推。

步骤s103、所述新节点根据所述创始节点的公钥对所述区块链中的区块进行验证。

在本实施例中,新节点24的邻居节点25还可以向新节点24发送区块,新节点24将邻居节点25发送的区块与创世区块根据这些区块的哈希值来进行关联,得到一整条区块链,进一步的,新节点24根据该创世区块中的创始节点21的公钥来对该条区块链进行真实性验证,具体的,新节点24从创世区块中获取创始节点21的公钥,并根据创始节点21的公钥对区块链中的区块进行验证,如果所述新节点根据所述创始节点的公钥对所述区块链中的区块验证通过,则确定所述区块为合法的区块;如果所述新节点根据所述创始节点的公钥对所述区块链中的区块验证失败,则确定所述区块为伪造的区块。

本发明实施例通过种子节点分发创始节点创建的创世区块,相比于现有技术中,创始节点直接分发创世区块,从而保证了创始节点的ip地址不会被公布出来,避免了创始节点被黑客攻击;另外,种子节点的地址固化在区块链网络中的其他节点的客户端软件中,可以让区块链网络中的其他节点从预先指定好的安全节点获取创世区块,提高了节点获取创世区块的安全性;此外,根据该创世区块中的创始节点的公钥来对该条区块链进行真实性验证,提高了区块的安全性。从而使攻击者伪造创世区块失败。

图3为本发明实施例提供的创世区块防伪装置的结构图。本发明实施例提供的创世区块防伪装置可以执行创世区块防伪方法实施例提供的处理流程,创世区块防伪装置位于上述实施例所述的预加入区块链网络的新节点中,如图3所示,创世区块防伪装置30包括:发送模块31、接收模块32、验证模块33,其中,发送模块31用于向种子节点发送请求加入所述区块链网络的请求信息,所述新节点预先存储有所述种子节点的地址信息;接收模块32用于接收所述种子节点反馈的创世区块,所述创世区块包括创始节点的公钥,所述创始节点是创建所述创世区块的节点,所述创始节点用于对区块链中的区块进行签名;验证模块33用于根据所述创始节点的公钥对所述区块链中的区块进行验证。

本发明实施例提供的创世区块防伪装置可以具体用于执行上述图1所提供的方法实施例,具体功能此处不再赘述。

本发明实施例通过种子节点分发创始节点创建的创世区块,相比于现有技术中,创始节点直接分发创世区块,从而保证了创始节点的ip地址不会被公布出来,避免了创始节点被黑客攻击;另外,种子节点的地址固化在区块链网络中的其他节点的客户端软件中,可以让区块链网络中的其他节点从预先指定好的安全节点获取创世区块,提高了节点获取创世区块的安全性;此外,根据该创世区块中的创始节点的公钥来对该条区块链进行真实性验证,提高了区块的安全性。从而使攻击者伪造创世区块失败。

在上述实施例的基础上,接收模块32还用于:接收所述种子节点发送的邻居节点列表,所述邻居节点列表中包括所述新节点的邻居节点的标识信息。发送模块31还用于:根据所述邻居节点列表,向所述邻居节点发送请求获取区块链账本的请求信息。所述邻居节点列表中邻居节点的标识信息是按照所述新节点的邻居节点的优先级排序的;所述邻居节点的优先级是根据所述邻居节点的ip地址所在的网段和所述新节点的ip地址所在的网段确定的。验证模块33具体用于:如果所述新节点根据所述创始节点的公钥对所述区块链中的区块验证通过,则确定所述区块为合法的区块;如果所述新节点根据所述创始节点的公钥对所述区块链中的区块验证失败,则确定所述区块为伪造的区块。

本发明实施例提供的创世区块防伪装置可以具体用于执行上述图1所提供的方法实施例,具体功能此处不再赘述。

本发明实施例通过种子节点分发创始节点创建的创世区块,相比于现有技术中,创始节点直接分发创世区块,从而保证了创始节点的ip地址不会被公布出来,避免了创始节点被黑客攻击;另外,种子节点的地址固化在区块链网络中的其他节点的客户端软件中,可以让区块链网络中的其他节点从预先指定好的安全节点获取创世区块,提高了节点获取创世区块的安全性;此外,根据该创世区块中的创始节点的公钥来对该条区块链进行真实性验证,提高了区块的安全性。从而使攻击者伪造创世区块失败。

综上所述,本发明实施例通过种子节点分发创始节点创建的创世区块,相比于现有技术中,创始节点直接分发创世区块,从而保证了创始节点的ip地址不会被公布出来,避免了创始节点被黑客攻击;另外,种子节点的地址固化在区块链网络中的其他节点的客户端软件中,可以让区块链网络中的其他节点从预先指定好的安全节点获取创世区块,提高了节点获取创世区块的安全性;此外,根据该创世区块中的创始节点的公钥来对该条区块链进行真实性验证,提高了区块的安全性。从而使攻击者伪造创世区块失败。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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