区块打包、广播方法和系统、设备及存储介质技术方案

技术编号:22310723 阅读:21 留言:0更新日期:2019-10-16 10:33
本发明专利技术公开了区块打包、广播方法和系统、设备及存储介质,属于区块链技术领域。在所述第一区块链节点收到第一区块后,记录第一区块和发送第一区块给第一区块链节点的节点;检测第一区块链节点是否存在第一区块;若存在,则广播第一区块到除发送第一区块给第一区块链节点的节点以外,与第一区块链节点连接的的至少一个第二区块链节点;若不存在,则缓存第二区块并验证,若验证通过,则广播第一区块到除发送第一区块给第一区块链节点的节点以外,与第一区块链节点连接的的至少一个第二区块链节点;针对现有技术种区块广播占用区块链网络带宽资源,影响区块链网络的稳定性;本申请的技术方案可以减少区块广播对区块链网络带宽资源的占用。

【技术实现步骤摘要】
区块打包、广播方法和系统、设备及存储介质
本专利技术涉及区块链
,尤其涉及区块打包、广播方法和系统、设备及存储介质。
技术介绍
现有的区块链项目种无论采用哪种共识算法,在区块被打包完成后,均要进行区块广播,而区块广播的区块内容包括区块头,以及区块中的交易原始信息内容;而交易内容较占空间,那么对于包含有多笔交易的区块而言占用空间更大。现有区块链项目如复杂美chain33架构的底层区块链中加入了交易组(详见申请号为201810695527.9的中国专利技术专利申请)的概念。交易组是将多笔交易组装成一笔特殊的交易缓存在Mempool模块中,因一笔交易的大小至少有250字节,所以对于包含了多笔交易的交易组而言,其大小达500字节以上。那么对于包含有多个交易组和多笔交易的区块而言,占用空间更大。现有的区块链项目方案中的一个区块链节点最多可以配置连接25个区块链节点,这种连接关系在区块广播时,广播的是区块的整个内容,每个区块链节点可能会收到25个从不同的区块链节点广播来的相同区块内容,一个包含有交易组的较大区块被重复地广播,区块占用空间越大,在区块广播的过程中无疑会占用更多的区块链网络带宽资源,会进一步占用区块链网络带宽资源,影响区块链网络的稳定性。
技术实现思路
1.专利技术要解决的技术问题为了克服上述技术问题,本专利技术提供了区块打包、广播方法和系统、设备及存储介质。可以减少对区块链网络带宽资源的占用。2.技术方案为解决上述问题,本专利技术提供的技术方案为:第一方面,本专利技术提出一种区块打包方法,包括:将区块头、至少一个交易组的所有子交易和第一区块的区块大小打包成第一区块;所述区块头的默克尔树根节点哈希值由至少一个交易组的所有子交易和挖矿交易计算得到。进一步地改进是,所述第一区块除包括至少一个交易组外,还包括至少一个交易,所述方法为:将区块头、至少一个交易、至少一个交易组的所有子交易和第一区块的区块大小打包成第一区块;所述区块头的默克尔树根节点由至少一个交易、至少一个交易组的所有子交易和挖矿交易计算得到。进一步地改进是,所述第一区块还包括交易计数器;将区块头、交易计数器、至少一个交易组和第一区块的区块大小打包成第一区块。进一步地改进是,所述区块头包括由父区块哈希值、时间戳和默克尔树根节点哈希值构造形成。进一步地改进是,所述的交易组包括子交易个数、每个子交易签名、每个子交易及其哈希值、每个子交易的交易费。进一步地改进是,当第一区块的区块大小SI>区块大小阈值TH时,将区块头、交易组标识列表、第一区块的区块大小打包成第二区块;其中,交易组标识列表包括挖矿交易,以及足以唯一识别交易组的标识。进一步地改进是,所述交易组哈希值为交易组的子交易个数和每个子交易哈希值;所述足以唯一识别交易组的标识包括:交易组中所有交易哈希值或其部分字节,或交易组中任一交易哈希值或其部分字节,或交易组中各交易的ID号或名称,或交易组中任一交易的ID号或名称,或交易组ID号,或交易组名称。第二方面,本专利技术提出一种区块广播方法,根据以上所述的一种区块打包方法,适用于挖矿节点,广播第一区块给与挖矿节点连接的至少一个第一区块链节点。进一步地改进是,判断第一区块的区块大小SI≤区块大小阈值TH是否成立;若是,则广播第一区块给与挖矿节点连接的至少一个第一区块链节点;若否,则广播第二区块给与挖矿节点连接的至少一个第一区块链节点。第三方面,本专利技术提出一种区块广播方法,适用于非挖矿节点,根据以上所述的一种区块打包方法,以及以上所述的一种区块广播方法,包括:在所述第一区块链节点收到第一区块后,记录第一区块和发送第一区块给第一区块链节点的节点;检测第一区块链节点是否存在第一区块;若存在,则广播第一区块到除发送第一区块给第一区块链节点的节点以外,与第一区块链节点连接的的至少一个第二区块链节点;若不存在,则缓存第二区块并验证,若验证通过,则广播第一区块到除发送第一区块给第一区块链节点的节点以外,与第一区块链节点连接的的至少一个第二区块链节点;或,第一区块链节点收到第二区块后,记录第二区块和发送第二区块给第一区块链节点的节点,检测第一区块链节点是否存在第二区块;若存在,则广播第二区块给除发送第二区块给第一区块链节点的节点以外,与第一区块链节点连接的至少一个第二区块链节点;若不存在,则将交易组标识列表与第一区块链节点缓存的交易进行比对;判断第一区块链节点是否缺少第二区块交易组标识列表中的交易;若是,则向发送第二区块给第一区块链节点的节点请求获取包含有缺少的第二区块交易组标识列表中的交易,与第一区块链节点已缓存的第二区块的交易一起,验证第二区块,若验证通过,则广播第一区块到除发送第一区块给第一区块链节点的节点以外,与第一区块链节点连接的的至少一个第二区块链节点;若否,则验证第二区块,若验证通过,则广播第一区块到除发送第一区块给第一区块链节点的节点以外,与第一区块链节点连接的的至少一个第二区块链节点;其中,交易组标识列表中包括挖矿交易,以及所述第一区块中的每个交易组哈希值或其若干字节。进一步地改进是,所述记录第一区块和发送第一区块给第一区块链节点的节点,进一步改进为,包括:记录足以唯一识别第一区块的标识;记录发送第一区块给第一区块链节点的节点名称;所述记录第二区块和发送第二区块给第一区块链节点的节点,进一步改进为,包括:记录足以唯一识别第二区块的标识;记录发送第二区块给第一区块链节点的节点名称。进一步地改进是,所述的交易组包括子交易个数、每个子交易签名、每个子交易及其哈希值、每个子交易的交易费。进一步地改进是,所述交易组哈希值为交易组的子交易个数和每个子交易哈希值。进一步地改进是,所述第一区块除包括交易组外,还包括至少一个交易,所述交易组标识列表中包括挖矿交易,以及足以唯一识别交易组的标识,足以唯一识别交易的标识。进一步地改进是,所述向发送第二区块给第一区块链节点的节点请求获取包含有缺少的第二区块交易组标识列表中的交易之前,在判断出第一区块链节点缺少第二区块交易组标识列表中的交易之后,包括:判断交易缺失数量是否超过交易缺失占比阈值TR-TH;若是,则向发送第二区块给第一区块链节点的节点请求获取整个第二区块的交易,缓存到第一区块链节点,验证第二区块,若验证通过,则广播第一区块到除发送第一区块给第一区块链节点的节点以外,与第一区块链节点连接的的至少一个第二区块链节点;若否,则向发送第二区块给第一区块链节点的节点请求获取缺少的第二区块交易组标识列表中的交易,缓存到第一区块链节点,与第一区块链节点已缓存的第二区块的交易一起,验证第二区块,若验证通过,则广播第一区块到除发送第一区块给第一区块链节点的节点以外,与第一区块链节点连接的的至少一个第二区块链节点。进一步地改进是,所述向发送第二区块给第一区块链节点的节点请求获取缺少的第二区块交易组标识列表中的交易,缓存到第一区块链节点,与第一区块链节点已缓存的第二区块的交易一起,验证第二区块;若验证不通过,则向发送第二区块给第一区块链节点的节点请求获取整个第二区块的交易,缓存到第一区块链节点,验证第二区块;若验证通过,则广播第一区块到除发送第一区块给第一区块链节点的节点以外,与第一区块链节点连接的的至少一个第二区块链节点;若验证不通过,则不作处理。本文档来自技高网...

