CN109889519A - 一种避免区块链共识中无代价攻击的算法 - Google Patents

一种避免区块链共识中无代价攻击的算法 Download PDF

Info

Publication number
CN109889519A
CN109889519A CN201910120449.4A CN201910120449A CN109889519A CN 109889519 A CN109889519 A CN 109889519A CN 201910120449 A CN201910120449 A CN 201910120449A CN 109889519 A CN109889519 A CN 109889519A
Authority
CN
China
Prior art keywords
block
bifurcated
main chain
spare
chain
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910120449.4A
Other languages
English (en)
Other versions
CN109889519B (zh
Inventor
张亮
周可
曹辉宁
周海汉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanya Jingniu Digital Technology Co ltd
Original Assignee
Shenzhen City Excellence Science Chain Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen City Excellence Science Chain Technology Co Ltd filed Critical Shenzhen City Excellence Science Chain Technology Co Ltd
Priority to CN201910120449.4A priority Critical patent/CN109889519B/zh
Publication of CN109889519A publication Critical patent/CN109889519A/zh
Application granted granted Critical
Publication of CN109889519B publication Critical patent/CN109889519B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种提供了一种避免区块链共识中无代价攻击的算法,包括以下步骤:节点用户检测当前出块主链;出块矿工在出块主链上出当前块;其他矿工等待一个出块周期,等待当前出块矿工在出块主链上出当前块;其他矿工在单个出块周期结束后,未发现当前出块矿工在出块主链上出当前块,则所有节点用户重新挑选备用块的出块矿工,并在等待1个或多个出块周期后,由新出块矿工在出块主链上出备用块;备用块的下一个区块出块之前,备用块的下一个区块的出块矿工检测当前的出块主链,即包含有最大值的区块序号的区块的分叉;如果备用块所在的分叉为出块主链,在备用块所在的分叉出块;如果备用块所在的分叉不是出块主链,在出块主链上继续出块。

Description

一种避免区块链共识中无代价攻击的算法
技术领域
本发明涉及区块链技术领域,具体涉及一种避免区块链共识中无代价攻击的算法。
背景技术
在一个分布式网络中,由于网络中拥有众多节点,网络中不可避免的通信延迟,节点可能出现宕机、故障、失效等等复杂情况,比如,如下情况:
当高度r的区块进行出块时,出块矿工应该是ID_Targetr=Qrmod N,可惜 ID_Targetr矿工的由于网络延时或者恶意保留区块导致全网未能及时感知区块,在等待λ时间段之后,由
IDλ=hash(ID||λ||Sigr-1)
的矿工将会出块,此时网络中便有可能面临2条分叉。
导致整个网络中出现分叉的情况;同时,网络中还存在着一定数量作恶节点的攻击,在任意一条分叉上都有矿工可以没有成本的进行出块,同时还会面临着遭受几种常见长程攻击的可能性。
分叉导致每个节点用户保存的数据不一致,造成整个网络上的信息不统一、混乱。
发明内容
本发明的目的是提供一种避免区块链共识中无代价攻击的算法,能够有效的避免区块链上出现分叉。
本发明的一个实施例提供了一种避免区块链共识中无代价攻击的算法,包括以下步骤:
1)区块链上节点用户检测当前的出块主链,出块主链为包含有最大值的区块序号的区块的分叉;
2)当前出块矿工在出块主链上出当前块;
3)所有非当前出块矿工等待一个出块周期,等待当前出块矿工在出块主链上出当前块;
4)当区块链上节点用户在单个出块周期结束后,未发现当前出块矿工在出块主链上出当前块,则所有节点用户重新挑选备用块的出块矿工,并在等待1 个或多个出块周期后,由新出块矿工在出块主链上出备用块;
5)备用块的下一个区块出块之前,备用块的下一个区块的出块矿工检测当前的出块主链,出块主链为包含有最大值的区块序号的区块的分叉;
6)如果备用块所在的分叉为出块主链,则在备用块所在的分叉出块;如果备用块所在的分叉不是出块主链,则在出块主链上继续出块。
与现有技术相比,本发明提供的避免区块链共识中无代价攻击的算法具有如下优点:
1.可以迅速解决分叉的产生;
2.在保证网络去中心化的前提下,提高了区块链网络交易处理性能;
3.移动检查点机制加强了交易的确定性,使得交易彻底无法被篡改,而非其他算法中交易只能概率性的被确认。
附图说明
图1所示为本发明的避免区块链共识中无代价攻击的算法的一个实施例的流程示意图。
图2所示为本发明的验证者节点的一个实施例的示意图。
图3所示为本发明的矿工投票流程的一个实施例的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。
在本发明的描述中,认证中心(CA─Certificate Authority)作为权威的、可信赖的、公正的第三方机构,专门负责发放并管理所有参与链上交易的实体所需的数字证书。它作为一个权威机构,对密钥进行有效地管理,颁发证书证明密钥的有效性,并将公开密钥同某一个实体(消费者、商户、银行)联系在一起。它负责产生、分配并管理所有参与网上信息交换各方所需的数字证书,因此是安全电子信息交换的核心。
请参阅图1,在本发明的一个实施例中,避免区块链共识中无代价攻击的算法可以包括以下步骤:
100:区块链上节点用户检测当前的出块主链,出块主链为包含有最大值的区块序号的区块的分叉;
在本发明的一个实施例中,分叉选择策略采用最长链原则,同时接收到相同高度的链时,暂时保留,等待长链的出现;接收不同高度的分叉链时,选择长链作为主链。
在本发明的一个实施例中,区块链上设置如下机制:
每隔固定数量的区块,所有矿工判断哪一个分叉是当前的出块主链,并向全网广播投票信息,投票信息包括:所投分叉最后一个区块的哈希值,矿工公钥对哈希值的签名;当前出块矿工接收广播,当接收到投给某一条分叉的投票数超过总矿工数的一半时,当前出块矿工将收到的所有广播信息打包生成一个检查点区块,所有节点用户认可超过一半投票数的分叉为出块主链。
进一步的,在本发明的一个实施例中,可以设置当前出块矿工接收到投给任何一条分叉的投票数都不超过总矿工数的一半时,所有矿工等待一定的时间后重新进行投票。
进一步的,参考图2,在本发明的一个实施例中,可以设置一个区块周期,范围可以为10~100块,每经过一个周期就需要矿工对目前的主链进行一次投票确认,超过2/3票数的分叉链被确认为主链,确认点之前的区块不可被篡改。验证者节点引入,避免了攻击者在确认点之前进行长程攻击,同时任何矿工也不会在分叉点之前的分叉上继续出块。
进一步的,在本发明的一个实施例中,矿工的投票规则如下:
1)拥有第一匹配位矿工数量较多的分叉,获得投票;
2)若拥有相同的第一匹配位矿工,检查点前连续的第一匹配位矿工越多,获得投票;
3)若还是相等,检查点前一个区块的哈希最大的链,获得投票。
一般限制矿工每次只能对一个分叉进行投票。
参考图3,为本发明的矿工投票流程的一个实施例的示意图。
200:当前出块矿工在出块主链上出当前块;
300:所有非当前出块矿工等待一个出块周期,等待当前出块矿工在出块主链上出当前块;
400:当区块链上节点用户在单个出块周期结束后,未发现当前出块矿工在出块主链上出当前块,则所有节点用户重新挑选备用块的出块矿工,并在等待1 个或多个出块周期后,由新出块矿工在出块主链上出备用块;
500:备用块的下一个区块出块之前,备用块的下一个区块的出块矿工检测当前的出块主链,出块主链为包含有最大值的区块序号的区块的分叉;
600:如果备用块所在的分叉为出块主链,则在备用块所在的分叉出块;如果备用块所在的分叉不是出块主链,则在出块主链上继续出块。
在本发明的一个实施例中,避免区块链共识中无代价攻击的算法还可以包括如下步骤:如果备用块所在的分叉不是出块主链,则在产生新块时,备用块所在的分叉延迟一个或多个出块周期出块。
在本发明的一个实施例中,避免区块链共识中无代价攻击的算法还可以包括如下步骤:如果备用块所在的分叉为出块主链,则在备用块所在的分叉出块时延迟一个或多个出块周期出块。
在本发明的一个实施例中,避免区块链共识中无代价攻击的算法还可以包括如下步骤:区块链上所有矿工对自己的公钥做哈希计算,如果得到的哈希计算值小于设定的阈值,则该矿工无法参与备用块的下一个区块的出块。
在本发明的一个实施例中,避免区块链共识中无代价攻击的算法还可以包括如下步骤:如果备用块的下一个区块的出块延迟为一个出块周期,则区块链上所有矿工恢复正常出块。
在本发明的一个实施例中,避免区块链共识中无代价攻击的算法还可以包括如下步骤:如果备用块所在的分叉中某一个区块的出块延迟为一个出块周期,则区块链上所有矿工恢复正常出块。
虽然以上述较佳的实施例对本发明做出了详细的描述,但并非用上述实施例限定本发明。本领域的技术人员应当意识到在不脱离本发明技术方案所给出的技术特征和范围的情况下,对技术特征所作的增加、以本领域一些同样内容的替换,均应属本发明的保护范围。

