发明内容
本公开的目的是提供一种区块生成系统、方法、服务器以及工作量证明装置,已解决上述相关技术问题。
为了实现上述目的,本公开实施例的第一方面,提供一种区块生成系统,包括区块链节点、服务器、以及工作量证明装置,所述区块链节点与所述服务器相连,所述服务器与所述工作量证明装置相连;
所述服务器用于,响应于接收到任一区块链节点发送的区块数据,将所述区块数据发送给目标工作量证明装置;并且,响应于接收到所述目标工作量证明装置返回的工作量证明数据,将所述工作量证明数据返回给该区块链节点,以便该区块链节点根据所述区块数据以及所述工作量证明数据生成区块。
可选地,所述区块链节点与所述服务器远程通信相连,所述工作量证明装置通过插接的方式与所述服务器相连。
可选地,所述区块生成系统中的一个所述服务器与多个所述区块链节点相连,和/或,一个所述服务器与多个所述工作量证明装置相连。
可选地,所述服务器用于,响应于接收到任一区块链节点发送的区块数据,从与所述服务器相连的多个所述工作量证明装置中,根据每一所述工作量证明装置的工作状态,确定目标工作量证明装置,并将所述区块数据发送给目标工作量证明装置。
可选地,每一所述工作量证明装置内置有用于表征所述工作量证明装置身份的私钥,所述工作量证明装置向所述服务器返回的工作量证明数据是通过所述工作量证明装置自身的私钥签名的工作量证明数据。
可选地,所述工作量证明装置用于,响应于接收到区块数据,根据区块链网络中当前的区块产生速度,确定一随机数范围,并通过随机数生成器产生随机数,当产生的随机数处于所述随机数范围时,向所述服务器返回该随机数,所述工作量证明数据包括该随机数。
本公开实施例的第二方面,提供一种区块生成方法,所述方法应用于区块生成系统,所述区块生成系统包括区块链节点、服务器、以及工作量证明装置,所述区块链节点与所述服务器相连,所述服务器与所述工作量证明装置相连;
所述方法包括:
所述服务器响应于接收到任一区块链节点发送的区块数据,将所述区块数据发送给目标工作量证明装置;并,
响应于接收到所述目标工作量证明装置返回的工作量证明数据,将所述工作量证明数据返回给该区块链节点,以便该区块链节点根据所述区块数据以及所述工作量证明数据生成区块。
可选地,所述方法还包括:
所述工作量证明装置响应于接收到区块数据,根据区块链网络中当前的区块产生速度,确定一随机数范围;并,
通过随机数生成器产生随机数,当产生的随机数处于所述随机数范围时,向所述服务器返回该随机数,所述工作量证明数据包括该随机数。
本公开实施例的第三方面,提供一种服务器,所述服务器被配置为上述第一方面中任一项所述的区块生成系统中的服务器。
本公开实施例的第四方面,提供一种工作量证明装置,所述工作量证明装置被配置上述第一方面中任一项所述的区块生成系统中的工作量证明装置。
上述技术方案至少可以包括如下技术效果:
服务器在接收到区块链节点发送的区块数据后可以将所述区块数据发送给目标工作量证明装置,并在目标工作量证明装置中进行工作量证明。进一步的,服务器还可以将所述目标工作量证明装置返回的工作量数据发送至所述区块链节点,以便该区块链节点根据所述区块数据以及工作量证明数据生成区块。也就是说,采用这样的方式,工作量证明不再在区块节点中进行,而是在工作量证明装置中进行,从而能够解决区块链节点设备之间的计算能力差异问题,增大51%攻击的实现难度。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
为了使本领域技术人员更容易理解本公开实施例所提供的技术方案,下面首先对涉及到的相关技术进行简单介绍。
区块链是由区块链网络中所有节点共同参与维护的去中心化分布式数据库系统,它是由一系列基于密码学方法产生的数据块组成,每个数据块即为区块链中的一个区块。根据产生时间的先后顺序,区块被有序地链接在一起,形成一个数据链条,被形象地称为区块链。
在基于PoW(Proof of Work,工作量证明)的区块产生机制中,有效区块的产生要求区块生成装置正确解出一个需要计算量的数学难题,一般情况下是对含有Nonce(Numberonce,非重复的随机数值)的区块头部数据进行哈希运算,通过对Nonce进行调整,使得哈希结果满足特定条件,并要求生成的哈希值满足特定条件,如前n个位为0x0。在计算出满足特定条件的哈希结果后,节点设备将含有Nonce的区块头部数据和区块数据组合成区块进行广播,其它节点设备认可此区块符合协议定义的格式和标准后,即可将该区块添加到区块链上。
目前,计算区块的节点使用的硬件可以包括CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)、FPGA(Field Programmable GateArray,现场可编程逻辑门阵列)以及ASIC(Application-specific integrated circuit,专用芯片)等等。由于参与区块计算的节点所使用的硬件不同,不同节点之间所拥有的计算能力差距巨大。从理论上来说,掌控区块链中超过51%计算能力的节点便能够对区块链进行“51%攻击”,从而阻碍区块链的正常运行,对区块链的数据进行破坏。并且,随着单个节点的计算能力的增长,单一或者少数节点一起可以拥有极大的计算能力。这样,在整个区块链网络中各节点的计算能力差异较大的情况下,形成“51%攻击”的条件已经不难达成,威胁了区块链网络的安全性。此外,相关技术中,在解决区块生成装置之间的计算能力差异时,所采用的方法灵活性还较低,实施难度也较大。
为此,本公开提供一种区块生成系统,包括区块链节点101、服务器102、以及工作量证明装置103,所述区块链节点101与所述服务器102相连,所述服务器102与所述工作量证明装置103相连;
所述服务器102用于,响应于接收到任一区块链节点101发送的区块数据,将所述区块数据发送给目标工作量证明装置103;并且,响应于接收到所述目标工作量证明装置103返回的工作量证明数据,将所述工作量证明数据返回给该区块链节点101,以便该区块链节点101根据所述区块数据以及所述工作量证明数据生成区块。
具体来说,所述区块数据可以包括区块链网络中的其他节点设备广播的交易数据。例如,所述区块链节点101可以通过网络接口接收区块链网络中的其他节点设备广播的交易数据,并在获取到交易数据后根据该交易数据生成区块数据,将所述区块数据发送至服务器102。此外,参照图1所示出的一种区块生成系统的结构示意图。所述区块链节点101中运行有区块链节点主程序,用于执行区块链的相关任务,例如区块链节点的数据维护、产生区块、验证区块、同步区块等等。值得注意的是,所述区块链节点主程序可以不包括工作量证明部分。
对应的,工作量证明装置103可以用于执行相应的工作量证明算法,以得到对应的工作量证明数据,起到工作量证明的效果。也就是说,在所述区块生成系统中,区块链节点101本身不进行工作量证明,而是通过所述工作量证明装置103来进行工作量证明,从而解决了不同区块链节点101的计算能力差异问题。
应当理解的是,工作量证明的算法以及对应的工作量证明数据在不同的实施场景中可以是不同的。比如,在传统区块产生机制中,所述工作量证明算法可以是解出一个数学难题,例如是对含有Nonce的区块头部数据进行哈希运算,通过对Nonce进行调整,使得哈希结果满足特定条件(如前n个位为0x0)。在这种情况下,所述工作量证明装置103可以用于执行上述过程以得到工作量证明数据,其中,所述工作量证明数据可以包括所述Nonce值。
采用上述技术方案,服务器102在接收到区块链节点101发送的区块数据后可以将所述区块数据发送给目标工作量证明装置103,并在目标工作量证明装置103中进行工作量证明。进一步的,服务器102还可以将所述目标工作量证明装置103返回的工作量数据发送至所述区块链节点101,以便该区块链节点101根据所述区块数据以及工作量证明数据生成区块。也就是说,采用这样的方式,工作量证明不再在区块节点中进行,而是在工作量证明装置103中进行,从而能够解决区块链节点101设备之间的计算能力差异问题,增大51%攻击的实现难度。
此外值得注意的是,随着技术的发展,进行工作量证明的装置的计算能力也在不断的提升。在此基础上,为了满足对应的区块生成速率,往往需要增加解题的难度,最终导致大量的计算资源不停的计算,造成资源浪费。
因此,在一实施例中,还可以对所述工作量证明装置103的计算能力进行限制(例如降低工作量计算装置的计算能力),以此来满足对应的区块生成速率,同时减少额外的计算过程,节约电力资源。
在另一实施例中,所述区块生成系统中的所述区块链节点101也可以包括工作量证明功能,从而能够在所述工作量证明装置103故障、升级维护等过程中提供相应的工作量证明功能。
可选的,所述区块链节点101与所述服务器102远程通信相连,所述工作量证明装置103通过插接的方式与所述服务器102相连。
参照图1,所述区块链节点101可以通过网络与所述服务器102通信,所述工作量证明装置103可以通过USB(Universal Serial Bus,通用串行总线)与所述服务器102连接,从而有利于对所述工作量证明装置103进行管理维护。
此外,在一些实施例中,所述工作量证明装置103也可以是所述服务器102的一部分,或是与所述服务器102建立通信连接的独立装置。具体地,所述工作量证明装置103和所述服务器102之间可以通过不同的数据总线进行连接,例如,USB(Universal Serial Bus,通用串行总线)、Ethernet(以太网)、Bluetooth(蓝牙)、Wi-Fi(Wireless-Fidelity)等。
在一种可能的实施方式中,所述区块生成系统中的一个服务器102还可以与多个所述工作量证明装置103相连。这样,所述服务器102在接收到区块链节点101发送的区块数据时,可以根据各工作量证明装置103的运行状态来对工作量证明装置103的任务进行调度,确定接收到的区块数据的发送目标。例如,在对工作量证明装置103进行分批维护时,可以将所述区块数据发送至还未维护的工作量证明装置103,由该工作量证明装置103执行相应的处理任务。
在另一种可能的实施方式中,参照图2所示出的另一种区块生成系统的结构示意图,所述区块生成系统包括多个区块链节点(图中以两个区块链节点示例),所述区块生成系统中的一个服务器102也可以与多个所述区块链节点相连,所述服务器102还可以与多个工作量证明装置相连。
也就是说,所述服务器102可以同时为多个区块链节点提供服务,从而降低了工作量证明装置与运行区块链节点主程序的区块链节点的耦合度,便于对工作量证明装置进行管理和维护,同时也增加了所述区块生成系统运行的灵活性。
此外,针对服务器102对应多个区块链节点以及多个工作量证明装置的情况,所述服务器102还可以用于:
响应于接收到任一区块链节点101发送的区块数据,从与所述服务器102相连的多个所述工作量证明装置103中,根据每一所述工作量证明装置103的工作状态,确定目标工作量证明装置103,并将所述区块数据发送给目标工作量证明装置103。
以图2为例,所述区块生成系统包括区块链节点101、区块链节点104、服务器102、以及多个工作量证明装置(图中仅示出工作量证明装置103、工作量证明装置105)。
所述区块链节点101和区块链节点104可以将区块链中其他节点的交易数据进行打包,得到第一区块数据以及第二区块数据。此外,所述区块链节点101和区块链节点104还可以分别通过SSH打洞的方式建立与服务器102的加密传输通道,并在各自的加密传输通道建立完成之后将对应的区块数据发送至服务器102。
所述服务器102在接收到任一区块数据之后,可以对与该服务器102相连的各工作量证明装置的状态进行检测。并,从处于空闲状态且正常运行的工作量证明装置中确定目标工作量证明装置,将该区块数据发送至对应的目标工作量证明装置。示例地,所述服务器102首先接收到所述第一区块数据,则所述服务器102可以将该第一区块数据发送至处于空闲态的工作量证明装置103。这样,所述服务器102再接收到所述第二区块数据时,则需要从所述工作量证明装置103之外的工作量证明装置中确定对应于所述第二区块数据的目标工作量证明装置,并将所述第二区块数据发送至所述目标工作量证明装置。
在一种可能的实施方式中,每一所述工作量证明装置103还内置有用于表征所述工作量证明装置103身份的私钥,所述工作量证明装置103向所述服务器102返回的工作量证明数据是通过所述工作量证明装置103自身的私钥签名的工作量证明数据。
其中,每一所述工作量证明装置103内置的私钥信息均不同,并且,工作量证明装置103的公钥信息也可以通过区块链中特定的节点广播至区块链中的其他节点。这样,区块链节点101在接收到服务器102返回的工作量证明数据后,可以通过所述工作量证明装置103的公钥对所述工作量证明数据进行签名认证,以确定所述工作量证明数据是否合法。类似的,区块链中的其他节点在接收到某一节点设备发布的签名区块后,也可以采用相应的公钥对所述区块以及所述区块所包括的工作量证明数据进行签名认证。其中,若区块的签名认证成功,则表明发布的签名区块是来自于合法的区块链节点,即表明生成该区块的节点具备向区块链中添加新区块的权利。进一步的,还可以对区块所包括的工作量证明数据进行验证,以及验证区块是否符合协议定义的格式和标准,从而确定所述工作量证明数据是否来自于合法的工作量证明装置。在具体实施时,若上述认证环节中的任一环节认证失败,区块链中的其他节点可以拒绝在区块链中添加该区块,从而能够保证区块链的安全性。
在一实施例中,区块链网络还可以仅对计算能力一致或者近似的工作量证明装置103分配公钥和私钥,并对工作量证明装置103生成的工作量证明数据进行签名认证,从而确保了各个节点计算能力的一致性,避免单个节点或者少数节点一起具有超越阈值得计算能力,进而避免了“51%攻击”的形成,提升了区块链的安全性。
举例来讲,区块链网络在初始化时,可以只为采用相同型号和规格的工作量证明装置103分配私钥和公钥。初始化完毕后,在添加新的工作量证明装置103时,也可以只允许计算能力相近的工作量证明装置103加入,其中,区块链网络添加新的工作量证明装置103可以通过特定的节点设备进行,由该节点设备动态的向区块链广播新添加的区块生成装置的公钥。
可选的,所述工作量证明装置103用于,响应于接收到区块数据,根据区块链网络中当前的区块产生速度,确定一随机数范围,并通过随机数生成器产生随机数,当产生的随机数处于所述随机数范围时,向所述服务器102返回该随机数,所述工作量证明数据包括该随机数。
其中,工作量证明装置103针对相同的区块产生速度,可以产生相同的随机数范围。这样,与区块链中通常采用的PoW工作量证明机制不同,本公开实施例中,其他区块节点在获取到区块中的所述随机数后,即可对所述随机数进行判断。其中,若所述随机数位于该随机数范围内,即可认为所述区块通过工作量证明验证,若该目标随机数不处于该随机数范围内,即可认为区块未通过工作量证明验证,可拒绝将该区块添加到区块链中。
值得说明的是,为了对区块链网络中生成区块的速率进行调控,在当前产生区块的速度过慢时,对应生成的随机数范围可以相对较大,从而提高随机数生成器产生位于该随机数范围的概率,进而提高产生区块的速度;在当前产生区块的速度过快时,对应生成的随机数范围可以相对较小,从而减小随机数生成器产生位于该随机数范围的概率,进而降低产生区块的速度。
此外,上述举例说明的产生随机数的算法均可以集成在区块生成装置中的随机数生成器中,从而对算法进行保护。
本公开还提供一种区块生成方法,所述方法应用于如图1或图2所示的区块生成系统,所述区块生成系统包括区块链节点101、服务器102、以及工作量证明装置103,所述区块链节点101与所述服务器102相连,所述服务器102与所述工作量证明装置103相连;
参照图3所示出的一种区块生成方法的流程示意图,所述方法包括:
S31,所述服务器102响应于接收到任一区块链节点101发送的区块数据,将所述区块数据发送给目标工作量证明装置103。
其中,所述区块数据可以包括区块链网络中的其他节点设备广播的交易数据。例如,所述区块链节点101可以通过网络接口接收区块链网络中的其他节点设备广播的交易数据,并在获取到交易数据后根据该交易数据生成区块数据,将所述区块数据发送至服务器102。
S32,响应于接收到所述目标工作量证明装置103返回的工作量证明数据,将所述工作量证明数据返回给该区块链节点101,以便该区块链节点101根据所述区块数据以及所述工作量证明数据生成区块。
参照图1所示出的一种区块生成系统的结构示意图,所述区块链节点101中运行有区块链节点101主程序,用于执行区块链的相关任务,例如区块链节点101的数据维护、产生区块、验证区块、同步区块等等。值得注意的是,所述区块链节点101主程序可以不包括工作量证明部分。
对应的,工作量证明装置103可以用于执行相应的工作量证明算法,以得到对应的工作量证明数据,起到工作量证明的效果。也就是说,在所述区块生成系统中,区块链节点101本身不进行工作量证明,而是通过所述工作量证明装置103来进行工作量证明,从而解决不同区块链节点101的计算能力差异问题。
应当理解的是,工作量证明的算法以及对应的工作量证明数据在不同的实施场景中可以是不同的。比如,在传统区块产生机制中,所述工作量证明算法可以是解出一个数学难题,例如是对含有Nonce的区块头部数据进行哈希运算,通过对Nonce进行调整,使得哈希结果满足特定条件(如前n个位为0x0)。在这种情况下,所述工作量证明装置103可以用于执行上述过程以得到工作量证明数据,其中,所述工作量证明数据可以包括所述Nonce值。
采用上述技术方案,服务器102在接收到区块链节点101发送的区块数据后可以将所述区块数据发送给目标工作量证明装置103,并在目标工作量证明装置103中进行工作量证明。进一步的,服务器102还可以将所述目标工作量证明装置103返回的工作量数据发送至所述区块链节点101,以便该区块链节点101根据所述区块数据以及工作量证明数据生成区块。也就是说,采用这样的方式,工作量证明不再在区块节点中进行,而是在工作量证明装置103中进行,从而能够解决区块链节点101设备之间的计算能力差异问题,增大51%攻击的实现难度。
在一种可能的实施方式中,所述方法还包括:
所述工作量证明装置103响应于接收到区块数据,根据区块链网络中当前的区块产生速度,确定一随机数范围;并,
通过随机数生成器产生随机数,当产生的随机数处于所述随机数范围时,向所述服务器102返回该随机数,所述工作量证明数据包括该随机数。
具体来说,工作量证明装置103针对相同的区块产生速度,可以产生相同的随机数范围。这样,与区块链中通常采用的PoW工作量证明机制不同,本公开实施例中,其他区块节点在获取到区块中的所述随机数后,即可对所述随机数进行判断。其中,若所述随机数位于该随机数范围内,即可认为所述区块通过工作量证明验证,若该目标随机数不处于该随机数范围内,即可认为该区块未通过工作量证明验证,可拒绝将该区块添加到区块链中。通过这样的方式,解决了POW的运算能力集中的问题。
此外,为了对区块链网络中生成区块的速率进行调控,在当前产生区块的速度过慢时,对应生成的随机数范围可以相对较大,从而提高随机数生成器产生位于该随机数范围的概率,进而提高产生区块的速度;在当前产生区块的速度过快时,对应生成的随机数范围可以相对较小,从而减小随机数生成器产生位于该随机数范围的概率,进而降低产生区块的速度。也就是说,通过这样的方式还能够对区块的生成速度进行灵活调整。
关于上述方法实施例中所涉及的各装置,其功能已经在有关该装置的系统实施例中进行了详细描述,此处将不做详细阐述说明。
本公开还一种服务器,所述服务器被配置为如图1或图2所示的区块生成系统中的服务器102。
本公开还提供一种工作量证明装置,所述工作量证明装置被配置为如如图1或图2所示的区块生成系统中的工作量证明装置。
图4是根据一示例性实施例示出的一种电子设备400的框图。例如,电子设备400可以被提供为如图1或图2所示的服务器102。参照图4,电子设备400包括处理器422,其数量可以为一个或多个,以及存储器432,用于存储可由处理器422执行的计算机程序。存储器432中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器422可以被配置为执行该计算机程序,以执行上述的区块生成方法。
另外,电子设备400还可以包括电源组件426和通信组件450,该电源组件426可以被配置为执行电子设备400的电源管理,该通信组件450可以被配置为实现电子设备400的通信,例如,有线或无线通信。此外,该电子设备400还可以包括输入/输出(I/O)接口458。电子设备400可以操作基于存储在存储器432的操作系统,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的区块生成方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器432,上述程序指令可由电子设备400的处理器422执行以完成上述的区块生成方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的区块生成方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。