技术领域
[0001] 本
发明涉及区块链技术领域,尤其涉及一种区块链的节点连接方法及装置。
背景技术
[0002]
现有技术中,当区块链有新节点与该链上其它节点的创世块文件和网络ID一致时,则可与该区块链上的任意节点建立连接。也就是说,现有技术中,对节点的加入无资质审核过程,任意能
访问区块链网络的节点都可以自由发起连接,然后进行拉取数据与在该区块链上发送交易的操作。显然,这种节点的连接方式,安全性较低。
发明内容
[0003] 本发明的主要目的在于提出一种区块链的节点连接方法及装置,旨在解决现有的节点连接方式,安全性较低的技术问题。
[0004] 为实现上述目的,本发明提供的一种区块链的节点连接方法,所述节点连接方法包括:
[0005] 第一节点在接到第二节点发送的握手协议时,从所述握手协议中提取出所述第二节点的签名数组以及ID信息;
[0006] 若所述ID信息预存在所述第一节点的节点配置文件中,则从所述节点配置文件中获取所述第二节点的配置信息;
[0007] 根据所述第二节点的配置信息对提取的所述签名数组进行校验;
[0008] 在所述签名数组校验通过时,所述第一节点与所述第二节点建立连接关系。
[0009] 优选地,所述握手协议的发送方式为:所述第二节点对自身的配置信息进行哈希计算得到第一哈希值;根据预存的私钥对所述第一哈希值进行签名得到签名数组;将所述签名数组添加到包含自身ID信息的握手协议中以发送。
[0010] 优选地,所述根据所述第二节点的配置信息对提取的所述签名数组进行校验的步骤包括:
[0011] 所述第一节点对所述第二节点的配置信息进行哈希计算,得到第二哈希值;
[0012] 通过所述私钥对应的公钥对提取的所述签名数组进行解密,以得到所述第一哈希值;
[0013] 将所述第二哈希值与所述第一哈希值进行对比,以实现对提取的所述签名数组进行校验;其中,在所述第二哈希值与所述第一哈希值一致时,认为所述签名数组校验通过。
[0014] 优选地,所述第一节点在接到第二节点发送的握手协议时,从所述握手协议中提取出所述第二节点的签名数组以及ID信息的步骤之前,所述节点连接方法还包括:
[0015] 所述第一节点对区块链中的各个节点的配置信息进行确认;
[0016] 将确认后的各个节点的配置信息存储到所述第一节点的节点配置文件中;其中,所述配置信息包括节点身份类型、机构信息、节点描述信息、节点IP、端口号、节点公钥信息、状态信息。
[0017] 优选地,所述在所述签名数组校验通过时,所述第一节点与所述第二节点建立连接关系的步骤之后,所述节点连接方法还包括:
[0018] 若所述第一节点基于业务规则检测到所述第二节点存在违规操作,则断开与所述第二节点的连接关系;
[0019] 在所述节点配置文件中将所述第二节点的状态标记为异常,便于后续接收到所述第二节点的连接
请求时,拒绝其连接请求。
[0020] 此外,为实现上述目的,本发明还提出一种区块链的节点连接装置,所述节点连接装置包括:
[0021] 提取模块,用于在接到第二节点发送的握手协议时,从所述握手协议中提取出所述第二节点的签名数组以及ID信息;
[0022] 获取模块,用于若所述ID信息预存在第一节点的节点配置文件中,则从所述节点配置文件中获取所述第二节点的配置信息;
[0023] 校验模块,用于根据所述第二节点的配置信息对提取的所述签名数组进行校验;
[0024] 建立模块,用于在所述签名数组校验通过时,与所述第二节点建立连接关系。
[0025] 优选地,所述握手协议的发送方式为:所述第二节点对自身的配置信息进行哈希计算得到第一哈希值;根据预存的私钥对所述第一哈希值进行签名得到签名数组;将所述签名数组添加到包含自身ID信息的握手协议中以发送。
[0026] 优选地,所述校验模块包括:
[0027] 计算单元,用于对所述第二节点的配置信息进行哈希计算,得到第二哈希值;
[0028] 解密单元,用于通过所述私钥对应的公钥对提取的所述签名数组进行解密,以得到所述第一哈希值;
[0029] 校验单元,用于将所述第二哈希值与所述第一哈希值进行比对,以实现对提取的所述签名数组进行校验;其中,在所述第二哈希值与所述第一哈希值一致时,认为所述签名数组校验通过。
[0030] 优选地,所述节点连接装置还包括:
[0031] 确认模块,用于对区块链中的各个节点的配置信息进行确认;
[0032] 存储模块,用于将确认后的各个节点的配置信息存储到所述第一节点的节点配置文件中;其中,所述配置信息包括节点身份类型、机构信息、节点描述信息、节点IP、端口号、节点公钥信息、状态信息。
[0033] 优选地,所述节点连接装置还包括:
[0034] 断开模块,用于若基于业务规则检测到所述第二节点存在违规操作,则断开与所述第二节点的连接关系;
[0035] 标记模块,用于在所述节点配置文件中将所述第二节点的状态标记为异常,便于后续接收到所述第二节点的连接请求时,拒绝其连接请求。
[0036] 本发明提出的节点连接方法及装置,第一节点在接到第二节点发送的握手协议时,先从所述握手协议中提取出所述第二节点的签名数组以及ID信息,若所述ID信息预存在所述第一节点的节点配置文件中,则从所述节点配置文件中获取所述第二节点的配置信息,再根据所述第二节点的配置信息对提取的所述签名数组进行校验,在所述签名数组校验通过时,所述第一节点才与所述第二节点建立连接关系,而不仅仅是根据创世块文件和网络ID对节点进行校验,本发明对节点的配置信息进行校验,提高了区块链中节点连接的安全性。
附图说明
[0037] 图1为本发明节点连接方法第一
实施例的流程示意图;
[0038] 图2为本发明根据所述第二节点的配置信息对提取的所述签名数组进行校验的细化流程示意图;
[0039] 图3为本发明节点连接方法第二实施例的流程示意图;
[0040] 图4为未知节点发起连接的场景示意图;
[0041] 图5为已获得区块链认可的节点发起连接的场景示意图;
[0042] 图6为本发明节点连接装置第一实施例的功能模块示意图;
[0043] 图7为图6中校验模块30的细化功能模块示意图;
[0044] 图8为本发明节点连接装置第二实施例的功能模块示意图。
[0045] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0046] 应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0047] 本发明实施例的解决方案主要是:第一节点在接到第二节点发送的握手协议时,先从所述握手协议中提取出所述第二节点的签名数组以及ID信息,若所述ID信息预存在所述第一节点的节点配置文件中,则从所述节点配置文件中获取所述第二节点的配置信息,再根据所述第二节点的配置信息对提取的所述签名数组进行校验,在所述签名数组校验通过时,所述第一节点才与所述第二节点建立连接关系,以解决现有的区块链中节点仅通过创世块文件和网络ID进行校验而导致节点连接安全性低的问题。
[0048] 本发明中涉及的专业术语包括:
[0049] 区块链:即去中心化的
分布式账本数据库。区块链本身其实是一串使用
密码学算法所产生的数据块,每一个数据块中包含了多次区块链网络交易有效确认的信息。区块链技术起源于
比特币的应用,是一种成熟技术,并非本文阐述的发明内容。本文阐述的是将区块链技术用于金融领域的资产交易业务。
[0050] 联盟链:介于公有链和私有链之间。由若干组织一起合作维护一条区块链,该区块链的使用必须是有权限的管理,相关信息会得到保护,典型如金融组织。
[0051] 节点:特指参与到区块链网络里,进行交易和数据交换的网络节点,每个独立机构可以拥有一个到多个交易节点,每个交易节点是一组物理网络,计算机,区块链应用
软件以及数据库的组合。节点和节点之间,通过TCP/IP协议互相连接。
[0052] 记账人:可生成区块的节点身份和对当前区块进行签名验证的一种身份。由该身份的节点生成并确认最新的区块的合法性,然后广播给其他节点同步最新区块。
[0053] 针对现有技术存在的问题,本发明提供一种区块链的节点连接方法。
[0054] 参照图1,图1为本发明节点连接方法第一实施例的流程示意图。
[0055] 在本实施例中,所述节点连接方法包括:
[0056] 第一节点在接到第二节点发送的握手协议时,从所述握手协议中提取出所述第二节点的签名数组以及ID信息;若所述ID信息预存在所述第一节点的节点配置文件中,则从所述节点配置文件中获取所述第二节点的配置信息;根据所述第二节点的配置信息对提取的所述签名数组进行校验;在所述签名数组校验通过时,所述第一节点与所述第二节点建立连接关系。
[0057] 以下是本实施例中逐步实现节点连接的具体步骤:
[0058] 步骤S10,第一节点在接到第二节点发送的握手协议时,从所述握手协议中提取出所述第二节点的签名数组以及ID信息;
[0059] 在本实施例中,所述步骤S10之前,所述节点连接方法包括以下步骤:
[0060] 步骤1,所述第一节点对区块链中的各个节点的配置信息进行确认;
[0061] 步骤2,将确认后的各个节点的配置信息存储到所述第一节点的节点配置文件中;其中,所述配置信息包括节点身份类型、机构信息、节点描述信息、节点IP、端口号、节点公钥信息、状态信息。
[0062] 应当理解的是,为了在连接时各个节点之间相互进行配置信息认证,该方案将过程分为配置数据,加载配置,握手签名验证(本端节点自签名,对端节点验证),断开非法节点连接等步骤。
[0063] 1)配置数据:
[0064] 具体地,各个节点事先进行配置信息的定义,在本实施例中,联盟链中各个节点的配置信息的定义方式如下:
[0065]
[0066] 在对各个节点的配置信息定义之后,各个节点对参与联盟链的其它各个节点进行配置信息的确认,在配置信息确认之后,将确认后的各个节点的配置信息存储到各个节点对应的节点配置文件中。
[0067] 2)加载配置:
[0068] 在区块链中有节点启动时,该节点先从该节点的节点配置文件中加载当前链的全部节点的配置信息到内存,以便后续与各个节点建立连接的时候进行配置信息的校验。
[0069] 3)握手签名验证
[0070] 本实施例中,有节点要发起连接请求时,先进行握手协议的生成,以便于后续发送该握手协议至其它节点,下文将发送握手协议的节点作为第二节点,将接收握手协议的节点作为第一节点进行详述。
[0071] 其中,所述握手协议的发送方式为:所述第二节点对自身的配置信息进行哈希计算得到第一哈希值;根据预存的私钥对所述第一哈希值进行签名得到签名数组;将所述签名数组添加到包含自身ID信息的握手协议中以发送。
[0072] 本实施例中,所述第二节点先提取出配置信息中的机构信息、节点IP以及节点公钥信息进行哈希计算,以得到第一哈希值,然后采用预存的私钥对所述第一哈希值进行签名,得到签名数组,再获取包含所述第二节点的ID信息的协议,最终将所述签名数组添加到包含自身ID信息的协议中,以得到所述握手协议。后续将所述握手协议发送至第一节点中进行校验。
[0073] 可以理解,同一个区块链中的每个节点都存有一对公钥和私钥,每个节点采用自身的私钥加密之后,后续其它节点采用对应的公钥即可进行解密。本实施例中值得注意的是,区块链包括多个节点,当有新的节点要接入该区块链时,该新的节点是与该区块链中的各个节点分别建立连接关系,本文为了方便理解,仅以两个节点进行详述。
[0074] 在本实施例中,当所述第一节点在接收到所述第二节点发送的握手协议时,先采用所述私钥对应的公钥对该握手协议进行解密,然后从解密后的握手协议中提取出所述第二节点的签名数组的哈希值。
[0075] 步骤S20,若所述ID信息预存在所述第一节点的节点配置文件中,则从所述节点配置文件中获取所述第二节点的配置信息;
[0076] 步骤S30,根据所述第二节点的配置信息对提取的所述签名数组进行校验;
[0077] 在所述第一节点从所述节点配置文件中获取到所述第二节点的配置信息之后,即可根据所述第二节点的配置信息对提取的所述签名数组进行校验。具体地,参照图2,所述步骤S30包括:
[0078] 步骤S31,所述第一节点对所述第二节点的配置信息进行哈希计算,得到第二哈希值;
[0079] 步骤S32,通过所述私钥对应的公钥对提取的所述签名数组进行解密,以得到所述第一哈希值;
[0080] 步骤S33,将所述第二哈希值与所述第一哈希值进行对比,以实现对提取的所述签名数组进行校验;其中,在所述第二哈希值与所述第一哈希值一致时,认为所述签名数组校验通过。
[0081] 本实施例中,所述第一节点对所述第二节点的配置信息中的ID信息、节点IP和机构信息进行哈希计算,得到第二哈希值,然后通过所述私钥对应的公钥对提取的所述签名数组进行解密,以得到所述第一哈希值,然后将所述第二哈希值与所述第一哈希值进行对比,若所述第二哈希值与所述第一哈希值一致,则认为所述签名数组校验通过。
[0082] 可以理解,若还原后的所述节点公钥信息与所述节点配置文件中所述第二节点的节点公钥信息不一致,说明该第二节点是异常节点,可能是在请求连接的过程中被伪造或者是发生其它异常,则认为所述签名数组校验未通过,此时,所述第一节点拒绝所述第二节点的连接请求。
[0083] 步骤S40,在所述签名数组校验通过时,所述第一节点与所述第二节点建立连接关系。
[0084] 在本实施例中,在所述签名数组校验通过时,需要进一步判断所述第二节点对所述第一节点是否也校验通过,在所述第二节点对所述第一节点也校验通过时,所述第一节点与所述第二节点建立连接关系。
[0085] 也就是说,在所述第二节点向第一节点发送自己的配置信息的同时,所述第一节点也向第二节点发送自己的配置信息,以便于第二节点在所述第二节点的节点配置文件中,存储所述第一节点的配置信息,当然,这是在不同的线程里同步进行的两个过程。同样,当所述第一节点收到第二节点的握手协议时,所述第二节点也会收到第一节点的握手协议,第二节点对第一节点进行和上述相同流程的校验,仅当双方彼此校验通过,才可建立连接关系。否则,发现身份验证有异常的一方主动拒绝连接。
[0086] 在发明中,任何一个加入联盟链的节点都需要有一定的资质,并且需要得到联盟链审核通过;在各节点上进行配置信息的配置,才能使节点连接到联盟链上进行获取数据和交易操作。经过资质审核的节点,其配置信息是有现实确认的,准确的,丰富的,可辨识,可追溯的配置信息。该配置信息会带到联盟链的交易和签名环节,节点在链上进行交易和签名动作时,配置信息都是可知的。
[0087] 进一步地,本发明对连接的节点进行创世块文件和网络ID之外的配置信息验证,这些信息都是事先审核过并配置完成的,比单独用创世块文件和网络ID增加了更高的安全级别,节点连接到联盟链时和连接后都可以根据这些信息进行认证,拒绝恶意或非法节点连接,保证了节点连接的安全性。
[0088] 本实施例提出的节点连接方法,第一节点在接到第二节点发送的握手协议时,先从所述握手协议中提取出所述第二节点的签名数组以及ID信息,若所述ID信息预存在所述第一节点的节点配置文件中,则从所述节点配置文件中获取所述第二节点的配置信息,再根据所述第二节点的配置信息对提取的所述签名数组进行校验,在所述签名数组校验通过时,所述第一节点才与所述第二节点建立连接关系,而不仅仅是根据创世块文件和网络ID对节点进行校验,本发明对节点的配置信息进行校验,提高了区块链中节点连接的安全性。
[0089] 进一步地,为了提高节点连接的安全性,基于第一实施例提出本发明节点连接方法的第二实施例,在本实施例中,参照图3,所述步骤S40之后,所述节点连接方法还包括:
[0090] 步骤S50,若所述第一节点基于业务规则检测到所述第二节点存在违规操作,则断开与所述第二节点的连接关系;
[0091] 步骤S60,在所述节点配置文件中将所述第二节点的状态标记为异常,便于后续接收到所述第二节点的连接请求时,拒绝其连接请求。
[0092] 在本实施例中,在所述第一节点与所述第二节点建立连接关系之后,所述第一节点基于当前区块链预设的业务规则实时监测连接的所述第二节点,同理,所述第二节点也会基于所述业务规则监测所述第一节点。当所述第一节点检测到所述第二节点存在违规操作时,断开与所述第二节点的连接关系。也就是说,在监测到节点存在违规操作时,根据这些操作里所包含的公钥,签名等信息,可以得到该节点的配置信息,然后根据节点的配置信息(节点IP,节点公钥信息,机构信息等),找出是否有该节点的网络连接,如有,发出指令,主动断开对该节点的连接,如无,忽略该操作。
[0093] 也就是说,联盟链中的各个节点根据预设的业务规则,判定区块链网络里某一个、某一些非法操作,其中,所述业务规则根据具体场景定义,这里不做限定。在同一个联盟链里,所有的节点都遵循同样的业务规则,联盟链网络里,所有的节点都遵循同样的业务规则和主动断开的指令,这样非法节点将无法通过联盟链的任意一个节点再连接到联盟链里。
[0094] 在断开与所述第二节点的连接关系之后,所述第一节点在所述节点配置文件中将所述第二节点的状态标记为异常,便于后续接收到所述第二节点的连接请求时,直接拒绝其连接请求。由于所述第一节点事先存储了该第二节点的配置信息,且该配置信息中包含状态信息这一项,优选正常时标识为0,异常时标识为-1,因此,在监测到所述第二节点异常时,即可将所述第二节点的状态信息从0更换为-1。
[0095] 进一步地,还可以打印本地日志,留存该非法节点的非法操作记录,和连接被断开的信息,便于查看具体的信息。
[0096] 进一步地,本发明中还可以查看已生成区块的记账者和签名机构信息。在区块链软件运行过程中,生成区块的节点以及对区块签名的节点,都会在区块中带入自己的签名信息。结合节点身份配置数据,根据签名则可知对应节点的配置信息。在管理平台上,查看每个区块信息的时候可以得到该区块获得过那些机构信息的签名。
[0097] 基于图1至图3所述实施例的具体描述,本实施例以具体的应用场景再次描述本发明节点连接方法的实现过程。
[0098] 请参照图4,图4是未知节点发起连接的场景示意图。
[0099] 如图4所示,D节点是未知节点,A、B、C已建立联盟链的节点。这时D节点发送握手连接,则在A、B、C节点收到D的握手请求后,发现没有D节点的信息,则拒绝该节点的连接。
[0100] 请参照图5,图5是已获得链认可的节点发起连接的场景示意图。
[0101] D是新加入的已获链认可的节点。则D发起握手请求,则A、B、C在收到D的握手请求后,A—D、B—D、C—D之间均进行两两间的相互确认,确认该节点为合法节点,与该节点进行连接,生成ABCD联盟链。可以理解,以上场景的身份认证,是双向的,A,B,C需要认证D的身份,D也需要认证A,B,C的身份是否合法,否则有可能连入一个不合法的网络里。
[0102] 本发明进一步提供一种节点连接装置。
[0103] 参照图6,图6为本发明节点连接装置第一实施例的功能模块示意图。
[0104] 需要强调的是,对本领域的技术人员来说,图6所示功能模块图仅仅是一个较佳实施例的示例图,本领域的技术人员围绕图6所示的节点连接装置的功能模块,可轻易进行新的功能模块的补充;各功能模块的名称是自定义名称,仅用于辅助理解该节点连接装置的各个程序功能块,不用于限定本发明的技术方案,本发明技术方案的核心是,各自定义名称的功能模块所要达成的功能。
[0105] 在本实施例中,所述节点连接装置包括:
[0106] 提取模块10,用于在接到第二节点发送的握手协议时,从所述握手协议中提取出所述第二节点的签名数组以及ID信息;
[0107] 在本实施例中,所述提取模块10在接到第二节点发送的握手协议时,从所述握手协议中提取出所述第二节点的签名数组以及ID信息之前,还包括预设模块以对区块链中的各个节点的配置信息进行确认并存储,所述预设模块包括确认模块和存储模块,其中,[0108] 所述确认模块,用于对区块链中的各个节点的配置信息进行确认;
[0109] 所述存储模块,用于将确认后的各个节点的配置信息存储到所述第一节点的节点配置文件中;其中,所述配置信息包括节点身份类型、机构信息、节点描述信息、节点IP、端口号、节点公钥信息、状态信息。
[0110] 应当理解的是,为了在连接时各个节点之间相互进行配置信息认证,该方案将过程分为配置数据,加载配置,握手签名验证(本端节点自签名,对端节点验证),断开非法节点连接等步骤。
[0111] 1)配置数据:
[0112] 具体地,各个节点事先进行配置信息的定义,在本实施例中,联盟链中各个节点的配置信息的定义方式如下:
[0113]
[0114]
[0115] 在对各个节点的配置信息定义之后,各个节点对参与联盟链的其它各个节点进行配置信息的确认,在配置信息确认之后,将确认后的各个节点的配置信息存储到各个节点对应的节点配置文件中。
[0116] 2)加载配置:
[0117] 在区块链中有节点启动时,该节点先从该节点的节点配置文件中加载当前链的全部节点的配置信息到内存,以便后续与各个节点建立连接的时候进行配置信息的校验。
[0118] 3)握手签名验证
[0119] 本实施例中,有节点要发起连接请求时,先进行握手协议的生成,以便于后续发送该握手协议至其它节点,下文将发送握手协议的节点作为第二节点,将接收握手协议的节点作为第一节点进行详述。
[0120] 其中,所述握手协议的发送方式为:所述第二节点对自身的配置信息进行哈希计算得到第一哈希值;根据预存的私钥对所述第一哈希值进行签名得到签名数组;将所述签名数组添加到包含自身ID信息的握手协议中以发送。
[0121] 本实施例中,所述第二节点先提取出配置信息中的机构信息、节点IP以及节点公钥信息进行哈希计算,以得到第一哈希值,然后采用预存的私钥对所述第一哈希值进行签名,得到签名数组,再获取包含所述第二节点的ID信息的协议,最终将所述签名数组添加到包含自身ID信息的协议中,以得到所述握手协议。后续将所述握手协议发送至第一节点中进行校验。
[0122] 可以理解,同一个区块链中的每个节点都存有一对公钥和私钥,每个节点采用自身的私钥加密之后,后续其它节点采用对应的公钥即可进行解密。本实施例中值得注意的是,区块链包括多个节点,当有新的节点要接入该区块链时,该新的节点是与该区块链中的各个节点分别建立连接关系,本文为了方便理解,仅以两个节点进行详述。
[0123] 在本实施例中,当所述第一节点在接收到所述第二节点发送的握手协议时,先采用所述私钥对应的公钥对该握手协议进行解密,然后所述提取模块10从解密后的握手协议中提取出所述第二节点的签名数组的哈希值。
[0124] 获取模块20,用于若所述ID信息预存在第一节点的节点配置文件中,则从所述节点配置文件中获取所述第二节点的配置信息;
[0125] 校验模块30,用于根据所述第二节点的配置信息对提取的所述签名数组进行校验;
[0126] 在所述获取模块20从所述节点配置文件中获取到所述第二节点的配置信息之后,获取模块20即可根据所述第二节点的配置信息对提取的所述签名数组进行校验。具体地,参照图7,所述校验模块30包括:
[0127] 计算单元31,用于对所述第二节点的配置信息进行哈希计算,得到第二哈希值;
[0128] 解密单元32,用于通过所述私钥对应的公钥对提取的所述签名数组进行解密,以得到所述第一哈希值;
[0129] 校验单元33,用于将所述第二哈希值与所述第一哈希值进行比对,以实现对所述签名数组进行校验;其中,在所述第二哈希值与所述第一哈希值一致时,认为所述签名数组校验通过。
[0130] 本实施例中,计算单元31对所述第二节点的配置信息中的ID信息、节点IP和机构信息进行哈希计算,得到第二哈希值,然后解密单元32通过所述私钥对应的公钥对提取的所述签名数组进行解密,以得到所述第一哈希值,然后所述校验单元33将所述第二哈希值与所述第一哈希值进行对比,若所述第二哈希值与所述第一哈希值一致,则认为所述签名数组校验通过。
[0131] 可以理解,若还原后的所述节点公钥信息与所述节点配置文件中所述第二节点的节点公钥信息不一致,说明该第二节点是异常节点,可能是在请求连接的过程中被伪造或者是发生其它异常,则认为所述签名数组校验未通过,此时,所述第一节点拒绝所述第二节点的连接请求。
[0132] 建立模块40,用于在所述签名数组校验通过时,与所述第二节点建立连接关系。
[0133] 在本实施例中,在所述签名数组校验通过时,需要进一步判断所述第二节点对所述第一节点是否也校验通过,在所述第二节点对所述第一节点也校验通过时,建立模块40与所述第二节点建立连接关系。
[0134] 也就是说,在所述第二节点向第一节点发送自己的配置信息的同时,所述第一节点也向第二节点发送自己的配置信息,以便于第二节点在所述第二节点的节点配置文件中,存储所述第一节点的配置信息,当然,这是在不同的线程里同步进行的两个过程。同样,当所述第一节点收到第二节点的握手协议时,所述第二节点也会收到第一节点的握手协议,第二节点对第一节点进行和上述相同流程的校验,仅当双方彼此校验通过,才可建立连接关系。否则,发现身份验证有异常的一方主动拒绝连接。
[0135] 在发明中,任何一个加入联盟链的节点都需要有一定的资质,并且需要得到联盟链审核通过;在各节点上进行配置信息的配置,才能使节点连接到联盟链上进行获取数据和交易操作。经过资质审核的节点,其配置信息是有现实确认的,准确的,丰富的,可辨识,可追溯的配置信息。该配置信息会带到联盟链的交易和签名环节,节点在链上进行交易和签名动作时,配置信息都是可知的。
[0136] 进一步地,本发明对连接的节点进行创世块文件和网络ID之外的配置信息验证,这些信息都是事先审核过并配置完成的,比单独用创世块文件和网络ID增加了更高的安全级别,节点连接到联盟链时和连接后都可以根据这些信息进行认证,拒绝恶意或非法节点连接,保证了节点连接的安全性。
[0137] 本实施例提出的节点连接装置,第一节点在接到第二节点发送的握手协议时,先从所述握手协议中提取出所述第二节点的签名数组以及ID信息,若所述ID信息预存在所述第一节点的节点配置文件中,则从所述节点配置文件中获取所述第二节点的配置信息,再根据所述第二节点的配置信息对提取的所述签名数组进行校验,在所述签名数组校验通过时,所述第一节点才与所述第二节点建立连接关系,而不仅仅是根据创世块文件和网络ID对节点进行校验,本发明对节点的配置信息进行校验,提高了区块链中节点连接的安全性。
[0138] 进一步地,为了提高节点连接的安全性,基于第一实施例提出本发明节点连接装置的第二实施例,在本实施例中,参照图8,所述节点连接装置还包括:
[0139] 断开模块50,用于若基于业务规则检测到所述第二节点存在违规操作,则断开与所述第二节点的连接关系;
[0140] 标记模块60,用于在所述节点配置文件中将所述第二节点的状态标记为异常,便于后续接收到所述第二节点的连接请求时,拒绝其连接请求。
[0141] 在本实施例中,在所述第一节点与所述第二节点建立连接关系之后,所述第一节点基于当前区块链预设的业务规则实时监测连接的所述第二节点,同理,所述第二节点也会基于所述业务规则监测所述第一节点。当所述第一节点检测到所述第二节点存在违规操作时,断开模块50断开与所述第二节点的连接关系。也就是说,在监测到节点存在违规操作时,根据这些操作里所包含的公钥,签名等信息,可以得到该节点的配置信息,然后根据节点的配置信息(节点IP,节点公钥信息,机构信息等),找出是否有该节点的网络连接,如有,发出指令,主动断开对该节点的连接,如无,忽略该操作。
[0142] 也就是说,联盟链中的各个节点根据预设的业务规则,判定区块链网络里某一个、某一些非法操作,其中,所述业务规则根据具体场景定义,这里不做限定。在同一个联盟链里,所有的节点都遵循同样的业务规则,联盟链网络里,所有的节点都遵循同样的业务规则和主动断开的指令,这样非法节点将无法通过联盟链的任意一个节点再连接到联盟链里。
[0143] 在所述断开模块50断开与所述第二节点的连接关系之后,标记模块60在所述节点配置文件中将所述第二节点的状态标记为异常,便于后续接收到所述第二节点的连接请求时,直接拒绝其连接请求。由于所述第一节点事先存储了该第二节点的配置信息,且该配置信息中包含状态信息这一项,优选正常时标识为0,异常时标识为-1,因此,在监测到所述第二节点异常时,即可将所述第二节点的状态信息从0更换为-1。
[0144] 进一步地,还可以打印本地日志,留存该非法节点的非法操作记录,和连接被断开的信息,便于查看具体的信息。
[0145] 进一步地,本发明中还可以查看已生成区块的记账者和签名机构信息。在区块链软件运行过程中,生成区块的节点以及对区块签名的节点,都会在区块中带入自己的签名信息。结合节点身份配置数据,根据签名则可知对应节点的配置信息。在管理平台上,查看每个区块信息的时候可以得到该区块获得过那些机构信息的签名。
[0146] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0147] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0148] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用
硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,
服务器,
空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0149] 以上仅为本发明的优选实施例,并非因此限制本发明的
专利范围,凡是利用本发明
说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。