1.一种基于跨节点多跳支付的区块链匿名交易方法,其特征在于,包括如下步骤:
步骤1:节点请求交易前需建立加密会话状态,该状态用于加密和认证节点之间发送的消息;在节点进入身份验证和加密通信状态前,需要进行三步通信握手,保障通信的匿名性与安全性;
步骤2:节点进入加密模块的安全会话状态后,可以与其他节点通信交易信息进行有关通道的相关操作;其中,节点需要和其他节点协商通道信息,双方协商确认时,系统建立通道;
步骤3:节点间通道成功建立并正常运行的情况下,可以自由关闭支付通道;其中,当通道资金为0或通道资金不足时,系统直接清算并关闭支付通道,而当交易双方发起关闭通道请求时,系统依据协商规则清算并关闭通道;
步骤4:节点可选择其他节点构建支付通道完成跨节点匿名支付;其中,被选择的节点需要使用洋葱路由隐藏转发身份,而节点为满足匿名性,需要将被选择节点的服务费用考虑在匿名支付路径上。
2.根据权利要求1所述的一种基于跨节点多跳支付的区块链匿名交易方法,其特征在于,所述步骤1的具体过程包括如下:
步骤1.1,节点双方初始化会话状态,采用SHA256算法处理握手哈希h,握手哈希h包含链接密钥lk;发送方将接收方静态公钥rs累积进握手哈希获得新握手哈希h1,接收方将本地静态公钥ls累积进握手哈希获得新握手哈希h2;其中,密钥累积进h时会对密钥进行序列化操作;
步骤1.2,加密模块握手第一步:发送方先生成自己的临时密钥对tk1,将公钥累积进h1,之后利用tk1的私钥和rs进行椭圆曲线迪费霍尔曼算法得到共享密钥tks,,再利用HKDF算法通过tks和lk派生密钥得到新的lk以及临时密钥tempk1;其中,HKDF算法是通过获取一部分密钥材料,从其中派生出一个或多个具有更高安全性的密钥,最后开始对tempk1和h1使用关联数据进行身份验证加密算法生成明文c,将c累积进h1,然后将c和tk1的公钥作为消息m发送给接收方;
步骤1.3接收方收到m后,先进行版本校验,校验不通过则停止响应,然后从m中提取出c和tk1的公钥作为rtk1的值,将rtk1累积进h2,用rtk1和自己静态密钥s的私钥进行椭圆曲线迪费霍尔曼算法得到结果共享密钥tks,同样利用HKDF算法通过tks和lk派生密钥得到新的lk以及tempk1,之后利用tempk1、h2和c进行使用关联数据进行身份验证加密算法解密运算得到结果p进行MAC验证,验证失败则接收方停止响应,之后将c累积进行运算得到h2。
步骤1.4加密模块握手第二步:接收方生成自己的临时密钥对tk2,将其公钥累积进h2,利用tk2的公钥和第一步中的rtk1进行椭圆曲线迪费霍尔曼算法运算得到共享密钥tkk,同样通过lk和tkk利用HKDF算法派生密钥lk和tempk2,最后利用tempk2和h2使用关联数据进行身份验证加密算法运行得到明文c并将其累积进入h2,最后通过tk2的公钥和c作为消息m发送给发送方。
步骤1.5发送方接收到消息m先进行版本校验,之后提取c,tk2的公钥作为rtk2的值并将其累积进h1,之后将lk和rtk2进行椭圆曲线迪费霍尔曼算法运算得到共享密钥tkk,同样通过HKDF算法将lk和tkk派生密钥lk和tempk2,利用tempk2、h1和c进行使用关联数据进行身份验证加密算法解密运算得到p进行MAC验证,最后将c累积进h1;
步骤1.6加密模块握手第三步:发送方通过将tempk2、h1和序列化后自己的静态密钥s的公钥进行使用关联数据进行身份验证加密算法加密运算得到c并将其累积进h1,之后将s的私钥和rtk2通过椭圆曲线迪费霍尔曼算法得到共享密钥srk,利用HKDF算法对lk和srk进行密钥派生得到lk和tempk3,明文t的值为tempk3和h1进行使用关联数据进行身份验证加密算法得到的结果,最后利用HKDF算法对lk进行派生密钥得到fsk和frk,其中fsk是发送方进行加密信息所用密钥,而frk是发送方对信息进行解密的密钥,然后将c和t作为消息m发送接收方;
步骤1.7接收方接收到消息m后进行版本验证,提取c和t,之后利用tempk2、h2和c进行使用关联数据进行身份验证加密算法解密运行得到发送方的静态密钥s的公钥,将c累积进h2,然后为得到共享密钥srk对tk2的私钥和s的公钥进行椭圆曲线迪费霍尔曼算法运算,再对lk用HKDF算法派生密钥lk和tempk3,最后用使用联数据进行身份验证加密算法解密算法解密t进行MAC检验,然后用lk进行HKDF密钥派生fsk和frk,握手结束;
步骤1.8双方最终得到解密密钥和会话加密,为保证匿名性和安全性,需要椭圆曲线迪费霍尔曼算法协商共享密钥,期间发送方没有暴露自己的公钥,只有在三次握手后接收方成功恢复发送方的公钥。
3.根据权利要求1所述的一种基于跨节点多跳支付的区块链匿名交易方法,其特征在于,所述步骤2具体过程包括:
步骤2.1发送方首先需要发送申请打开通道的OPEN消息给接收方,该OPEN消息包括申请通道所在的区块哈希blockhash、通道tempID、发送方建立通道的资金fund以及相关交易金额上限、阈值等协议内容;
步骤2.2接收方收到OPEN消息后,先针对协议内容进行判断,接收方同意协议后,接收方发送接受通道的ACCEPT消息给发送方,表示同意发送方建立通道请求,否则接收方可以拒绝该建立申请;其中,ACCEPT消息包括tempID以及交易协议内容;
步骤2.3发送方收到ACCEPT消息后对该消息内的交易协议内容进行判断,接受协议内容后,发送方发送创建通道资金交易的CFUND消息给接收方,否则发送方拒绝通道的建立。;
步骤2.4接收方收到CFUND消息后,先验证该签名是否属于发送方,否则丢弃该消息,验证通过则发送SFUND消息给发送方。
步骤2.5发送方收到SFUND消息后,同样先进行签名验证,通过之后该通道资金交易便可广播到区块链网络中,等待区块认证后,双方相互发送LFUND消息,表示该资金交易通道已被区块链网络接受,可参与交易;
步骤2.6通道成功建立之后,双方节点可以直接通过该通道进行不高于通道资金额度的交易,每次小额交易完成后会更新通道剩余资金,不需要将每次交易都广播到整个区块链网络。
4.根据权利要求3所述的一种基于跨节点多跳支付的区块链匿名交易方法,其特征在于,所述CFUND消息包括该通道的实际通道ID、本次交易的ID以及自己的签名;所述SFUND消息包含本次交易签名及通道ID,表示认同该交易。
5.根据权利要求1所述的一种基于跨节点多跳支付的区块链匿名交易方法,其特征在于,所述步骤3的具体过程包括:
步骤3.1当通道资金为0时会直接进行清算,或通道资金无法满足交易时系统会根据协议约定自动清理该通道;
步骤3.2,当所属通道双方提前关闭交易通道时,由发起方发送一个SHUTDOWN消息给接收方表示想要申请关闭通道,该SHUTDOWN消息包括通道ID和比特币脚本公钥,接收方认可后返回给发起方一个SHUTDOWN消息,此时系统开始清理该通道上的HTLC,保证之前剩下的HTLC可以被处理完成;
步骤3.3HTLC清理完成之后,表示开始进入关闭通道结算协商阶段,发起方发送一个SCLOSING消息,表示和接收方进行结算协商,该SCLOSING信息包括通道ID、结算费用以及自己的签名;接收方收到SCLOSING消息后,首先进行签名验证,验证通过后对结算内容进行判断,同意结算内容则发送SCLOSING消息给发起方,该消息包括通道ID、同样的结算费用和自己的签名,发起方接收到SCLOSING消息便可以广播最终的交易至全网,等待主链认证后便可结束交易并关闭通道;
步骤3.4如果双方对结算信息不一致时,接收方可发送具有自己认可的结算费用的SCLOSING消息给发起方,同样发起方对结算费用不满意则双方持续发送SCLOSING消息进行协商,达到系统协商次数阈值后,系统会惩罚发起方,关闭通道。
6.根据权利要求1所述的一种基于跨节点多跳支付的区块链匿名交易方法,其特征在于,所述步骤4的具体过程包括:
步骤4.1节点通过gossip协议发现节点与获取信息;其中,节点通过三则gossip消息来实现维护本地网络视图;
步骤4.2为确定一条跨节点匿名支付路径,节点在自己的本地视图上根据路径选择算法选择出一条相对最优路径;
步骤4.3计算该最优路径时需要将通道转发费用和匿名消息转发费用综合考虑,因网络中的每个通道的转发费用和其连接的节点转发匿名消息费用存在不一致的可能性,因此定义一个路径开销比PErate,该PErate的值是该路径上的通道转发费用和节点匿名消息转发费用之比;
步骤4.4该最优路径算法为:发送方需要从自己本地视图G里面选出可以连接到接收方的路径pathi添加到路径列表Pathlist中,完成添加之后开始从Pathlist中依次计算该路径的通道转发费用tmpPathfeei以及节点匿名消息转发费用tmpPeerfeei,该tmpPathfeei等于HTLC基本费用basefee与转发等其他费用tfeei的和,然后计算路径的PEratei=tmpPathfeei/tmpPeerfeei,如果该PEratei小于当前的最佳费用bestPErate,那么记录下该路径并更新bestPEratei和最佳路径bestpath的值,直到计算所有Pathlist的路径为止,返回bestpath和bestPErate;
步骤4.5跨节点支付:确定跨节点匿名支付路径后,发送方获取该路径上所有节点的公钥用于加密数据包然后发送方沿该路径的逆方向开始构造数据包,最里面的一层是需要发送的原始数据内容、版本号和有效载荷,其有效载荷可以用于进行HMAC检验以及最终节点的校验,完成打包之后用接收方的公钥进行加密该数据包,之后依次用路径逆方向的节点公钥加密数据包;
步骤4.6为保证匿名数据包的安全传输,节点之间发送数据包通过椭圆曲线迪费霍尔曼密钥交换算法生成共享密钥进行加解密,发送方用自己的临时私钥Temprivkey和接收方的公钥Publickey作为输入进行椭圆曲线迪费霍尔曼算法运算得到共享密钥SKey,接收方用自己的临时公钥Tempubkey和自己的私钥Privatekey作为输入,进行椭圆曲线迪费霍尔曼算法运算可以得到同样的共享密钥SKey,该SKey作为节点间传输的安全密钥,保证节点间发送数据包的安全性;
步骤4.7匿名支付路径下各节点将交易数据包不断传递至最终节点;其中,接收节点收到匿名数据包后,进行HMAC验证并判断自己是否为最终接收节点;
步骤4.8最终节点会对数据包的有效载荷值进行检查并在错误的时候返回错误信息,对数据包中的值和自己接收到的HTLC值的进行对比,如果结果不符,最终节点可直接丢弃该数据包。
7.根据权利要求6所述的一种基于跨节点多跳支付的区块链匿名交易方法,其特征在于,所述步骤4.1中的三则gossip消息:
一则用于广播已有通道的BroadcastChannel消息,该消息标识唯一已存在的通道,包括该通道连接节点、节点转发匿名消息的费用、通道交易费用等所有有关该通道的消息;
两则UpdateChannel消息,该消息用于更新有关通道的最新信息,当节点接收到新的BroadcastChannel或UpdateChannel消息时,会将其消息的内容更新到自己的本地网络视图,如果有通道被撤销,则本地视图会根据该消息删除自己本地视图内的有关该通道的信息,之后将该消息添加到发送消息列表中。
8.根据权利要求6所述的一种基于跨节点多跳支付的区块链匿名交易方法,其特征在于,所述步骤4.3中的路径开销比PErate值越接近于1则说明该路径的性价比越高,在保证安全的同时也保证通道开销合理,选择最优路径则需要计算该路径的PErate值相对于其他路径更接近于1。