一种基于区块链技术的多Agent交易信息保护方法转让专利
申请号 : CN201910881815.8
文献号 : CN110569675B
文献日 : 2021-07-09
发明人 : 徐浩 , 史小宏 , 张春月 , 易典
申请人 : 上海海事大学
摘要 :
权利要求 :
1.一种基于区块链技术的多Agent交易信息保护方法,其特征在于,该方法包含:S1、为多Agent电子商务系统中的各个实体创建账户,生成账户公钥、私钥信息;
S2、卖方创建卖方多Agent系统,买方创建多个买方多Agent系统,所述买方多Agent系统与所述卖方多Agent系统交互作用,交互过程包含:买方Agent在网络中迁移到卖方Agent的本地环境中,卖方Agent和买方Agent交互协商;
S3、协商一致后,根据买卖双方的数字签名创建一个智能合约,对智能合约的交易信息进行加密;
S4、采用Raft共识算法从Follower节点中选举出一个Leader节点,Follower节点向Leader节点发送增加一个日志的请求,若Leader节点收到半数以上Follower节点的确认成功信息,将交易信息作为区块体;
S5、根据上一区块的哈希值和时间戳信息生成区块头,将所述区块头和步骤S4中的区块体结合形成区块;
S6、将步骤S5中形成的区块记录到区块链,并通知所有Follower节点同步本地的区块链状态,完成多Agent交易信息的存储。
2.如权利要求1所述的基于区块链技术的多Agent交易信息保护方法,其特征在于,所述步骤S2中,在卖方Agent和买方Agent交互协商前,卖方Agent采用一种基于公钥基础设施的身份认证协议对买方Agent的身份进行验证,具体为:买方Agent在网络中迁移到卖方Agent的本地环境中,买方Agent携带其私钥加密的数字证书,卖方Agent用买方的公钥对加密的数字证书进行解密,向提供第三方身份验证的认证机构发送验证信息,认证机构验证所述数字证书真实有效后,买卖双方可交互协商。
3.如权利要求1或2所述的基于区块链技术的多Agent交易信息保护方法,其特征在于,所述交互过程进一步包含:
S21、生成买方多Agent系统后的用户向该生成的买方多Agent系统提出购买要求;所述买方多Agent系统包含管理Agent、搜索Agent、决策Agent、协商Agent和交易Agent;
S22、根据用户的需求,所述管理Agent在整个流程中协调与管理各个Agent子模块,所述搜索Agent移动到服务器管理员站点,查找所述服务器管理员站点上的电子目录,得到相应的卖方站点信息;
S23、所述搜索Agent把查找结果返回给所述决策Agent;
S24、所述决策Agent决定有必要进行协商的商家个数及站点地址,把决策结果发送给所述协商Agent;
S25、根据所述决策Agent做出的结果,所述协商Agent生成多个子协商Agent,把他们派送到相应的卖方站点进行协商,然后某一个买方子协商Agent移动到某一个卖方站点,开始和卖方的子协商Agent进行协商;
S26、所述协商Agent总结所有买方子协商Agent的协商结果,把成功的协商信息发送给所述决策Agent;
S27、所述决策Agent分析所述协商Agent发送的信息,决定交易的伙伴,把决定的交易信息发送给所述交易Agent;
S28、所述交易Agent负责具体的交易事项。
4.如权利要求1所述的基于区块链技术的多Agent交易信息保护方法,其特征在于,步骤S3中,采用双SHA256哈希函数与ECDSA非对称加密算法对交易信息进行加密。
5.如权利要求1或4所述的基于区块链技术的多Agent交易信息保护方法,其特征在于,所述步骤S3中的加密过程具体为:
S31、根据买卖双方的数字签名创建一个智能合约,发送方对创建的智能合约运用哈希算法,得到一段第一哈希值的签名;
S32、发送方使用ECDSA非对称加密算法生成一对公有密钥和私有密钥,发送方使用私有密钥对签名加密,形成一个加密后的签名;
S33、发送方将ECDSA加密后的签名、智能合约一起发送给接收方;
S34、接收方接收发送方传来的信息,并使用发送方的公钥对ECDSA加密后的签名进行解密,还原出一个第二哈希值,查看所述第二哈希值与所述第一哈希值是否一致,若一致,则智能合约未被篡改;
若所述第二哈希值与所述第一哈希值不一致,或从智能合约中检查交易请求节点账户状态时账户不存在或状态异常,或检查智能合约状态显示被删除,则直接丢掉交易,向区块链中的各个节点发送交易异常的信息。
6.如权利要求1所述的基于区块链技术的多Agent交易信息保护方法,其特征在于,所述步骤S4中,所述Raft共识算法为一种基于拜占庭容错的BFT‑Raft共识算法,当存在f个拜占庭节点时,BFT‑Raft集群必须至少包含n个节点,则非拜占庭节点为quorum=n‑f个,其中,n≥3f+1,n为集群的节点总数,也为Follower节点、Candidate节点、Leader节点的总个数;
所述基于拜占庭容错的BFT‑Raft共识算法中,利用数字签名作为消息被篡改的检测机制,BFT‑Raft集群中的各个节点之间在发送消息之前签名,拒绝不包含有效签名的消息。
7.如权利要求6所述的基于区块链技术的多Agent交易信息保护方法,其特征在于,所述步骤S4中,采用基于拜占庭容错的BFT‑Raft共识算法从Follower节点中选举出一个Leader节点具体为:
如果一个Follower节点发现在超过选举定时器的时间以后一直没有收到Leader节点发送的心跳请求,则Follower节点发送新选举任期的开始选举消息给其他节点;
一个Follower节点收到2f+1个开始选举消息后,该Follower节点成为所述新选举任期的Candidate节点,所述Candidate节点向其他节点发送预投票请求消息,其中,所述预投票请求消息包含任期,2f+1签名的开始选举消息和Candidate日志列表最后一项己经达成共识的日志项的index;
Follower节点收到预投票请求消息,若预投票请求消息中的任期编号小于节点自身的任期编号,Follower节点响应拒绝投票消息,否则,Follower节点再检测消息中Candidate日志列表最后一项己经达成共识的日志项的index是否大于节点自身日志列表最后一项己经达成共识的日志项的index,如果不大于则响应拒绝投票消息,否则将当前节点的最后一个己经达成共识的日志项的index作为响应消息发送给Candidate节点;
Candidate节点在收到响应消息后,当Candidate节点拥有证明预投票请求消息中对应的index和任期的日志项时,Candidate节点发送包含日志项的哈希值的投票请求消息给其他的Follower节点;
当Follower节点收到投票请求消息后,检测投票请求消息中的哈希值是否与自身相应日志项的哈希值一致,如果一致,则回复确定投票消息确认投票,否则,拒绝投票;
当Candidate节点收到2f+1个确定投票消息时,则Candidate节点成为Leader节点,之后它将向所有其他的节点发送心跳请求用以确保自己的权威并且防止新一轮的选举。
8.如权利要求7所述的基于区块链技术的多Agent交易信息保护方法,其特征在于,所述步骤S4还包含:日志复制阶段,其中,所述日志复制阶段具体包含Pre‑Append阶段,Append阶段和Commit阶段,具体为:客户端发送请求消息给Leader节点,其中,所述客户端为买方多Agent系统或卖方多Agent系统,请求消息包含事务、客户端签名和唯一标识符,所述标识符通常是时间戳;
当Leader节点收到客户端的请求消息时,验证请求消息,检查客户端签名是否有效,检查时间戳是否最新,验证通过后将请求消息添加到挂起消息队列中,并将对应的日志项添加至其日志列表后,Leader节点将定期对队列中的一组消息进行分组,进行日志复制;
进入Pre‑Append阶段,具体为:当Leader节点收到请求消息时,Leader节点向每个Follower节点并行发送一个签名的附加日志消息,Leader节点将在每个任期的每个节点的第一个附加日志消息中包括法定人数的签名投票,以支持其在当前任期内的权威;
Follower节点使用增量哈希检查是否有匹配的日志前缀,它自己检查每个新条目的真实性,当该Follower节点有匹配的前一个条目,并且新条目有效时,则该节点会将新条目附加到其日志中,并计算每个新index的增量哈希,其中,新条目是新的请求复制的日志项;
Follower节点从Leader节点接收附加日志消息,Follower节点根据数字签名检测日志项是否被Leader节点篡改,如果Follower节点和Leader节点的数字签名中的任期匹配,客户端请求消息被正确签名未被篡改,并且请求的日志项未被复制,Follower节点将请求的日志项添加到自身日志列表中,并使用附加日志确认消息回复;
如果Follower节点和Leader节点的数字签名中的任期不匹配,Follower节点拒绝将己被篡改的日志项添加至日志列表中,同时Follower节点向所有节点广播更新领导者消息开始新一轮的Leader节点选举;
进入Append阶段,具体为:当Leader节点收到quorum个附加日志确认消息时,把日志项被响应添加Committed的结果由Leader节点返回至客户端;
Leader节点在收到有效的附加日志消息后需要继续发送附加日志响应消息以通知集群其他的节点己将日志项添加到自身的日志列表中,当且仅当节点收到了quorum数量的针对某一index,任期和哈希值的附加日志响应消息后,可确认该日志项己在集群达成共识;
每个节点会保存从其他节点收到的附加日志响应消息,当节点确认特定index和任期的日志项己经达成共识,删除该index之前的日志项对应的附加日志响应消息;
进入Commit阶段,具体为:集群内的Follower节点收到quorum数量的附加日志响应消息后,发送Committed消息给客户端,当客户端收到quorum数量的Committed消息,确认该日志项己在集群达成共识;
对于每个新的交易记录,重复上述过程。
9.如权利要求1所述的基于区块链技术的多Agent交易信息保护方法,其特征在于,所述步骤S5中数据的存储使用了梅克尔树的数据结构,通过梅克尔树算法生成梅克尔数根哈希,并以此作为交易列表的哈希值存到区块头中。
说明书 :
一种基于区块链技术的多Agent交易信息保护方法
技术领域
背景技术
几乎不可能搜索所有购物网站,分析相关信息并提出合理的决策。为了解决这个问题,移动
Agent被认为是一个有用的电子商务解决方案。
现,提供了一种新的网络计算模式,在解决电子商务这样大型分布式系统问题上具有适应
性和优势:基于移动Agent的电子商务系统能够为消费者和商家提供智能化和自动化的代
理服务,使得消费者和商家可以从繁琐的交易环节中解脱出来。Agent不仅能代替消费者浏
览大量的商品或服务,还能够代替消费者和商家进行价格等因素的协商。基于移动Agent的
电子商务大大降低了网上商务活动的通信代价。基于移动Agent的电子商务满足了电子商
务中的移动计算、自动软件升网上信息查询和收集等需求。
性、可靠性、可用性进行保护,其目的是保证电子商务交易安全,避免用户信息及相关信息
泄露。移动Agent暴露在Internet中,不可避免的带来许多安全问题,比如:信息泄漏、信息
篡改、身份假冒、信息破坏。建立一个安全可靠的多Agent电子商务应用环境迫在眉睫。
码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式,是分布式
数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。
发明内容
较高,应用也非常广泛,另外,本发明采用了一种基于拜占庭容错的BFT‑Raft共识算法,该
算法能解决拜占庭容错环境下的共识问题,并具有安全可靠,高效,易于理解等特点。
方Agent的本地环境中,卖方Agent和买方Agent交互协商;
成功信息,将交易信息作为区块体;
网络中迁移到卖方Agent的本地环境中,买方Agent携带其私钥加密的数字证书,卖方Agent
用买方的公钥对加密的数字证书进行解密,向提供第三方身份验证的认证机构发送验证信
息,认证机构验证所述数字证书真实有效后,买卖双方可交互协商。
得到相应的卖方站点信息;
开始和卖方的子协商Agent进行协商;
致,则智能合约未被篡改;
区块链中的各个节点发送交易异常的信息。
quorum=n‑f个,其中,n≥3f+1,n为集群的节点总数,也为Follower节点、Candidate节点、
Leader节点的总个数;
息。
投票请求消息包含任期,2f+1签名的开始选举消息和Candidate日志列表最后一项己经达
成共识的日志项的index;
Candidate日志列表最后一项己经达成共识的日志项的index是否大于节点自身日志列表
最后一项己经达成共识的日志项的index,如果不大于则响应拒绝投票消息,否则将当前节
点的最后一个己经达成共识的日志项的index作为响应消息发送给Candidate节点;
给其他的Follower节点,当Follower节点收到投票请求消息后,检测投票请求消息中的哈
希值是否与自身相应日志项的哈希值一致,如果一致,则回复确定投票消息确认投票,否
则,拒绝投票;
举。
项添加至其日志列表后,Leader节点将定期对队列中的一组消息进行分组,进行日志复制;
第一个附加日志消息中包括法定人数的签名投票,以支持其在当前任期内的权威;
目附加到其日志中,并计算每个新index的增量哈希,其中,新条目是新的请求复制的日志
项;
配,客户端请求消息被正确签名未被篡改,并且请求的日志项未被复制,Follower节点将请
求的日志项添加到自身日志列表中,并使用附加日志确认消息回复;
息开始新一轮的Leader节点选举;
的针对某一index,任期和哈希值的附加日志响应消息后,可确认该日志项己在集群达成共
识;每个节点会保存从其他节点收到的附加日志响应消息,当节点确认特定index和任期的
日志项己经达成共识,删除该index之前的日志项对应的附加日志响应消息;
该日志项己在集群达成共识;
环节运用数字签名技术和增量散列确保日志不被篡改,同时借鉴实用拜占庭容错算法
(PBFT),对Leader节点选举进行验证,通过Committed证明机制,确保当选Leader节点必定
拥有全部己经达成共识的日志项,增加Committed验证机制,确保在拜占庭节点发送错误消
息的情况下日志项依然能够被正确的Committed,保证日志已达成共识,BFT‑Raft共识算法
可以解决拜占庭容错环境下的共识问题,并大幅减少参与验证和记账节点的数量,可以达
到秒级的共识验证;
家和买家的双重身份,每个节点互为备份交易信息数据,而且共同承担交易信息的传输与
验证,系统内部完全不存在中介管理机构,节点的丢失和损坏不会影响整个系统的运作,并
且提高了交易效率、节约了交易的成本和用户时间,确保了交易数据的安全性,以及交易信
息的可追溯性和问责制,有效地防止了交易信息的非法授权获取、使用、泄露和篡改;
接到区块主链上,此时交易信息被永久存储起来,不可更改,有效地防止了交易信息的非法
授权获取和篡改;
附图说明
具体实施方式
用分工明确的多种Agent进行搜索、决策、管理、协商、交易等工作。
户生成一个密钥对,包括公钥和私钥。此ID也作为用户创建的Agent的身份标识,证明Agent
的身份信息。区块链网络中每个参与节点都拥有公钥和私钥,其中,公钥广播给全部节点可
知,私钥只有个人所知。
方Agent的本地环境中,卖方Agent对买方Agent的身份基于公钥基础设施的身份认证协议
进行验证,验证成功后与之直接交互协商。
Agent、决策Agent、协商Agent、交易Agent;S22、根据用户的需求,所述管理Agent在整个流
程中协调与管理各个Agent子模块,所述搜索Agent移动到服务器管理员站点,查找所述服
务器管理员站点上的电子目录,得到相应的卖方站点信息;S23、所述搜索Agent把查找结果
返回给所述决策Agent;S24、所述决策Agent决定有必要进行协商的商家个数及站点地址,
把决策结果发送给所述协商Agent;S25、根据所述决策Agent做出的结果,所述协商Agent生
成多个买方子协商Agent,把他们派送到相应的卖方站点进行协商,然后某一个买方子协商
Agent移动到某一个卖方站点,开始和卖方的子协商Agent进行协商;S26、所述协商Agent总
结所有买方子协商Agent的协商结果,把成功的协商信息发送给所述决策Agent;S27、所述
决策Agent分析所述协商Agent发送的信息,决定交易的伙伴,把决定的交易信息发送给所
述交易Agent;S28、所述交易Agent负责具体的交易事项。
份以后,签发一份报文给该用户,以此作为网上证明身份的依据,这个报文称为数字证书。
数字证书是一个经以认证中心数字签名的包含公钥拥有者身份信息以及公密的二进制文
件。
用买方的公钥对加密的数字证书解密,向CA针对买方的数字证书发送验证信息,CA验证通
过后,双方Agent可交互协商。
IDB SA_B的身份标识符
PK MA_A的公钥
SKA MA_A的私钥
PKB SA_B的公钥
SKB SA_B的私钥
SKCA CA的私钥
TA MA_A发出认证请求消息时的时间戳
TB SA_B发出应答请求消息时的时间戳
rA MA_A产生的认证随机数
rB SA_B产生的认证随机数
SgnA(r) MA_A对r的数字签名
Sgns(r) SA_B对r的数字签名
效,则返回确认消息。
MA_A,验证TB。TB确认该消息是完整的、新鲜的,所述目录服务器为服务器管理的一部分。
SA_B认为MA_A是可信的。从而MA_A可经物理网络迁移到SA代理服务器SA_B,并交互协商。
易信息进行加密,保证交易信息的隐秘性,真伪性,防止交易信息被篡改。
款。智能合约的出现不仅保证了区块链在没有第三方中心机构的监督下能够有效地履行交
易合约。
的一段消息摘要即第一哈希值。对于任意长度的消息,SHA256都会产生一个256bit长的哈
希值,称作消息摘要。这个摘要相当于是个长度为32个字节的数组,通常用一个长度为64的
十六进制字符串来表示。
则直接丢掉交易,向区块链中的各个节点发送交易异常的信息。
数以上Follower节点的确认成功信息,将交易信息作为区块体。
PBFT、Raft算法等。Pow、Pos、DPos算法虽然可以很好的保证安全性,但效率低下。PBFT算法
相比于Pow算法,达成共识的时延较短,同时支持较大的交易吞吐量,但当节点的数量不断
增加时,PBFT算法的性能会呈指数下降。Raft算法相对于Pow、PBFT更高效。本发明采用Raft
共识算法。但Raft共识算法属于非拜占庭算法,Raft算法无法确保在拜占庭容错环境下继
续保证算法的安全性和活性。为适用多Agent电子商务系统交易应用,本发明对Raft算法进
行改进,提出了一种拜占庭容错的Raft共识算法BFT‑Raft,BFT‑Raft继承了Raft的状态空
间,在日志复制环节运用数字签名技术和增量散列确保日志不被篡改;同时借鉴PBFT算法,
对Leader节点选举进行验证,增加Committed验证环节保证日志已达成共识。相比于其他主
流的具备拜占庭容错能力的分布式共识算法,BFT‑Raft共识算法具有安全可靠,高效,易于
理解等特点。
节点总数,即Follower节点、Candidate节点、Leader节点的总个数。Follower节点或
Candidate节点可为拜占庭节点或非拜占庭节点。
彼此节点和客户端的公钥,且任意节点不具备伪造密钥的能力。BFT‑Raft集群的各个节点
之间(包含客户端)总是在发送消息之前签名,拒绝不包含有效签名的消息。
节点竞选Leader节点。如果candidate节点竞选成功,那么它将在term剩下的时间里作为
Leader节点。BFT‑Raft共识算法利用任期(term)和索引(index)作为逻辑时间戳以达成节
点共识:term编号和index始终保持递增趋势,每一轮Leader节点选举导致term编号递增,
每个日志项具备对应的term;由于日志项在各个节点以有序日志列表的方式存储,因此每
个日志项具备其唯一的index。
并行发送RPC用于提高性能。
RPC)消息给其他节点,其他节点编号为id=t mod n的节点,t为新的选举term。
求消息(PreRequestVote RPC),该消息包含term,2f+1签名的StartElection RPC消息和
Candidate日志列表最后一项己经达成共识的日志项的索引(index)(而不是最后一项日志
项)。该阶段拜占庭Candidate节点可能在投票消息中伪造己达成共识日志项的index。
中Candidate日志列表最后一项己经达成共识的日志项的index是否比节点自身日志列表
最后一项己经达成共识的日志项的index更大,如果不是,则响应拒绝投票消息,否则将当
前节点的最后一个己经达成共识的日志项的index作为响应消息参数发送给Candidate节
点。
消息(RequestVote RPC)给其他的Follower节点。当其他Follower节点收到RequestVote
RPC消息后,检测投票请求消息中的哈希值是否与自身相应日志项的哈希值一致,如果一致
则回复确定投票消息(grantVote RPC)确认投票,否则拒绝投票。
且防止新一轮的选举。
客户端事务;Append阶段和Commit阶段用于确保客户端和服务器已将事务正确附加到日志
中。
Request RPC还包含事务、客户端签名和唯一标识符(通常是时间戳)。签名保证了客户端请
求的真实性和完整性,防止拜占庭节点伪造客户端请求。唯一标识符防止拜占庭节点复制
客户端请求。签名和唯一标识符保证每个命令将被每个非拜占庭节点最多复制一次。
项添加至其日志列表后,Leader节点将定期对队列中的一组消息进行分组,进行日志复制。
一个AppendEntries RPC中包括法定人数的签名投票,以支持其在当前term内的权威。
求复制的日志项。当该Follower节点有匹配的前一个条目,并且新条目有效时,则该节点会
将新条目附加到其日志中,并计算每个新索引index的增量哈希。其中,index相当于条目在
日志列表的位置,假设计算索引i处的增量哈希,节点计算(附加到索引i处的日志项加上索
引i‑1处的增量哈希)的哈希。
签名未被篡改,并且请求的日志项未被复制,Follower节点将请求的日志项添加到自身日
志列表中,并使用附加日志确认消息(AppendEntryAck)回复。如果term编号不匹配,
Follower节点拒绝将己被篡改的日志项添加至日志列表中,同时Follower节点向所有节点
广播更新领导者消息(UpdateLeader RPC)开始新一轮的Leader节点选举。
AppendEntryAck时响应日志项己经达成共识。其中,Committed意为日志项已经附加成功。
要继续发送附加日志响应消息(AppendEntriesCommit RPC)以通知集群其他的节点己将日
志项添加到自身的日志列表中。当且仅当节点收到了quorum数量的针对某一index,term和
哈希值的AppendEntriesCommit RPC消息后,可确认该日志项己在集群达成共识。每个节点
会保存从其他节点收到的AppendEntriesCommit RPC,当节点确认特定index和term的日志
项己经达成共识,删除该index之前的日志项对应的AppendEntriesCommit RPC。
识;
Leader节点篡改了消息中的指令,收到消息的Follower节点可以根据数字签名检测出日志
项己被Leader节点篡改。Follower节点拒绝将己被篡改的日志项添加至日志列表中,同时
Follower节点转换状态为Candidate节点并开始新一轮的Leader节点选举。
略当前任期的当前Leader节点的未来心跳。这些Follower节点会忽略当前任期Leader节点
的心跳信息,并像现任Leader节点失败一样超时,开始新的选举。
证。
立一条完整的数据链条。
每个数据区块对应的哈希指针被存储在上一层的父节点(Parent Node)中,这些指向节点
的哈希指针再次被两两分组。重复这个过程直至得到一个单一区块,即树根节点(Merkle
Root)。最终,通过Merkle Tree算法生成梅克尔数根哈希(Merkle Root Hash),并以此作为
交易列表的摘要存到区块头(Block Header)中。
就能检测任何企图修改节点中数据块的行为。
此时交易信息被永久存储起来,不可更改。因此,时间戳的应用有助于区块链形成一个不可
篡改、不可伪造的数据库。
实现买方和卖方之间的交易过程,有效地防止交易信息的非法授权获取、使用、泄露和篡
改,并保证交易数据变化过程可追溯;本发明采用了一种基于拜占庭容错的BFT‑Raft共识
算法,BFT‑Raft共识算法继承了Raft算法的状态空间,在日志复制环节运用数字签名技术
和增量散列确保日志不被篡改,通过Committed证明机制,确保当选Leader节点必定拥有全
部己经达成共识的日志项,增加Committed验证机制,确保在拜占庭节点发送错误消息的情
况下日志项依然能够被正确的Committed,保证日志已达成共识,BFT‑Raft共识算法可以解
决拜占庭容错环境下的共识问题,并大幅减少参与验证和记账节点的数量,可以达到秒级
的共识验证;且本发明中设立了第三方公证人,当买卖双方发生纠纷时,第三方公证人可较
为公平地处理纠纷。
的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储
在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。
多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。