Claims (10)

1.一种避免区块链共识中无代价攻击的算法,其特征在于,包括以下步骤:
1)所述区块链上节点用户检测当前的出块主链,所述出块主链为包含有最大值的区块序号的区块的分叉;
2)当前出块矿工在所述出块主链上出当前块;
3)所有非当前出块矿工等待一个出块周期,等待当前出块矿工在所述出块主链上出当前块;
4)当所述区块链上节点用户在单个出块周期结束后,未发现当前出块矿工在所述出块主链上出当前块,则所有节点用户重新挑选备用块的出块矿工,并在等待1个或多个出块周期后,由新出块矿工在所述出块主链上出备用块;
5)所述备用块的下一个区块出块之前,所述备用块的下一个区块的出块矿工检测当前的出块主链,所述出块主链为包含有最大值的区块序号的区块的分叉;
6)如果所述备用块所在的分叉为出块主链,则在所述备用块所在的分叉出块;如果所述备用块所在的分叉不是出块主链,则在出块主链上继续出块。
2.根据权利要求1所述的算法,其特征在于:如果所述备用块所在的分叉不是出块主链,则在产生新块时,所述备用块所在的分叉延迟一个或多个出块周期出块。
3.根据权利要求1所述的算法,其特征在于:如果所述备用块所在的分叉为出块主链,则在所述备用块所在的分叉出块时延迟一个或多个出块周期出块。
4.根据权利要求3所述的算法,其特征在于:所述区块链上所有矿工对自己的公钥做哈希计算,如果得到的哈希计算值小于设定的阈值,则该矿工无法参与所述备用块的下一个区块的出块。
5.根据权利要求4所述的算法,其特征在于:如果所述备用块的下一个区块的出块延迟为一个出块周期,则所述区块链上所有矿工恢复正常出块。
6.根据权利要求4所述的算法,其特征在于:如果所述备用块所在的分叉中某一个区块的出块延迟为一个出块周期,则所述区块链上所有矿工恢复正常出块。
7.根据权利要求1所述的算法,其特征在于:每隔固定数量的区块,所有矿工判断哪一个分叉是当前的出块主链,并向全网广播投票信息,所述投票信息包括:所投分叉最后一个区块的哈希值,所述矿工公钥对所述哈希值的签名;当前出块矿工接收所述广播,当接收到投给某一条分叉的投票数超过总矿工数的一半时,所述当前出块矿工将收到的所有广播信息打包生成一个检查点区块,所有节点用户认可所述超过一半投票数的分叉为出块主链。
8.根据权利要求7所述的算法,其特征在于:当所述当前出块矿工接收到投给任何一条分叉的投票数都不超过总矿工数的一半时,所有矿工等待一定的时间后重新进行投票。
9.根据权利要求7所述的算法,其特征在于:所述矿工的投票规则如下:
1)拥有第一匹配位矿工数量较多的分叉,获得投票;
2)若拥有相同的第一匹配位矿工,检查点前连续的第一匹配位矿工越多,获得投票;
3)若还是相等,检查点前一个区块的哈希最大的链,获得投票。
10.根据权利要求9所述的算法,其特征在于:所述矿工每次只能对一个分叉进行投票。
CN201910120449.4A 2019-02-18 2019-02-18 一种避免区块链共识中无代价攻击的算法 Expired - Fee Related CN109889519B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910120449.4A CN109889519B (zh) 2019-02-18 2019-02-18 一种避免区块链共识中无代价攻击的算法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910120449.4A CN109889519B (zh) 2019-02-18 2019-02-18 一种避免区块链共识中无代价攻击的算法