【技术保护点】
1.一种区块打包方法,其特征在于,包括:将区块头、至少一个交易组的所有子交易和第一区块的区块大小打包成第一区块;所述区块头的默克尔树根节点哈希值由至少一个交易组的所有子交易和挖矿交易计算得到。

【技术特征摘要】
1.一种区块打包方法,其特征在于,包括:将区块头、至少一个交易组的所有子交易和第一区块的区块大小打包成第一区块;所述区块头的默克尔树根节点哈希值由至少一个交易组的所有子交易和挖矿交易计算得到。2.根据权利要求1所述的方法,其特征在于,所述第一区块除包括至少一个交易组外,还包括至少一个交易,所述方法为:将区块头、至少一个交易、至少一个交易组的所有子交易和第一区块的区块大小打包成第一区块;所述区块头的默克尔树根节点由至少一个交易、至少一个交易组的所有子交易和挖矿交易计算得到。3.根据权利要求1或2所述的方法,其特征在于,所述第一区块还包括交易计数器;将区块头、交易计数器、至少一个交易组和第一区块的区块大小打包成第一区块。4.根据权利要求1或2所述的方法,其特征在于,所述区块头包括由父区块哈希值、时间戳和默克尔树根节点哈希值构造形成。5.根据权利要求1所述的方法,其特征在于,所述的交易组包括子交易个数、每个子交易签名、每个子交易及其哈希值、每个子交易的交易费。6.根据权利要求2所述的方法,其特征在于,当第一区块的区块大小SI>区块大小阈值TH时,将区块头、交易组标识列表、第一区块的区块大小打包成第二区块;其中,交易组标识列表包括挖矿交易,以及足以唯一识别交易组的标识。7.根据权利要求6所述的方法,其特征在于,所述足以唯一识别交易组的标识包括:交易组中所有交易哈希值或其部分字节,或交易组中任一交易哈希值或其部分字节,或交易组中各交易的ID号或名称,或交易组中任一交易的ID号或名称,或交易组ID号,或交易组名称。8.一种区块广播方法,其特征在于,根据权利要求1所述的一种区块打包方法,适用于挖矿节点,广播第一区块给与挖矿节点连接的至少一个第一区块链节点。9.根据权利要求8所述的方法,其特征在于,判断第一区块的区块大小SI≤区块大小阈值TH是否成立;若是,则广播第一区块给与挖矿节点连接的至少一个第一区块链节点;若否,则广播第二区块给与挖矿节点连接的至少一个第一区块链节点。10.一种区块广播方法,其特征在于,适用于非挖矿节点,根据权利要求1所述的一种区块打包方法,以及根据权利要求8所述的一种区块广播方法,包括:在所述第一区块链节点收到第一区块后,记录第一区块和发送第一区块给第一区块链节点的节点;检测第一区块链节点是否存在第一区块;若存在,则广播第一区块到除发送第一区块给第一区块链节点的节点以外,与第一区块链节点连接的的至少一个第二区块链节点;若不存在,则缓存第二区块并验证,若验证通过,则广播第一区块到除发送第一区块给第一区块链节点的节点以外,与第一区块链节点连接的的至少一个第二区块链节点;或,第一区块链节点收到第二区块后,记录第二区块和发送第二区块给第一区块链节点的节点,检测第一区块链节点是否存在第二区块;若存在,则广播第二区块给除发送第二区块给第一区块链节点的节点以外,与第一区块链节点连接的至少一个第二区块链节点;若不存在,则将交易组标识列表与第一区块链节点缓存的交易进行比对;判断第一区块链节点是否缺少第二区块交易组标识列表中的交易;若是,则向发送第二区块给第一区块链节点的节点请求获取包含有缺少的第二区块交易组标识列表中的交易,与第一区块链节点已缓存的第二区块的交易一起,验证第二区块,若验证通过,则广播第一区块到除发送第一区块给第一区块链节点的节点以外,与第一区块链节点连接的的至少一个第二区块链节点;若否,则验证第二区块,若验证通过,则广播第一区块到除发送第一区块给第一区块链节点的节点以外,与第一区块链节点连接的的至少一个第二区块链节点;其中,交易组标识列表包括挖矿交易,以及足以唯一识别交易组的标识。11.根据权利要求10所述的方法,其特征在于,所述记录第一区块和发送第一区块给第一区块链节点的节点,进一步改进为,包括:记录足以唯一识别第一区块的标识;记录发送第一区块给第一区块链节点的节点名称;所述记录第二区块和发送第二区块给第一区块链节点的节点,进一步改进为,包括:记录足以唯一识别第二区块的标识;记录发送第二区块给第一区块链节点的节点名称。12.根据权利要求10所述的方法,其特征在于,所述的交易组包括子交易个数、每个子交...

【专利技术属性】
技术研发人员:何玉斌王志文吴思进
申请(专利权)人:杭州复杂美科技有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1