主页 > imtoken平台 > 【发明专利】基于比特币交易区块验证的离线交易系统及方法正在审查中

【发明专利】基于比特币交易区块验证的离线交易系统及方法正在审查中

imtoken平台 2023-05-31 06:56:36

本发明公开了一种基于比特币交易区块验证的离线交易系统及方法,主要解决现有技术中收款人对离线比特币交易只进行常规验证,不进行交易确认区块的问题。验证引起的付款人伪造比特币问题,实现步骤为:系统初始化,付款人在线将比特币存入钱包,钱包验证存款交易;付款人通过钱包与收款人进行线下交易,将存款交易区的区块验证参数写入支付合约,并使用支付合约生成新的支付地址;收款人验证离线交易并使用私钥提取新支付地址中的比特币。本发明通过将交易区块确认参数绑定到支付合约,然后利用支付合约生成新的支付地址,避免了付款人伪造比特币与收款人进行交易,同时有效防止了付款人的比特币泄露可用于防止付款人在离线支付中伪造比特币进行交易。

技术

本发明属于密码学领域,具体涉及一种离线比特币交易系统及其方法,可应用于付款人的资金财产保护和收款人的交易保护。离线交易。

背景技术

比特币是当前虚拟经济中最具代表性的虚拟货币,以区块链为底层技术。比特币系统通常要求交易双方的客户在线执行交易,并使用区块链技术来验证交易的合法性。因此,在线交易过程中,商家可以通过网络监控,获取交易的区块确认,判断交易是否合法;离线场景下,由于收款人无法连接网络,挖矿节点无法获取交易区块。确认,此时付款人可以声称他拥有比特币来与收款人进行交易。此外,由于交易的支付地址通常是收款人从比特币地址池中选择的,当收款人的设备被恶意攻击时,可能会发生向付款人发送虚假的支付地址,从而导致收款人的支付财产损失。派对。随着比特币应用的增加,越来越多的人希望即使在离线环境下也能使用比特币进行交易。因此,需要利用交易验证技术保护收款人的权益,同时利用钱包的主公钥性质,由付款人生成新的收款人地址,保护付款人的财产。并提高离线比特币交易的安全性。

2013 年,Christian Decker 等人。提出了在线检测零确认交易双花的方法来判断交易的有效性,但他们的解决方案并不适合线下支付场景。因此,2017 年,Alexandra Dmitrienko 等人提出了一种基于时间的交易确认验证技术。收款人不仅需要在离线交易时对交易进行基本的检测,比如检查交易脚本比特币交易系统工作原理,还要限制交易的区块确认参数满足一定的条件。 收款人选择合适的区块确认参数参考值,从而降低攻击者伪造交易确认导致与收款人交易成功的概率。但是,该方案的交易区块确认参数是由收款人公开发送给付款人,然后由付款人进行比较。因此,付款人可以根据收款人指定的参考值伪造适当的交易区块确认参数。通过收款人的验证。

2011 年,Gavin Andresen 提出,为了防止虚假商家在比特币交易中向客户发送不正确的支付地址,商家的支付地址可以由客户生成,但他没有给出具体方法。所以在 2013 年,Ilga Gerhardt 等人。提出了Pay-to-Contract技术。该技术定义了支付合约的原理,即支付地址是由支付合约确定性生成的,客户无需任何额外信息即可计算出商户的新支付地址。因此,该技术保证只有拥有正确私钥的商户才能提取新支付地址上的比特币,从而保护了付款人的财产安全。但是,由于线下“交易”更准确地说是指双方之间的转移,而不是一般的客商关系,也就是说,客户和商户之间不再存在订单支付模式。因此,该方案不能扩展到离线情况下的付款人和收款人之间的转账。

发明内容

本发明的目的是针对上述现有技术的不足,提出一种基于比特币交易区块验证的离线交易系统及方法,以防止付款人伪造比特币。在线下交易中与收款人进行交易,提高交易过程中对付款人财产的安全保护。

为实现上述目的,本发明的技术方案包括:

(1)付款人A在线存入比特币:

(1a) 付款人A通过其支付平台PA在线向其离线钱包W存入一定数量的比特币,支付平台PA将这笔存款交易u1广播到比特币网络,离线钱包W地址为w1;

(1b) 比特币网络中的挖矿节点验证交易u1并将其写入第一个区块C1,离线钱包W从第一个区块C1中提取交易u1的区块确认参数(v ,​​n, s),其中v代表当前比特币网络生成的第一个区块的头信息的哈希值,n是确认交易u1的区块总数,s是第一个区块和最后一个区块的差值区块的时间戳;

