预防区块链分叉的节点检测算法
2020-11-25徐卫克
徐卫克
(中国社会科学院大学 北京市 102488)
在互联网时代,区块链成为了数字交易应用新模式,能够按照时间顺序将数据区块连接起来,得到链式数据结构,并采用密码学方法保证形成的账本无法被篡改。但在实际应用的过程中,区块链将出现分叉问题,给恶意攻击行为的产生留下机会。因此,还应加强预防区块链分叉的节点检测算法研究,以便使区块链技术得到较好应用。
1 区块链技术及其分叉问题分析
1.1 区块链技术
作为自治节点的网络,区块链技术又被称之为分布式事务存储账本。从结构上来看,由上至下可以划分为数据层、网络层、共识层、激励层、合约层与应用层。其中,数据层用于对底层区块进行分装,需要采用数据加密等技术。网络层提供节点数据验证机制,采用P2P技术等实现节点交互。在各节点未能相互信任的情况下,由共识层提供工作量和权益等证明,促使节点达到共识。借助分配、发行等机制,激励层能够对区块链进行维护。各类脚本和算法在合约层封装,是区块链系统运作的基础。利用应用层,可以为用户提供相应服务。从本质上来讲,区块链是为去中心化提供支持的技术,能够利用分布在世界各地的节点完成数字货币交易账本记录,想要控制区块链系统,还要掌握超过半数的工作节点群[1]。在区块链中包含多个首位相连的区块,能够分别用于对一段时间的交易数据进行记录。而各个节点将利用网络在本地实现区块链数据存储,利用共识机制保证各节点数据能够保持高度一致。因此在信息不对称的环境下,区块链能够建立数字货币交易信任生态体系,促使任意节点在无法相互信任的情况下,能够依靠共识基础实现信息安全交互,而无需担心数据被篡改,促使数字货币交易得以借助区块链系统顺利开展[2]。尽管区块链技术拥有诸多优势,但在数据安全方面依然存在一定缺陷。区块链分叉问题的产生,就会导致系统安全受到威胁,从而影响数字货币交易的正常进行。因此想要进一步推动区块链技术的发展,还要提出科学的安全机制,促使区块链分叉等问题得到解决。
1.2 区块链分叉
区块链技术采用的是分布式计算技术,造成其容易产生分叉问题。具体来讲,就是在两个或两个以上节点同时生成新区块的情况下,无任何区块能够被全部节点接受,就会出现分叉现象。系统正常工作时出现节点分叉,属于自然分叉现象。但是如果因为受认为干预出现分叉,将导致系统数据面临安全威胁。实际伴随着科学技术的发展,各种虚拟数字货币需要不断升级。但不同与单纯软件升级,区块链系统升级需要对各个参与者进行协调,在无法被全部参与者接受的情况下就会出现分叉。该种分叉又可以按照系统新规则兼容情况划分为软分叉和硬分叉两类,前者指的是无论工作节点共识规则是否更新,新旧规则下的区块都能被区块链接受,后者指的是未更新共识规则的节点无法接受新规则区块的情况。软分叉能够在95%区块采用新规则时迫使旧规则节点升级,不会出现较大问题。但是硬分叉一旦产生,由于新规则不被多数节点认同,容易导致区块链系统发生严重分裂,形成平行的两条区块链。而两条区块链拥有相同地址、交易格式和私钥算法,可能造成数字货币交易在一条链上合法后再另一条链上重新广播和得到认可,最终导致同笔货币发生重复交易[3]。因此在硬分叉期间,不法分子可以通过重放攻击盗取资产。与此同时,恶意用户也可以通过开展低价值粉尘交易导致工作节点被大量占用,造成区块堵塞,正常交易无法及时处理。为完成数字货币交易,用户可能选择缴纳高交易费获得打包机会。
2 预防区块链分叉的节点检测算法
2.1 检测算法思路
针对分叉问题,区块链主要通过共识机制解决。但在区块链挖矿速度不断加快的过程中,末端区块容易成为孤块。一旦区块产生速率超出共识信息速率,将导致分叉无法收敛,共识机制无法发挥作用。应用节点检测算法对区块链分叉进行预防,需要考虑到因升级产生的短时间分叉现象是合法的,但为保证交易的正常开展,还要预防长时间分叉的产生。以往在解决分叉问题时,多采用最长链策略,能够在分叉区块链产生6个区块后判定为结构稳定,不符合系统共识,需要淘汰其他支链。但尽管分叉问题得到了解决,后续节点依然允许挖矿,会持续消耗系统资源,导致区块链末端区块长时间暴露,并因此导致区块承担被攻击的风险。结合这些问题,需要在确保节点按照原本共识机制挖矿的同时,能够在交易开展过程重对节点进行监测,一旦发现多个节点挖矿成功将对节点检测算法进行调用,完成合法区块节点筛选,最终得到能够作为末端区块的节点与主链连接。实际在区块链重,各个工作节点需要发挥挖矿功能,就是对硬件性能好的设备提供共识算法,在完成竞争后获得记账权,使网络一致性得到维护[4]。而各个节点都要参与网络通信,但如果预先判定节点不具备路由功能,可以避免节点连接网络,达到筛选节点的目标。采取该种算法,可以维持系统原本工作量,在分叉产生前完成节点筛选,从而有效避免分叉问题的发生,起到改进区块链共识机制的作用。
2.2 分叉检测步骤
在区块链上不断产生分叉的情况下,各个区块链支链上将不断有新的区块出现。只有使各区块保持一致,才不会出现短分支被舍弃的情况。而区块链高度增加,将导致分支查找到新节点的概率急速降低,最终造成一个分支最高,继而对其他分支进行取代。按照算法思路对区块链分叉进行检测,需要对节点进行监测,确定节点挖矿结果。在检测发现区块数目为1的情况下,可以判定区块合法,在获得记账权的同时,能够对挖矿酬金进行赚取。如果检测发现节点接收到的区块数超出1,需要调用检测算法,对数组接收的区块状态信息进行定义。具体来讲,可以利用节点挖矿产生区块时间t进行定义。完成时间排序后,可以将最小t值对应的区块当成是唯一区块,判定其获得记账权,并且能够完成酬金赚取。在算法结束后,需要将筛选得到的合法区块连接到主链上,然后结束挖矿。实际在区块链中,恶意节点行为和正常节点行为存在目的差异,恶意节点习惯于利用分叉实现资产转移和带来双重花费,将导致数据无法保持一致。因此在恶意节点工作的过程中,将出现传播虚假信息或篡改交易的行为。采用GHOST协议,能够对节点挖矿行为进行抑制。采用节点检测算法分析网络传输异步性,能够确定节点攻击行为,根据分叉情况采取维护措施。完成成功节点检测,并使每次挖矿仅产生一个合法区块,能够避免末端区块分叉,从而使区块数据的一致性得到保证。
2.3 算法应用验证
在算法应用过程中,还应认识到节点挖矿为随机过程,一旦同时查找多个区块就容易产生分叉。为确定算法应用能否达到预期的目标,还要加强算法与PoW共识机制的应用比较。在实际分析过程中,还应假设区块链系统处于理想状态,在开展数字货币交易的过程中,挖掘成功的节点仅存在一个。而在新节点获得记账权的情况下,区块链的高度将被加深。在实验过程中,需要生成1200个符合区块链格式的交易,其中合法交易600个,恶意占用资源的交易300个,恶意获取高昂交易费的300个。在完成矩阵混淆后,对算法应用效果展开分析可以发现,恶意节点行为检测成功率能够达到90%以上,在成功检测后分叉预防成功率能够达到100%。但是采用传统PoW共识机制,分叉预防成功率不足80%,使得区块链系统仍然有较大的几率遭受攻击。分析原因可以发现,一旦挖矿结果不止一个,同时均为合法区块,如果依然延续PoW共识机制,系统将出现缺少监管的问题,多个区块将同时连接主链,造成分叉产生。在分支链加深的过程中,只有分支链深度不同,系统才能做出选择策略,期间不仅系统资源遭到了消耗,也容易导致节点攻击行为的发生。而采用节点检测算法,可以在发现区块不唯一时进行算法调用,实现节点筛选,确保只有唯一的区块能够连接到主链上。由此可见,相较于原本的共识机制,应用算法能够使区块链分叉的问题得到预防,保证系统始终维持正常运转状态。而算法应用之所以无法完成全部恶意节点检测,与区块链分叉本身存在的复杂性有一定关系。在系统工作量不断增加的过程中,信息量也不断加大,使得算法难以成功判断所有节点目的。但从算法应用整体测试结果来看,相较于以往的共识机制,节点检测能够对末端区块进行保护,无需在子孙区块已经形成后才能完成交易信息确认,所以可以缩短区块确认时间,使数据一致性得到保障,因此能够成功实现区块链分叉预防,使分叉发生几率得到有效降低。
2.4 预防效果分析
从加强区块链安全管理角度来看,采用节点检测算法能够起到明显作用。在区块链系统中,末端区块将长时间处于暴露状态,通过节点检测可以使经过筛选的唯一区块与区块链的末端连接,促使区块链的安全性得到增强。做到预防分叉产生,意味着被判定为存在恶意行为的节点在分叉区块上无法继续挖矿,从而避免分叉延长分支,达到节约系统存储空间的目标。实际在比特币交易系统中,按照现行管理方法6个区块的稳定结构形成后,交易会被看成是不会出现篡改问题。受这一因素的影响,每10min将有一个区块产生,导致交易需要60min才能被确认。而每个分叉系统中将包好1-59个分区块,确认后将看成是淘汰的孤块。各区块上限为2MB,用于存储孤块将占用2-118MB空间资源,导致系统资源被浪费。应用节点检测算法后,可以直接对交易进行模拟,然后进行挖矿检测,发现结果不一致将利用算法筛选节点,确保只有一个节点能够对记账权进行获取,以免出现分叉问题。采取该种措施,系统不会对分支链进行淘汰,因此也无需为孤块的存储分配存储资源,因此能够在保证区块链安全性能的同时,使资源浪费问题得到解决。伴随着区块链技术的发展,数字货币交易不断扩大,越来越多的节点参与到了挖矿中,导致系统能源消耗日渐增多。而在区块链交易开展的过程中,将产生大量的电能损耗,缩短交易确认时间能够起到减少电能损耗的目标,促使数字货币碳交易排放量得到减少,从而为数字货币的发展提供支撑。因此从总体上来看,应用节点检测算法实现区块链分叉的预防,不仅可以保证数字货币交易的安全性,还应带来一定的经济效益和环境效益,符合当前社会的发展趋势。
3 结论
综上所述,区块链技术的发展尽管为数字货币交易的开展提供了技术支撑,但由于技术发展时间尚短,仍然存在明显技术缺陷,容易因硬分叉产生导致数字货币正常交易受到不良影响。实际应用节点检测算法,可以结合分叉产生原因完成恶意节点攻击行为检测和制约,从而使区块链的安全性得到保证,继而为数字货币的发展提供保障。