
技术摘要:
本发明涉及DPOS共识节点权益安全技术领域,提供了一种解决DPOS共识节点权益安全隐患的方法及系统,其方法包括:接收一账户地址发送的修改节点地址的请求,所述请求中包括新部署的更新节点地址;验签所述账户地址,验签通过后,根据所述账户地址在节点映射表中找到与之 全部
背景技术:
在DPOS共识算法中,节点想要参与区块链共识,并从中获得收益,就必须质押权益 作为保证,以防止节点在共识中作恶。参与共识的节点质押的权益越多,出块的概率就越 高。 当前,有很多节点持有者为了方便,将节点委托给专门的机构来代管,或者将节点 放在云服务器上。即使是自主运营的物理节点,很多也都机构化了,比如EOS的节点全是由 机构运营。以上种种情况,将给共识节点带来权益安全问题。 节点在参与共识的过程中,必须用到私钥,因为共识过程中的通信消息需要私钥 的签名来验证身份,否则其他节点将无法验证消息的真伪和安全性。所以,私钥是必须配置 在节点中的。如此一来,代管机构、云服务商或者机构自己的运维人员,都有机会盗取节点 中的私钥,从而获取节点的质押权益和区块奖励。节点中的权益对这些相关参与者来说,对 内或对相关参与者几乎处于不设防状态。 在专利申请CN109714404A--基于Raft算法的区块链共识方法及装置中公开:“提 供一种基于Raft算法的区块链共识方法,区块链中包含预先设置的共识节点,共识节点的 状态包括:领导者、跟随者以及候选者,其特征在于,区块链中还设置用于获取共识节点的 节点信息的监管者节点,方法包括:在确定共识节点由跟随者状态转换为候选者状态进入 选举流程后,通过监管者节点获取选举流程中各共识节点的节点信息;节点信息包括:区块 高度、在线时长以及平均投票次数;基于Raft算法选举领导者状态的共识节点,领导者状态 的共识节点用于记录交易事件并生成新区块;当确定领导者状态的共识节点任期结束时, 通过监管者节点将各共识节点的节点信息发送给领导者状态的共识节点;通过领导者状态 的共识节点根据各共识节点的区块高度、在线时长、以及平均投票次数确定至多一个推荐 候选者共识节点;通过领导者状态的共识节点广播推荐候选者共识节点;当确定推荐候选 者共识节点的状态转换为候选者状态时,进入下一任期选举流程。”上述专利申请中通过设 置监管者节点,通过监管者节点跟踪并更新各共识节点的区块高度、在线时长以及平均投 票次数,进一步的来确定至多一个推荐候选者共识节点并将其进行广播,推荐候选者共识 节点的状态转换为候选者状态,进入下一任期选举流程。仅能够对将要候选的节点的安全 性进行监督,并不能够对已经被选中参与到区块链共识中的节点进行监督,当节点被选举 参与到区块链共识后,如果节点的私钥被盗取,将没有任何办法能够监督到。并且没有任何 办法监管到节点的质押权以及出块的奖励。一旦私钥被窃取,对整个区块链网络的安全性, 以及对节点持有者的资产所有权将会造成严重的威胁。同时设置监管者节点的方式,也与 区块链的去中心化的核心价值相违背。 在专利申请CN110891064A--区块链上根据实用拜占庭算法的共识方法及其系统 5 CN 111586068 A 说 明 书 2/13 页 中公开:“本申请第一方面公开了区块链上根据实用拜占庭算法的共识方法,区块链系统包 括多个区块链节点,出块节点组包括预定数量的区块链节点,所述方法包括:所述出块节点 组通过实用拜占庭算法对第一区块进行共识;第一区块链节点通过可验证随机函数的方式 选择第二区块链节点对所述第一区块进行验证,所述第一区块链节点为出块节点组中的任 意一个出块节点,所述第二区块链节点为所述出块节点组以外的区块链节点;所述第二区 块链节点对所述第一区块验证成功后,发送验证成功的响应给所述第一区块链节点,以便 于所述出块节点组将所述第一区块上链。在一个可能的实施方式中,所述预定数量为3M 1, M为正整数。在一个可能的实施方式中,所述第一区块链节点对交易进行打包成第一区块; 所述第一区块链节点对所述第一区块进行验证后,将验证通过的结果发送给所述出块节点 组中的其他出块节点进行共识。在一个可能的实施方式中,M=1。”上述专利申请中对新产 生的区块进行双重验证,保证区块链的安全性,防止区块链节点作恶。同样的不能对已经被 选举参与到区块链共识后的节点进行安全监督,不能解决已经参与到区块链中的共识节点 的权益安全隐患。 综上所述,在现有技术中,参与共识的节点的私钥容易被盗取,节点参与共识的安 全性以及获得的质押权益和区块奖励的安全性都处于对内或对相关参与方不设防的状态。 然而,现有技术中并没有一种好的方法能解决上述问题。
技术实现要素:
针对上述问题,本发明的目的在于提供一种解决DPOS共识节点权益安全隐患的方 法及系统,能够在保证节点安全参与到共识中的同时,有效杜绝共识节点在DPOS算法中质 押的权益及出块奖励被代管机构、云服务商或机构内部运维人员窃取,也能在节点无法被 有效控制时,及时扭转局面,杜绝损失持续扩大化。 本发明的上述发明目的是通过以下技术方案得以实现的: 一种解决DPOS共识节点权益安全隐患的方法,包括以下步骤: 接收一账户地址发送的修改节点地址的请求,所述请求中包括新部署的更新节点 地址; 验签所述账户地址,验签通过后,根据所述账户地址在节点映射表中找到与之映 射的节点地址,并用所述更新节点地址进行替换,所述节点映射表为预设于DPOS共识中的 所述节点地址与所述账户地址的对应关系; 所述DPOS共识选择出块的出块节点,当所述账户地址被所述DPOS共识选中后,通 过替换后的所述节点地址进行出块。 进一步地,验签所述账户地址,具体为: 通过所述账户地址发送修改节点地址的请求之前,应用所述账户地址的私钥进行 签名; 所述DPOS共识在接收到所述账户地址发送的修改所述节点地址的请求之后,验证 所述节点映射表中是否包括所述账户地址,并且同时应用预设于所述DPOS共识中的所述账 户地址的公钥,验证所述账户地址。 进一步地,在接收一所述账户地址发送的修改所述节点地址的请求之前,还包括: 对所述节点地址的私钥加密,将加密后的所述节点地址的私钥写入节点配置文件 6 CN 111586068 A 说 明 书 3/13 页 中,以供所述出块节点参与所述DPOS共识的通信; 所述账户地址的私钥由所述出块节点的持有者保存,以供所述出块节点通过所述 账户地址修改所述节点地址。 进一步地,所述DPOS共识选择出块的所述出块节点,具体包括步骤: 读取所述节点映射表中所有的所述账户地址以及所述账户地址的状态; 根据所述账户地址的质押权益,选择出块的所述账户地址; 根据选定的所述账户地址,从所述节点映射表中读取相对应的所述节点地址; 所述DPOS共识将所述节点地址广播到区块链全网。 进一步地,在所述DPOS共识选择出块的所述出块节点之后,还包括步骤: 在所述区块链全网中接收到广播的所述节点地址,将广播的所述节点地址与本地 的所述节点地址进行对比; 若不相同,所述出块节点不做任何操作,等待从其他的出块节点同步区块;若相 同,所述出块节点生成新的所述区块,同时将所述区块广播到所述区块链全网; 当所述区块被确认后,根据所述节点地址在所述节点映射表中读取对应的所述账 户地址,将区块奖励转入所述账户地址,完成出块奖励。 一种出块节点,包括出块模块和账户模块; 所述出块模块,用于建立并存储节点地址,并通过所述节点地址参与到DPOS共识 中,在被所述DPOS选中后,通过所述节点地址进行出块; 所述账户模块,用于建立并存储账户地址,通过所述账户地址发送修改节点地址 的请求,并将出块获得的区块奖励存储于所述账户地址中。 进一步地,所述出块模块进一步包括:处理子模块和存储子模块; 所述处理子模块,进一步包括: 私钥加密存储单元,用于对所述节点地址的私钥加密,将加密后的所述节点地址 的私钥写入节点配置文件中,以供所述出块节点参与所述DPOS共识的通信; 区块生成单元,用于在所述区块链全网中接收到广播的所述节点地址之后,将广 播的所述节点地址与本地的所述节点地址进行对比;若不相同,所述区块生成单元不做任 何操作,等待从其他的出块节点同步区块;若相同,所述区块生成单元生成新的所述区块, 同时将所述区块广播到所述区块链全网; 所述存储子模块,进一步包括: 配置文件存储单元,用于存储节点配置文件,其中,所述节点配置文件用于在对所 述节点地址的私钥加密,将加密后的所述节点地址的私钥写入所述节点配置文件中,以供 所述出块节点参与所述DPOS共识的通信。 进一步地,所述账户模块进一步包括:处理子模块和存储子模块; 所述处理子模块,进一步包括: 节点地址修改请求单元,用于发送修改DPOS共识中账户地址所对应的节点地址的 请求,所述请求中包括新部署的更新节点地址; 所述存储子模块,进一步包括: 资产存储单元,用于存储出块所得的区块奖励。 一种DPOS共识,包括处理模块和存储模块; 7 CN 111586068 A 说 明 书 4/13 页 所述处理模块,进一步包括: 账户地址验签单元,用于在接收到所述账户地址发送的修改所述节点地址的请求 之后,验证所述节点映射表中是否包括所述账户地址,并且同时应用预设于所述DPOS共识 中的所述账户地址的公钥,验证所述账户地址; 节点地址修改单元,用于在所述账户地址验签通过后,根据所述账户地址在节点 映射表中找到与之映射的节点地址,并用所述更新节点地址进行替换,所述节点映射表为 预设于DPOS共识中的所述节点地址与所述账户地址的对应关系,以利于所述DPOS共识选择 出块的所述出块节点时,通过替换后的所述节点地址进行出块; DPOS共识出块单元,用于读取所述节点映射表中所有的所述账户地址以及所述账 户地址的状态;根据所述账户地址的质押权益,选择出块的所述账户地址;根据选定的所述 账户地址,从所述节点映射表中读取相对应的所述节点地址;将所述节点地址广播到区块 链全网; 区块确认单元,用于确认所生成的区块,并且根据所述节点地址在所述节点映射 表中读取对应的所述账户地址,将区块奖励转入所述账户地址,完成出块奖励; 所述存储模块,进一步包括: 节点映射存储单元,用于存储节点映射表,当所述出块节点参与所述DPOS共识时, 同时提供所述节点地址和所述账户地址,并且将所述节点地址和所述账户地址一一对应的 写入所述节点映射表中。 一种解决DPOS共识节点权益安全隐患的系统,包括: DPOS共识,若干个参与所述DPOS共识的出块节点; 所述DPOS共识,进一步包括: 账户地址验签单元,用于在接收到所述账户地址发送的修改所述节点地址的请求 之后,验证所述节点映射表中是否包括所述账户地址,并且同时应用预设于所述DPOS共识 中的所述账户地址的公钥,验证所述账户地址; 节点地址修改单元,用于在所述账户地址验签通过后,根据所述账户地址在节点 映射表中找到与之映射的节点地址,并用所述更新节点地址进行替换,所述节点映射表为 预设于DPOS共识中的所述节点地址与所述账户地址的对应关系,以利于所述DPOS共识选择 出块的所述出块节点时,通过替换后的所述节点地址进行出块; DPOS共识出块单元,用于读取所述节点映射表中所有的所述账户地址以及所述账 户地址的状态;根据所述账户地址的质押权益,选择出块的所述账户地址;根据选定的所述 账户地址,从所述节点映射表中读取相对应的所述节点地址;将所述节点地址广播到区块 链全网; 区块确认单元,用于确认所生成的区块,并且根据所述节点地址在所述节点映射 表中读取对应的所述账户地址,将区块奖励转入所述账户地址,完成出块奖励; 所述出块节点,进一步包括: 所述出块模块,用于建立并存储节点地址,并通过所述节点地址参与到DPOS共识 中,在被所述DPOS选中后,通过所述节点地址进行出块; 所述账户模块,用于建立并存储账户地址,通过所述账户地址发送修改节点地址 的请求,并将出块获得的区块奖励存储于所述账户地址中。 8 CN 111586068 A 说 明 书 5/13 页 与现有技术相比,本发明包括以下至少一种有益效果是: (1)通过一种解决DPOS共识节点权益安全隐患的方法,在发现出块节点无法被有 效控制,比如出块节点故障无法修复和重启、远程节点断线失联、云服务瘫痪、节点被黑客 劫持等等情况时。重新部署一台节点加入区块链网络,通过账户地址向区块链网络发送修 改节点地址的请求,请求中包括新部署的更新节点地址。在区块链网络收到请求后,验证账 户地址的签名。验证通过后,通过账户地址在节点映射表中找到原来的节点地址,并用更新 节点地址进行替换。下次DPOS共识选择出块节点时,将读取新的节点地址进行出块。避免了 当节点地址的私钥被窃取后,节点中的权益,比如说质押权益和区块奖励将会受到损失。 (2)通过建立上述的节点地址和账户地址分离的方案,在节点地址的私钥被窃取 后,通过账户地址替换一个新的节点地址,在保护了节点中的权益安全的同时,也确保了节 点出块的安全性,避免了窃取者随意进行出块,退出出块竞选等操作,进一步维护了整个区 块链网络的安全性。 (3)在通过账户地址发送修改节点地址的请求之前,应用账户地址的私钥进行签 名,在DPOS共识接收到账户地址发送的请求之后,验证节点映射表中是否包括账户地址,并 且同时应用预设于DPOS共识中的账户地址的公钥,验证账户地址。确保了修改节点地址的 请求为节点持有者发出,并且确保节点持有者为已经参与到DPOS共识中的节点持有者。 附图说明 图1为本发明一种解决DPOS共识节点权益安全隐患的方法的整体体流程图; 图2为本发明一种出块节点的整体结构图; 图3为本发明一种出块节点中出块模块的结构图; 图4为本发明一种出块节点中账户模块的结构图; 图5为本发明一种DPOS共识的结构图。