Publications (2)

Publication Number Publication Date
CN109889519A true CN109889519A (zh) 2019-06-14
CN109889519B CN109889519B (zh) 2021-08-13

Family

ID=66928347

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910120449.4A Expired - Fee Related CN109889519B (zh) 2019-02-18 2019-02-18 一种避免区块链共识中无代价攻击的算法

Country Status (1)

Country Link
CN (1) CN109889519B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110288479A (zh) * 2019-06-28 2019-09-27 深圳市网心科技有限公司 一种区块链数据的共识方法及相关设备
CN114090693A (zh) * 2022-01-18 2022-02-25 安徽中科晶格技术有限公司 基于拜占庭容错的区块链见证共识方法、系统、设备及存储介质
CN114900529A (zh) * 2022-06-09 2022-08-12 上海万向区块链股份公司 区块敲定方法及系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160098730A1 (en) * 2014-10-01 2016-04-07 The Filing Cabinet, LLC System and Method for Block-Chain Verification of Goods
CN106878071A (zh) * 2017-01-25 2017-06-20 上海钜真金融信息服务有限公司 一种基于Raft算法的区块链共识机制
CN107507006A (zh) * 2017-08-11 2017-12-22 杭州秘猿科技有限公司 一种基于许可链的共识分叉处理方法
US20180114218A1 (en) * 2016-10-26 2018-04-26 International Business Machines Corporation Blockchain: automatic fork protection
CN108269090A (zh) * 2018-01-19 2018-07-10 中国科学院软件研究所 基于无协商随机抽签的用于区块链系统的共识方法和装置
CN108846750A (zh) * 2018-08-01 2018-11-20 杭州复杂美科技有限公司 一种股权证明共识方法
CN109166037A (zh) * 2018-07-25 2019-01-08 上海魅联信息技术有限公司 区块链的共识方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160098730A1 (en) * 2014-10-01 2016-04-07 The Filing Cabinet, LLC System and Method for Block-Chain Verification of Goods
US20180114218A1 (en) * 2016-10-26 2018-04-26 International Business Machines Corporation Blockchain: automatic fork protection
CN106878071A (zh) * 2017-01-25 2017-06-20 上海钜真金融信息服务有限公司 一种基于Raft算法的区块链共识机制
CN107507006A (zh) * 2017-08-11 2017-12-22 杭州秘猿科技有限公司 一种基于许可链的共识分叉处理方法
CN108269090A (zh) * 2018-01-19 2018-07-10 中国科学院软件研究所 基于无协商随机抽签的用于区块链系统的共识方法和装置
CN109166037A (zh) * 2018-07-25 2019-01-08 上海魅联信息技术有限公司 区块链的共识方法
CN108846750A (zh) * 2018-08-01 2018-11-20 杭州复杂美科技有限公司 一种股权证明共识方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110288479A (zh) * 2019-06-28 2019-09-27 深圳市网心科技有限公司 一种区块链数据的共识方法及相关设备
CN110288479B (zh) * 2019-06-28 2023-07-14 深圳市迅雷网络技术有限公司 一种区块链数据的共识方法及相关设备
CN114090693A (zh) * 2022-01-18 2022-02-25 安徽中科晶格技术有限公司 基于拜占庭容错的区块链见证共识方法、系统、设备及存储介质
CN114900529A (zh) * 2022-06-09 2022-08-12 上海万向区块链股份公司 区块敲定方法及系统

