【技术实现步骤摘要】
用于防止区块链分叉的方法和设备
本公开总体上涉及区块链
,具体地涉及一种防止区块链分叉的方法和设备。
技术介绍
随着区块链技术的飞速发展,在设计上提出了很多创新点,主要集中在避免作恶以及共识机制方面。避免作恶基于经济博弈原理。在一个开放的网络中,无法通过技术手段来保证每个人都是合作的,但可以通过经济博弈来让合作者得到利益,让非合作者遭受损失和风险。例如,比特币网络中所有试图参与者都首先要付出挖矿的代价,进行算力的消耗,想拿到新区块的决定权与所抵押的算力成正比。一旦失败,这些算力将会被没收掉,成为沉没成本。当网络中存在众多参与者时,个体试图拿到新区块决定权要付出的算力成本是巨大的。虽然进行一次作恶所要付出的代价可能已经超过带来的好处,但是由于作恶收益也是相对升高的。因此,作恶的趋势和方式仍然会有增无减。此外,传统的共识问题是考虑在一个相对封闭的分布式系统中,允许同时存在正常节点、故障节点的情况下如何快速达成一致,从而继续区块链中区块的生成。而现有区块链所应用的环境大多是完全开放的,可能会面对各种攻击情况。同时基于互联网的网络质量只能保证尽可能配合区块链的应用而不能做到完全配合,从而导致问题更加复杂,使得传统的一致性算法在这种场景下难以使用。目前比较通用的POW(工作量证明)共识机制是基于概率、随时间逐步增强确认的公式,即,现有达成的结果在理论上有可能被推翻,只是攻击者要付出的代价会随时间指数级上升,被推翻的可能性随之指数级下降。区块链是一组区块,其中每个区块都包含其前所有区块的哈希运算值。哈希运算 ...
【技术保护点】
1.一种防止区块链分叉的方法,其特征在于所述方法通过对所述区块链的每个区块建立后向链接并根据所述后向链接的数量进行判断实现,包括如下步骤:/nS101,选择连续的s个区块B
【技术特征摘要】
1.一种防止区块链分叉的方法,其特征在于所述方法通过对所述区块链的每个区块建立后向链接并根据所述后向链接的数量进行判断实现,包括如下步骤:
S101,选择连续的s个区块Bn至Bn+s;
S102,由创建所述连续的s个区块中区块Bn的节点An生成针对所述区块Bn的密钥对,其中所述区块Bn内包含所述密钥对中的公钥PKn,所述密钥对中的私钥PK'n由所述节点An单独持有;
S103,所述节点An在所述区块链不断生成区块Bn+1到Bn+s的过程中保持活跃,直到所述连续的s个区块中的所述区块Bn+s成为不可篡改的区块;
S104,响应于所述连续的s个区块中的所述区块Bn+s成为不可篡改的区块,使用私钥PK’n对区块Bn+s进行签名;
S105,响应于所述区块链后续生成区块Bm,将所述签名置于所述区块Bm中,其中m>n+s;
S106,由创建所述连续的s个区块Bn至Bn+s中每一个区块的节点均执行S102至S105,由此形成多个与所述区块链的区块规模相关的后向链接,并且其中每个区块都被其之前的区块证明存在于所述区块链的主链上;
S107,当接收到声称是合法区块链主链上的一条新链时,由新加入的节点根据所述后向链接的数量判断所述新链是否发生分叉,包括:其中在所述新链的任意连续的s个区块中存在L个后向链接的情况下,响应于G>s/2且L≥s/2,判断所述新链为没有发生分叉的主链;响应于1≤G≤s/2且L>s-G,判断所述新链为没有发生分叉的主链;响应于L<G,判断所述新链为发生分叉的分叉链;响应于G≤L≤s-G,无法判断所述新链是否发生分叉,其中G表示所述连续的s个区块中可信任节点的最小数量。
2.根据权利要求1所述的方法,其特征在于所述节点An使用且仅使用一次所述私钥PK'n,对所述连续的s个区块Bn至Bn+s中每一个区块所生成的密钥对均为重新生成的。
3.根据权利要求1所述的方法,其特征在于所述公钥PKn基于哈希签名算法生成,其中所述哈希签名算法包括Lamport算法。
4.根据权利要求1所述的方法,其特征在于还包括将所述签名置于所述区块链的所述区块Bn+s以外的其他位置,以确保在所述S105中能够将所述签名置于所述区块Bm中。
5.根据权利要求4所述的方法,其特征在于所述签名作为交易存放在所述区块链中。
6.根据权利要求4所述的方法,其特征在于将所述签名复制以获得复制签名,并将所述签名和所述复制签名均存储在所述区块链上。
7.根据权利要求1所述的方法,其特征在于在执行所述S105之前对所述签名的合法性进行检查,通过所述合法性检查的所述签名继续执行所述S105,而没有通过合法性检查的所述签名被所述区块链视为非法签名从而拒绝执行所述S105。
8.根据权利要求1所述的方法,其特征在于所述签名的过程在可信执行环境中执行。
9.根据权利要求1所述的方法,其特征在于所述区块链为公链。
10.根据权利要求1所述的方法,其特征在于所述区块链的创世区块是被完全信任的,其中由所述创世区块的节点或者所述创世区块授权的其他区块的节点对所述创世区块建立第一个后向链接,并且所述第一个后向链接出现后,在所述第一个后向链接所覆盖的所述连续的s个区块内产生分叉的概率为零。
11.根据权利要求1所述的方法,其特征在于在所述区块链的头部和尾部存在的区块量较少的情况下,无法判断新区块是否为分叉链上的头部,所述方法包括:
在所述新区块处于最近的疑似分叉点所在位置,所述新区块之前的所有区块均处于主链上,而创建所述新区块的节点尚未形成完整的后向链接并置于区块链中的情况下,对所述新区块的后继区块中已经不可篡改的区块或区块序列进行短期签名,并将所述短期签名放置在一个或多个存储位置,从而当所述新区块的后续拥有后向链接的区块数量小于s的情况下,若所述短期签名不是即时的或者是过期的,采用所述短期签名替代所述后向链接进行判断;
响应于所述短期签名不存在或者过期,判断所述新区块位于分叉链上;或者
持续等待,直到通过执行所述方法的S101-S106从待判断的所述区块开始形成预定数量的所述后向链接,通过判断所述后向链接的数量是否满足S107的数值范围确定待判断的所述区块是否为分叉链上的头部。
12.根据权利要求1所述的方法,其特征在于还包括在所述区块链的主链以外的链上部分进行搜索,确认是否存在对所述后向链接进行重复签名的重复签名者,所述重复签名者表示对两个待生成的区块进行签名的多个节点,所述两个待生成的区块分别处于主链和分叉链上,从而根据所述重复签名者所创建的区块寻找分叉链。
13.根据权利要求1所述的方法,其特征在于针对疑似分叉链,将所述疑似分叉链之前的主链部分和所述疑似分叉链与所述主链交点后的链结构进行比较,其中所述主链包含所述后向链接,如果比较结果显示在所述后向链接的数量上存在显著差异,则确定所述疑似分叉链为分叉链,反之确定所述疑似分叉链为主链。
14.根据权利要求1所述的方法,其特征在于响应于所述S104使用私钥PK’n对区块Bn+s进行签名,删除所述私钥PK’n以防止其被滥用。
15.一种防止区块链分叉的设备,其特征在于包括区块链和处理器,其中所述区块链能够确保公布在其上的信息不可篡改...
【专利技术属性】
技术研发人员:安德鲁·威廉·罗斯科,陈邦道,
申请(专利权)人:堡垒科技有限公司,
类型:发明
国别省市:英国;GB
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。