(2)收款人B和付款人A的离线钱包W离线交易阶段:

(2a)在收款人B与付款人A的离线钱包W进行离线交易u0之前,支付平台PB规定了第一个区块的确认参数参考值(v',s',n'),其中v'=1.5E+58表示收款人指定生成第一个块的头信息的哈希目标值,n'∈[5,16]表示生成的头信息的目标值收款人 指定确认交易所需的区块数,s'∈[1000,1400]表示收款人产生n'个区块所需时间的上限,单位为秒;

(2b)当收款人B与付款人A的离线钱包W进行离线交易u0时,支付平台PB会确认交易u1的区块确认参数的参考值(v',s', n') 编写原始支付合约x,将原始支付合约x通过支付平台PA发送到离线钱包W;

(2c)离线钱包W根据原支付合约x和出块确认参数(v,n,s)计算新的支付合约x1,保证收款人B可以确认出块确认参数( v,n,s) 与自己指定的参考值(v',s',n')比较,确认交易u1的区块确认参数(v,n,s)不是伪造的;

(2d)离线钱包W利用主公钥的属性将新的支付合约x1与支付地址pkB绑定,生成新的支付地址dadd,将比特币存入离线钱包W的地址w1进入这个新的收款地址dadd,保证只有收款人B可以提取新收款地址上的比特币;

(2e) 收款平台PB验证线下交易u0是否合法,判断付款人A是否伪造比特币与自己交易。如果合法,PB在新的支付地址dadd上提取比特币;

(3)线下交易完成后,线下钱包W存储新的支付合约x1作为线下交易凭证,保证收款人B已经收到比特币,其他用户公开区块支付平台上的确认参数 PB 参考值 (v',s',n') 后计算验证合约 x2 以验证离线交易 u0 的有效性。

比特币交易系统工作原理

与现有技术相比,本发明具有以下优点:

首先,本发明将传统比特币在线交易中的支付合约技术Pay-to-contract与离线比特币交易中基于时间的交易确认验证机制相结合,解决了支付者可以伪造零-伪造确认交易 对于因区块确认参数值导致的离线交易伪造比特币问题,收款人和付款人只需将交易区块确认参数的参考值和真实参数值写入支付合约即可,收款人将在交易过程中通过比较这两个参数值,可以确认付款人是否伪造比特币进行交易,提高了收款人对付款人和交易的信任;

其次,本发明利用主公钥的属性生成新的支付地址,避免了收款人向付款人发送虚假的付款地址,付款人只需使用收款人的公钥即可支付合约计算新的收件人地址,保证只有收件人的私钥才能计算出新地址对应的私钥。

图纸说明

图1为本发明实施的总体流程图;

图。图2为本发明离线比特币交易的子流程图。

具体实现方法

下面结合附图对本发明作进一步说明。

参考图。如图1所示,本发明的实施步骤如下。

第 1 步,初始化。

(1a)定义付款人A的公钥pkA和私钥skA由支付平台PA管理,收款人B的公钥pkB和私钥skB由支付平台PB管理;

(1b)支付平台PA和支付平台PB分别选取伪随机数skA和skB,满足0

pkA=skA·g mod p,

pkB=skB·g mod p;

其中,pkA,pkB∈G,G是由椭圆曲线secp256k1上的点组成的交换群,g∈G是椭圆曲线secp256k1的生成元,质数p是椭圆曲线secp256k1的阶;

(1c) 平台PA中有一个离线钱包W,它定义了自己的公钥:pkW=skW·g mod p,其中skW∈(0,p-1)是私钥;

p>

(1d) 离线钱包W生成自己的地址w1来接收用户存入的比特币:

比特币交易系统工作原理

首先公钥pkW经过SHA256算法处理得到32字节的哈希结果,再经过RIPE160算法处理得到20字节的摘要结果;

接下来,在汇总结果后面加上比特币主网版本号0x00,得到新的汇总结果;

最后将新的摘要结果连续两次经过SHA256算法处理得到64位的hash结果,并将下一个hash结果的前4个字节作为校验码附加到新的摘要中结果。它进行Base58编码得到一个字符串,就是钱包的比特币地址w1;

(1e) 在收款人B与付款人A的离线钱包W进行离线交易u0之前,支付平台PB规定了第一个区块的确认参数参考值(v',s',n'),其中v '=1.5E+58表示收款人指定生成第一个区块的头信息的哈希目标值,n'∈[5,16]表示收款人生成的头信息的目标值指定确认一笔交易所需的区块数,s'∈[1000,1400]表示收款人产生n'个区块所需时间的上限,单位为秒;

第 2 步,在线比特币存款。

(2a)付款人A将Mr存入离线钱包W的比特币金额提交给其支付平台PA,离线钱包W将其地址w1提交给支付平台PA;

(2b)支付平台PA打包并生成交易u1。交易u1包含付款人A的公钥pkA、私钥skA、比特币数量Mr和离线钱包W的地址w1,支付平台PA发送比特币网络广播交易u1;

(2c)比特币网络中的挖矿节点首先验证交易u1的脚本,将十分钟内收到的所有比特币交易打包到第一个区块C1中,根据信息计算如下:

版本+prev_hash+merkle_root+ntime+nbits+nonce;

其中,version为区块链版本号,prev_hash为区块C1的前一个区块的头部哈希值,为当前区块C1的头部哈希值,ntime为区块C1的时间戳,nbits为当前区块挖矿难度值,H为SHA256算法,nonce为挖矿节点选择的随机值;

(2d)挖矿节点对(2c)的计算结果进行SHA256哈希,并判断哈希结果:

如果H(version+prev_hash+merkle_root+ntime+nbits+nonce)

否则,挖矿节点重复步骤(2c),

其中,TARGET为当前比特币工作量证明的目标值;

(2e) 其他挖矿节点将接下来十分钟内收到的所有比特币交易打包到第二个区块C2中,重复步骤(2c)和(2d)链接第二个区块C2在第一个区块C1之后,交易u1此时被一个区块确认,以此类推,使得 n≥6 个区块 C2...Cn+1 依次挂在第一个区块 C1 之后,交易 u1 在被 n 个区块确认这次变成不可篡改的交易,其中Cn+1是其他挖矿节点打包的第n+1个区块;

(2f)支付平台PA将交易指令u1和交易u1得到的确认区块:n-U1={C1,...Cn,Cn+1}发送到离线钱包W。

第三步,钱包验证交易。

(3a) 离线钱包 W 检查交易 u1 和 n-U1 的脚本:

比特币交易系统工作原理

如果校验通过,离线钱包W计算第一个区块和最后一个区块的时间戳差s:=tn+1-t1,提取C1的头部信息的哈希值v;

否则离线钱包W拒绝接收交易u1和交易确认区块n-U1={C1,...Cn,Cn+1};

(3b)离线钱包W更新其地址w1 balance=balance+Mr中的余额,并存储交易u1和参数n-U1、v和s;

(3c)离线钱包W向支付平台PA返回接受交易u1或拒绝交易u1的状态。

第四步,离线比特币交易。

参考图2,这一步的实现如下:

(4a) 收款人B向收款平台PB提交离线交易u0所需金额Ml,平台PB对(v',s',n')进行RIPE160哈希运算,得到哈希结果H (v ',s',n'),并使用ECDSA签名算法对H(v',s',n')进行签名:

(4a1)平台PB选择一个随机值k,计算椭圆曲线secp256k1上的点R,根据点R的横坐标计算签名结果f的前半部分:

R=(f1,f2)=kg,

f=f1mod p;

其中,k

(4a2)平台PB计算后半部分签名结果h:

h=k-1(H'(H(v',s',n'))+skBf)mod p,

其中,skB为收款人B的私钥,H'(·)为SHA256函数,若h=0,收款平台PB会重新选择k;

(4a3)平台PB结合(4a1)的f和(4a2)的h得到签名结果σB=(f,h);

(4b)收款平台PB计算原始支付合同x,并将原始支付合同x发送给支付平台PA:

x=pkB||Ml||σB,

其中,pkB为收款人B的公钥,Ml为B指定的离线交易金额,||表示级联操作;

比特币交易系统工作原理

(4c) 平台PA检查原始支付合约x中收款人B的公钥pkB、收款人B指定的离线交易金额Ml、签名结果σB是否有序,并发送原支付合约 x 到离线钱包 W;

(4d)离线钱包W验证签名σB,同时将收款人的公钥pkB和离线交易金额M1发送给付款人A,A核对收款人B的公钥pkB和下线指定的收款人B交易金额M1的正确性,付款人A核对后将核对结果通知离线钱包W;

(4e)离线钱包W判断离线交易金额M1:

如果Ml≤Mr,离线钱包W计算新的支付合约x1:x1=x||(v,n,s,w1),

否则,离线钱包W拒绝接收原始支付合约x;

其中,v代表当前比特币网络生成的第一个区块的头信息的哈希值,n是确认交易u1的区块总数,s是第一个区块与当前区块的差值最后一个区块。时间戳的区别,w1为离线钱包地址,||代表级联操作,Mr代表付款人A存入离线钱包W的比特币金额;

(4f)离线钱包W输入收款人B的公钥pkB、新的支付合约x1和椭圆曲线生成器g,计算新的收款人地址dadd:

dadd=H(pkB+g·H(x1)),

其中,g为椭圆曲线secp256k1的生成器,H(·)表示RIPE160函数;

(4g)离线钱包W生成离线交易u0,用ECDSA签名算法对交易u0进行签名,表示地址w1中的比特币已经存入新的支付地址dadd,其中离线交易u0包括交易金额M1,钱包地址w1、新的支付地址dadd和钱包公钥pkW信息;

(4h)判断离线钱包W是否收到原始支付合约x:

如果收到,离线钱包W输入x1、u0和区块C1的时间戳t1,用收款人B的公钥pkB对输入值进行加密,得到加密状态值c:

否则,离线钱包W输入拒绝符号“reject”,用收款人B的公钥pkB对reject进行加密,得到加密状态值c:

其中E(·)为安全加密算法SM2,t1为第一个区块C1的时间戳;

(4i)离线钱包W将加密状态值c返回给平台PB。

第五步,收款人验证交易。

(5a)支付平台PB解密状态值c,从状态值c中的原始支付合约x1中获取参数值(v,n,s);

(5b)采集平台PB验证v、n、s、Ml四个参数值:

比特币交易系统工作原理

若v,n,s,Ml满足n≥n', v≤v', s≤n'·s'≤tp-t1, Ml≤Mmax, 则离线交易u0为合法交易, collection 平台PB存储离线交易u0,其中tp为离线交易u0花费的时间,Mmax为离线交易金额上限,

否则,PB拒绝接收离线交易u0;

(5c)收款平台PB通知离线钱包W“接受”或“拒绝”状态;

(5d)离线钱包W根据收款平台PB是否收到离线交易u0进行如下操作:

如果收款平台PB收到了离线交易u0,离线钱包W存储新的支付合约x1作为交易凭证,并更新离线钱包W中的比特币余额balance=balance-M1,当比特币余额为0,离线钱包W清空地址w1的私钥skW,

否则离线钱包W拒绝存储新的支付合约x1。

第 6 步,提取比特币。

(6a)支付平台PB输入收款人B的私钥skB和支付合约x1,计算新的支付地址dadd对应的私钥dpri:dpri=skB+H(x1)@ >;

(6b)采集平台PB检查新采集地址dadd的私钥dpri的正确性:

dadd=H(dpri·g)=H(skB·g+H(x1)·g)=H(pkB+H(x1)·g)

其中,g是椭圆曲线secp256k1的生成器。

第 7 步比特币交易系统工作原理,公开验证交易。

(7a)) 平台PB向离线钱包W签名公开原始支付合约x、交易验证参数(v',s',n')和RIPE160哈希运算结果H(v',s',n') ;

(7b)离线钱包W输入4个参数v、n、s、w1,计算验证合约x2:

x2=pkB||Ml||σB'||(v,n,s,w1);

(7c) 离线钱包W比较验证合约x2和新支付合约x1:

若x2=x1,则新的支付合约x1为正确的交易凭证,离线交易u0有效;

否则离线交易u0无效。

通过以上步骤,将基于时间的交易出块确认验证参数参考值写入原支付合约,根据原支付合约和交易出块确认参数的实际值生成新的支付合约,并然后使用确定性钱包的主密钥属性将新的支付合约与新的支付地址链接起来,并应用到离线比特币交易中,从而实现支付方对钱包中伪造交易确认的有效验证,确保安全付款人的资金和财产。

以上所述仅为本发明的一个具体例子,并不构成对本发明的任何限制。显然,本领域的技术人员在理解了本发明的内容和原理后,不能脱离本发明。在本发明的原理和结构的条件下,在形式和细节上进行了各种修改和变化,但这些基于本发明思想的修改和变化仍在本发明权利要求的保护范围之内。