Also Published As

Publication number Publication date
CN109889519B (zh) 2021-08-13

Similar Documents

Publication Publication Date Title
JP6883106B2 (ja) 分散システム、メッセージ処理方法、ノード、クライアント及び記憶媒体
CN108122165B (zh) 一种区块链共识方法及系统
Kwon Tendermint: Consensus without mining
CN109889519A (zh) 一种避免区块链共识中无代价攻击的算法
CN109039646B (zh) 一种基于节点能力的区块链区块打包和验证方法及系统
CN108711212B (zh) 投票存证方法、装置及系统
CN111444211B (zh) 区块链共识节点校验方法、装置、设备以及存储介质
CN107181797B (zh) 一种区块链的区块压缩方法和系统
CN109743173A (zh) 区块链中出块节点确定方法、区块验证方法及区块链系统
CN109544334A (zh) 一种网络可扩展性区块链实现方法
CN109583893B (zh) 可追踪的基于区块链的数字货币交易系统
US11190341B2 (en) System architecture for executing a distributed key generation protocol
Simon Anonymous communication and anonymous cash
CN109831509B (zh) 一种用于实现相同权重随机出块的方法
CN109981690B (zh) 一种基于区块链智能合约的防篡改定时数据保密传输方法
CN109840767A (zh) 基于区块链技术的多方公平合约存证方法和系统
CN109981565A (zh) 基于Meta-BFT共识机制的区块链平台及实现方法
Esfahani et al. Secure blockchain-based energy transaction framework in smart power systems
CN111371768A (zh) 共识处理方法、验证发起节点、验证节点、设备和介质
CN114862397B (zh) 一种基于双链结构的双解耦区块链分布式方法
CN111865595B (zh) 一种区块链的共识方法及装置
CN112487091A (zh) 一种确定区块链共识节点的方法及装置
CN113781218A (zh) 基于特征信任的分组pbft共识算法
CN110780848A (zh) 基于区块链分布式随机过程的双随机生成方法和监管系统
CN110933088A (zh) 一种基于区块链的去中心化可验证隐匿代表方法、系统及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20200415

Address after: No.212, Jiyang Jiyang Avenue, Jiyang District, Sanya City, Hainan Province, 572000

Applicant after: Sanya Jingniu Digital Technology Co.,Ltd.

Address before: Room 02, 22/F, Tower Building of Bamboo Forest Education Science and Technology Building, Xiangmihu Street, Shenzhen City, Guangdong Province

Applicant before: SHENZHEN USECHAIN TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20210813

Termination date: 20220218

CF01 Termination of patent right due to non-payment of annual fee