CN115021945A - 区块链交易处理方法和系统 - Google Patents
区块链交易处理方法和系统 Download PDFInfo
- Publication number
- CN115021945A CN115021945A CN202210942282.1A CN202210942282A CN115021945A CN 115021945 A CN115021945 A CN 115021945A CN 202210942282 A CN202210942282 A CN 202210942282A CN 115021945 A CN115021945 A CN 115021945A
- Authority
- CN
- China
- Prior art keywords
- transaction
- block
- node
- chain
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种区块链交易处理方法和系统,该方法包括:客户端生成一笔交易,并对交易进行私钥签名、序列化以及广播,当交易发送方或者交易接收方的账户第一次在链上激活时,以所述交易所在的区块高度和所述交易在区块中的位置索引来标识一个所述账户,在所述交易进行序列化时,采用压缩的变长编码进一步表示所述账户;节点对交易进行防重放攻击检查;在防重放攻击检查通过之后,节点对交易进行校验,校验包括验签;在通过校验之后,节点将交易打包进新区块,并将新区块进行广播;节点达成共识之后,将包含交易的新区块添加到最长链上,并持久化到状态数据库。该方法能够快速地提高处理交易的速度。
Description
技术领域
本发明涉及区块链技术领域,尤其是涉及一种区块链交易处理方法和系统。
背景技术
目前已有成千上万个基础链项目,为了满足日益增长的应用对基础链性能的需求,不同的基础链通过各种技术和架构对性能进行优化。
以目前最主流的基础链的性能为例,例如,比特币TPS约为7,以太坊TPS约为15,由于其本身的架构和共识机制导致其性能较低,无法满足主流应用对性能的需求,不利于区块链技术在传统行业的应用和普及。因此,有必要对基础链的性能进行优化,以满足大量交易的处理速度。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的一个目的是提供一种区块链交易处理方法和系统,能够快速地提高处理交易的速度,从而助力传统业务应用区块链技术和各类创新的区块链应用落地。
本发明所采用的技术方案是:
第一方面,本发明提供一种区块链交易处理方法,该方法包括:客户端生成一笔交易,并对交易进行私钥签名、序列化以及广播,其中,交易的数据结构包括如下多个属性:交易版本号、交易创建时的区块高度、交易发送方账户、交易接收方账户、转账金额、交易费用、交易备注、交易签名、以及交易哈希,当该交易发送方或者交易接收方的账户第一次在链上激活时,以交易所在的区块高度和交易在区块中的位置索引来标识一个账户,在交易进行序列化时,采用压缩的变长编码进一步表示账户;节点对交易进行防重放攻击检查;在防重放攻击检查通过之后,节点对交易进行校验,校验包括验签;在通过校验之后,节点将交易打包进新区块,并将新区块进行广播;节点达成共识之后,将包含交易的新区块添加到最长链上,并持久化到状态数据库。
其中,节点对交易进行防重放攻击检查,包括:在交易的数据结构中还设置一个属性:攻击交易失效的区块高度,将交易创建时的区块高度记作x,将攻击交易失效的区块高度记作n,将交易被节点打包进区块时的区块高度记作X;如果X在区间[x-n,x+n]范围之外,则判定交易无效,否则,进入下一步;在内存中查找交易,如果能查找到交易,则判定交易无效,反之,则判定交易有效;其中,内存中维护着最新的n个区块包括的所有交易的键值对映射,并随着节点的最长链的变化实时更新键值对映射,其中,以标识唯一的区块的区块哈希作为映射的键,以区块包含的所有交易哈希组成的无序集合作为映射的键值。
其中,区块链采用椭圆曲线数字签名算法对交易进行签名和验签;其中,客户端对交易进行签名,包括:客户端随机生成一个私钥privKey,并计算公钥pubKey=privKey*G,G为基点;客户端使用哈希算法对交易的明文计算哈希值,得到哈希值为h;客户端生成一个随机数k,计算点R=k*G,取点R的x轴值:r=R.x;客户端计算签名:s = k^-1(mod n) * (h +r * privKey),n为G的阶;客户端将交易明文和签名{r,s}发送给节点;其中,节点对交易进行验签,包括:节点读取交易的明文数据,从区块链系统合约中找到客户端的公钥pubKey,使用同样的哈希算法对明文数据进行计算哈希值,得到哈希值h1;节点计算签名的模逆元s1:s1 = s^-1 (mod n);节点计算签名生成过程中的随机数对应的点R':R' = (h1 * s1)* G + (r * s1) * pubKey;节点计算R'的X轴值r' :r' = R'.x;节点对比r'是否等于签名中r,如果相等,则验证通过。
其中,节点的数量为十个以上,节点之间的网络采用局域网或者专线,节点之间采用委任权益证明机制达成节点共识。
其中,将包含交易的新区块添加到最长链上,并持久化到状态数据库,包括:设置允许分叉的阈值区块数量;当分叉链与节点的最长链的分叉点所在高度不超过阈值区块数量,分叉链被确认为正常分叉链,反之,则分叉链被丢弃。
其中,将包含交易的新区块添加到最长链上,并持久化到状态数据库,还包括:在出现临时分叉时回滚区块;在添加新区块或回滚区块时,通过依次执行或者回滚区块中包含的所有交易来更新状态数据库。
其中,节点采用多级缓存机制更新状态数据库,多级缓存机制包括:全局缓存、局部缓存以及LevelDB;缓存中存储的数据为状态数据,状态数据的类型包括:区块数据、账户数据、交易收据数据以及交易回滚数据等,更新状态数据库,包括:从局部缓存查找状态数据,如果未查找到,进入下一步;从全局缓存中查找状态数据,如果查找到,从全局缓存中将状态数据复制到局部缓存,否则,进入下一步;从LevelDB 查找状态数据,如果查找到,从LevelDB中将状态数据复制到局部缓存,否则,表示出现异常;查找到状态数据之后,通过执行交易对状态数据进行必要修改,然后同步相应状态数据到全局缓存内,最后将该状态数据持久化到LevelDB;如果交易执行失败,则放弃当前局部缓存,不会改变全局缓存的状态数据。
第二方面,本发明提供一种区块链交易处理系统,该系统包括多个客户端和多个节点;客户端用于生成一笔交易,并对交易进行私钥签名、序列化以及广播,其中,交易的数据结构包括如下多个属性:交易版本号、交易创建时的区块高度、交易发送方账户、交易接收方账户、转账金额、交易费用、交易备注、交易签名、以及交易哈希,当该交易发送方或者交易接收方的账户第一次在链上激活时,以交易所在的区块高度和交易在区块中的位置索引来标识一个账户,在交易进行序列化时,采用压缩的变长编码来表示一个账户;节点包括:防重放攻击检查模块,用于对交易进行防重放攻击检查;校验模块,用于在防重放攻击检查通过之后,对交易进行校验,校验包括验签;打包和广播模块,用于在通过校验之后,将交易打包进新区块,并将新区块进行广播;执行模块,用于节点达成共识之后,将包含交易的新区块添加到最长链上,并持久化到状态数据库。
其中,防重放攻击检查模块包括:交易属性设置单元,用于在交易的数据结构中还设置一个属性:攻击交易失效的区块高度,将交易创建时的区块高度记作x,将攻击交易失效的区块高度记作n,将交易被节点打包进区块时的区块高度记作X;第一交易有效判断单元,用于如果X在区间[x-n,x+n]范围之外,则判定交易无效,否则,进入下一步;第二交易有效判断单元,用于在内存中查找交易,如果能查找到交易,则判定交易无效,反之,则判定交易有效;其中,内存中维护着最新的n个区块包括的所有交易的键值对映射,并随着节点的最长链的变化实时更新键值对映射,其中,以标识唯一的区块的区块哈希作为映射的键,以区块包含的所有交易哈希组成的无序集合作为映射的键值。
其中,执行模块包括:阈值区块数量设置单元,用于设置允许分叉的阈值区块数量;分叉链判断单元,用于当分叉链与节点的最长链的分叉点所在高度不超过阈值区块数量,分叉链被确认为正常分叉链,反之,则分叉链被丢弃;区块回滚单元,用于在出现临时分叉时回滚区块;状态数据库更新单元,用于在添加新区块或回滚区块时,通过依次执行或者回滚区块中包含的所有交易来更新状态数据库。
本发明的有益效果是:
(1)采用高效的委任权益证明机制共识,选择合理的节点数量,优化节点之间网络,设置允许分叉的阈值,使得整个区块链网络快速达成共识。
(2)高效防重放攻击机制,简化交易验证流程。
(3)优化交易签名、验签算法,使得在保证安全性的同时,提高签名和验签的效率。
(4)优化交易结构,压缩链上数据,不仅能够减少区块链网络数据的传输,也极大地减少了节点状态数据库存储的数据。
(5)多级缓存机制,实现状态数据的高效读取与写入。
经试验验证,本发明的区块链交易处理方法能实现TPS达到4000+,相较于普通的基础链,大幅提高了交易的效率。
附图说明
图1是本发明区块链网络的一实施例的网络拓扑示意图;
图2是本发明区块链交易处理方法的一实施例的流程示意图;
图3是图2的步骤S12的一实施例的流程示意图;
图4是图2的步骤S15的一实施例的流程示意图;
图5是图4的步骤S154的一实施例的流程示意图;
图6是本发明区块链交易处理系统的一实施例的结构示意图;
图7是图6中节点12的防重放攻击检查模块121的一实施例的结构示意图;
图8是图6中节点12的执行模块124的一实施例的结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
为了更好地介绍本发明,下面对本发明的节点和客户端进行说明。请参阅图1,本发明的区块链网络由多个节点和多个客户端构成,该多个节点为分布式节点,每台节点为一台高性能计算机,节点之间可以相互通信。其中,该节点的数量为十个以上,该节点之间的网络采用局域网或者专线,这样,可以提升节点之间P2P网络同步数据,降低节点网络分区导致区块链分叉的概率。客户端可以选择与任一节点进行通信,客户端通过 rpc 接口访问节点,访问内容包括:获取信息或者广播交易。客户端可以是手机、计算机等电子终端设备。
实施例一
请参阅图2,图2是本发明区块链交易方法的一实施例的流程示意图。如图2所示,该方法包括如下步骤:
S11:客户端生成一笔交易,并对该交易进行私钥签名、序列化以及广播;
该交易的数据结构包括如下多个属性:交易版本号、交易创建时的区块高度、交易发送方账户、交易接收方账户、转账金额、交易费用、交易备注、交易签名、以及交易哈希。
在上述属性中,通常采用20字节来表示一个交易发送方的账户,或者交易接收方的账户。在本实施例中,采用一个独特的数据结构<height、Index>来表示一个账户,其中,height为4字节整数,表示区块高度;index为两字节整数,表示交易在区块中的位置索引。当该账户第一次在链上激活时,以该交易所在的区块高度和该交易在区块中的位置索引来标识一个账户。
进一步地,在该交易进行序列化时,采用压缩的变长编码来表示该一个账户。该压缩的变长编码的长度约等于四字节,这样采用约四字节长度就可以标识一个原本需要20字节长度标识的账户。通过优化交易结构,使得序列化后的交易数据变少,大幅度地压缩了链上数据。不仅能够减少区块链网络数据的传输,也极大地减少了节点状态数据库存储的数据。
在本实施例中,采用椭圆曲线数字签名算法对每笔交易进行签名。具体签名步骤如下:
(1)客户端随机生成一个私钥privKey,并计算公钥pubKey=privKey*G,G为基点;
(2)客户端使用哈希算法对交易的明文计算哈希值,得到哈希值为h;
(3)客户端生成一个随机数k,计算点R=k*G,取点R的x轴值:r=R.x;
(4)客户端计算签名:s = k^-1(mod n) * (h + r * privKey),n为G的阶;
(5)返回签名{r,s};
(6)客户端将交易明文和签名{r,s}发送给节点。
S12:节点对该交易进行防重放攻击检查;
该节点为接收到该交易广播的所有节点。请参阅图3,图3是步骤S12的一实施例的流程示意图。如图3所示,该步骤S12包括如下子步骤:
S121:在该交易的数据结构中还设置一个属性:攻击交易失效的区块高度,将该交易创建时的区块高度记作x,将攻击交易失效的区块高度记作n,将该交易被该节点打包进区块时的区块高度记作X;
S122:如果X在区间[x-n,x+n]范围之外,则判定该交易无效,否则,进入下一步;
S123:在内存中查找该交易,如果能查找到该交易,则判定该交易无效,反之,则判定该交易有效。
在步骤S122中,即,该交易只在区块高度[x-n,x+n]被节点打包进区块中才有效,否则被当做无效交易从节点的交易池中剔除。
在步骤S123中,节点在内存中维护最新的n个区块包含的所有交易的键值对映射,并随着节点的最长链的变化(区块增长或者临时回滚)实时更新该键值对映射。其中,键值对映射的结构为map<uint256, UnorderedHashSet> mapBlockTxHashSet,以标识唯一的区块的区块哈希作为映射的键,以该区块包含的所有交易哈希组成的无序集合作为映射的键值。
在步骤S12中,交易防重放攻击检查的目的就是防止已被确认的历史交易被当做正常交易再次打包到区块链。本方法中基础链的出块时间间隔是固定的,交易失效的区块高度n为一个常量参数,这样就相当于限制一笔交易的生存期等价于生成n个区块对应的时间范围之内,那么对于任意一笔交易来说,该交易只有在区块高度[x-n,x+n]这个范围内允许被出块节点打包进区块。例如:某笔交易的交易创建时的区块高度为 100,假设失效区块高度n为50,那么该交易只有在区块高度[50,150]这个时间范围内允许被出块节点打包进区块。由于节点内存中保存了最近50个区块包含的所有交易,如果该节点在区块高度152收到了该交易,由于152∉[50,150],那么可以直接判定该交易无效;如果该节点在区块高度103收到了该交易,由于103∈[50,150],则判定该交易暂时有效,接着还需要在内存中查找最近50个区块是否包含该交易,如果能查找到该交易,则判定该交易无效,反之,则判定该交易有效。
S13:在防重放攻击检查通过之后,该节点对该交易进行校验;
其中,该校验包括验签和其他校验。其他校验的类型包括:对于转账交易而言,需要校验发送方、接收方地址是合法的,转账金额是否是合法数值,发送方余额是否足够,交易手续费是合法。
在步骤S13中,相应地,采用椭圆曲线数字签名算法对每笔交易进行验签。具体验签的步骤如下:
(1)该节点读取该交易的明文数据,从区块链系统合约中找到该客户端的公钥pubKey,使用同样的哈希算法对该明文数据进行计算哈希值,得到哈希值h1;
(2)该节点计算签名的模逆元s1:s1 = s^-1 (mod n);
(3)该节点计算签名生成过程中的随机数对应的点R':R' = (h1 * s1) * G + (r* s1) * pubKey;
(4)该节点计算R'的X轴值r' :r' = R'.x;
(5)该节点对比r'是否等于签名中r,如果相等,则验证通过。
节点网络消息处理线程在收到区块链网络中广播的交易进行验签,如果验证通过,将验签信息添加到缓存池,后续节点在验证区块和交易的时候,如果缓存池中存在该交易的验签信息即验签通过,提升节点对交易验签的效率。
S14:在通过校验之后,该节点将该交易打包进新区块,并将该新区块进行广播;
S15:节点达成共识之后,将包含该交易的新区块添加到最长链上,并持久化到状态数据库。
该节点之间采用委任权益证明机制达成节点共识。共识机制是使整个区块链网络中节点状态数据库达到最终一致性的算法。相对于工作量证明(POW, Proof Of Work)和权益证明机制(PoS, Proof Of Stake),本实施例中采用了委任权益证明机制(DPoS,Delegated Proof of Stake),具备两个显著优势:不再需要像PoW机制那样大量消耗能源去挖矿;大幅缩小参与节点的数量,可以达到秒级的共识验证。
优选地,如图4所示,本步骤包括如下子步骤:
S151:设置允许分叉的阈值区块数量;
S152:当分叉链与节点的最长链的分叉点所在高度不超过该阈值区块数量,该分叉链被确认为正常分叉链,反之,则该分叉链被丢弃。
为了降低攻击者对区块链网络进行分叉的概率,按照最长链优先的原则快速地处理分叉使整个区块链网络由临时分叉转为一致性的状态。在更多实施例中,还包括如下子步骤:
S153:在出现临时分叉时回滚区块;
S154:在添加新区块或回滚区块时,通过依次执行或者回滚区块中包含的所有交易来更新状态数据库。
在步骤S154中,该节点采用多级缓存机制更新状态数据库,该多级缓存机制包括:全局缓存、局部缓存以及LevelDB;缓存中存储的数据为状态数据,该状态数据的类型包括:区块数据、账户数据、交易收据数据以及交易回滚数据等。具体地,如图5所示,更新状态数据库,包括如下步骤:
S1541:从局部缓存查找状态数据,如果未查找到,进入下一步;
S1542:从全局缓存中查找状态数据,如果查找到,从全局缓存中将状态数据复制到局部缓存,否则,进入下一步;
S1543:从LevelDB 查找状态数据,如果查找到,从LevelDB中将状态数据复制到局部缓存,否则,表示出现异常;
S1544:查找到状态数据之后,通过执行交易对状态数据进行必要修改,然后同步相应状态数据到全局缓存内,最后会被持久化到LevelDB;如果交易执行失败,则放弃当前局部缓存,不会改变全局缓存的状态数据。
在上述步骤中,局部缓存的数据查找速率>全局缓存的数据查找速率>LevelDB的数据查找速率。状态数据的查找过程依次是:局部缓存、全部缓存、LevelDB。
在步骤S154中,例如,在执行转账交易时,会修改发送方和接收方的账户余额,那么查找到相关账户的账户数据后,然后对账户数据进行更新。
在本实施例中,通过如下方法优化区块链性能:
(1)优化交易结构,压缩链上数据。采用特殊结构来标识一个账户,从而减少账户的字节长度,不仅能够减少区块链网络数据的传输,也极大地减少了节点状态数据库存储的数据。
(2)优化防止交易重放攻击,简化交易验证流程。由于交易结构中包含交易创建时的区块高度和失效的区块高度,所以就限定了该交易只有在指定的区块高度范围内才可能被节点打包进区块;借助保存了最新的交易的键值对映射,能够快速地查找是否包含该交易,实现了一套高效防重放攻击机制。
(3)共识算法优化,TPS 可达 4000+,满足绝大部分应用场景。本实施例中采用了委任权益证明机制(DPoS,Delegated Proof of Stake),具备两个显著优势:不再需要像PoW机制那样大量消耗能源去挖矿;大幅缩小参与验证的节点的数量,可以达到秒级的共识验证。同时优化节点之间网络,设置允许分叉的阈值,使得整个区块链网络快速达成共识。
(4)优化交易签名、验签算法。本实施例中,采用椭圆曲线数字签名算法,相较于经典的openssl实现,交易签名、验签效率提升了5倍以上。
(5)多级缓存机制,实现高效读取与写入。本实施例中采用全局缓存、局部缓存以及LevelDB三级缓存机制来实现添加新区块和回滚区块,大幅提高数据的读写速度。
实施例二
请参阅图6,图6是本发明区块链交易处理系统的一实施例的结构示意图。如图6所示,该系统包括多个客户端11(图中只示出了一个)和多个节点12(图中只示出了两个)。
客户端11用于生成一笔交易,并对交易进行私钥签名、序列化以及广播,其中,交易的数据结构包括如下多个属性:交易版本号、交易创建时的区块高度、交易发送方账户、交易接收方账户、转账金额、交易费用、交易备注、交易签名、以及交易哈希,当该交易发送方或者交易接收方的账户第一次在链上激活时,以交易所在的区块高度和交易在区块中的位置索引来标识一个账户,在交易进行序列化时,采用压缩的变长编码来表示一个账户。
如图6所示,该节点12包括:防重放攻击检查模块121、校验模块122、打包和广播模块123以及执行模块124。
防重放攻击检查模块121,用于对交易进行防重放攻击检查。如图7所示,防重放攻击检查模块121包括:交易属性设置单元1211、第一交易有效判断单元1212以及第二交易有效判断单元1213。交易属性设置单元1211,用于在交易的数据结构中还设置一个属性:攻击交易失效的区块高度,将交易创建时的区块高度记作x,将攻击交易失效的区块高度记作n,将交易被节点打包进区块时的区块高度记作X。第一交易有效判断单元1212,用于如果X在区间[x-n,x+n]范围之外,则判定交易无效,否则,启动第二交易有效单元。第二交易有效判断单元1213,用于在内存中查找交易,如果能查找到交易,则判定交易无效,反之,则判定交易有效。
校验模块122,用于在防重放攻击检查通过之后,对交易进行校验,校验包括验签。
打包和广播模块123,用于在通过校验之后,将交易打包进新区块,并将新区块进行广播。
执行模块124,用于节点达成共识之后,将包含交易的新区块添加到最长链上,并持久化到状态数据库。如图8所示,其中,执行模块124包括:阈值区块数量设置单元1241、分叉链判断单元1242、区块回滚单元1243以及状态数据库更新单元1244。阈值区块数量设置单元1241用于设置允许分叉的阈值区块数量。分叉链判断单元1242,用于当分叉链与节点的最长链的分叉点所在高度不超过阈值区块数量,分叉链被确认为正常分叉链,反之,则分叉链被丢弃。区块回滚单元1243,用于在出现临时分叉时回滚区块。状态数据库更新单元1244,用于在添加新区块或回滚区块时,通过依次执行或者回滚区块中包含的所有交易来更新状态数据库。
其中,各模块的工作方法在实施例一中已详细阐述,在此不再赘述。
综上,本发明提供一种高性能的区块链交易处理方法和系统,能够显著提高区块链网络的共识效率,实现基础链的TPS达到4000+,从而助力传统业务应用区块链技术和各类创新的区块链应用落地。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (10)
1.一种区块链交易处理方法,其特征在于,包括:
客户端生成一笔交易,并对所述交易进行私钥签名、序列化以及广播,其中,所述交易的数据结构包括如下多个属性:交易版本号、交易创建时的区块高度、交易发送方账户、交易接收方账户、转账金额、交易费用、交易备注、交易签名、以及交易哈希,当所述交易发送方或者交易接收方的账户第一次在链上激活时,以所述交易所在的区块高度和所述交易在区块中的位置索引来标识一个所述账户,在所述交易进行序列化时,采用压缩的变长编码进一步表示所述账户;
节点对所述交易进行防重放攻击检查;
在防重放攻击检查通过之后,所述节点对所述交易进行校验,所述校验包括验签;
在通过校验之后,所述节点将所述交易打包进新区块,并将所述新区块进行广播;
节点达成共识之后,将包含所述交易的新区块添加到最长链上,并持久化到状态数据库。
2.根据权利要求1所述的方法,其特征在于,所述节点对所述交易进行防重放攻击检查,包括:
在所述交易的数据结构中还设置一个属性:攻击交易失效的区块高度,将所述交易创建时的区块高度记作x,将攻击交易失效的区块高度记作n,将所述交易被所述节点打包进区块时的区块高度记作X;
如果X在区间[x-n,x+n]范围之外,则判定所述交易无效,否则,进入下一步;
在内存中查找所述交易,如果能查找到所述交易,则判定所述交易无效,反之,则判定所述交易有效;其中,所述内存中维护着最新的n个区块包括的所有交易的键值对映射,并随着节点的最长链的变化实时更新所述键值对映射,其中,以标识唯一的区块的区块哈希作为映射的键,以所述区块包含的所有交易哈希组成的无序集合作为映射的键值。
3.根据权利要求1所述的方法,其特征在于,所述区块链采用椭圆曲线数字签名算法对所述交易进行签名和验签;
其中,所述客户端对所述交易进行签名,包括:
所述客户端随机生成一个私钥privKey,并计算公钥pubKey=privKey*G,G为基点;
所述客户端使用哈希算法对所述交易的明文计算哈希值,得到哈希值为h;
所述客户端生成一个随机数k,计算点R=k*G,取点R的x轴值:r=R.x;
所述客户端计算签名:s = k^-1(mod n) * (h + r * privKey) ,n为G的阶;
所述客户端将所述交易明文和签名{r,s}发送给节点;
其中,所述节点对所述交易进行验签,包括:
所述节点读取所述交易的明文数据,从区块链系统合约中找到所述客户端的公钥pubKey,使用同样的哈希算法对所述明文数据进行计算哈希值,得到哈希值h1;
所述节点计算签名的模逆元s1:s1 = s^-1 (mod n);
所述节点计算签名生成过程中的随机数对应的点R':R' = (h1 * s1) * G + (r *s1) * pubKey;
所述节点计算R'的X轴值r' :r' = R'.x;
所述节点对比r'是否等于签名中r,如果相等,则验证通过。
4.根据权利要求1所述的方法,其特征在于,所述节点的数量为十个以上,所述节点之间的网络采用局域网或者专线,所述节点之间采用委任权益证明机制达成节点共识。
5.根据权利要求1至4任意一项所述的方法,其特征在于,所述将包含所述交易的新区块添加到最长链上,并持久化到状态数据库,包括:
设置允许分叉的阈值区块数量;
当分叉链与节点的最长链的分叉点所在高度不超过所述阈值区块数量,所述分叉链被确认为正常分叉链,反之,则所述分叉链被丢弃。
6.根据权利要求 5所述的方法,其特征在于,所述将包含所述交易的新区块添加到最长链上,并持久化到状态数据库,还包括:
在出现临时分叉时回滚区块;
在添加新区块或回滚区块时,通过依次执行或者回滚区块中包含的所有交易来更新状态数据库。
7.根据权利要求6所述的方法,其特征在于,所述节点采用多级缓存机制更新状态数据库,所述多级缓存机制包括:全局缓存、局部缓存以及LevelDB;所述缓存中存储的数据为状态数据,所述状态数据的类型包括:区块数据、账户数据、交易收据数据以及交易回滚数据,
所述更新状态数据库,包括:
从局部缓存查找状态数据,如果未查找到,进入下一步;
从全局缓存中查找状态数据,如果查找到,从全局缓存中将状态数据复制到局部缓存,否则,进入下一步;
从LevelDB查找状态数据,如果查找到,从LevelDB中将状态数据复制到局部缓存,否则,表示出现异常;
查找到状态数据之后,通过执行交易对所述状态数据进行必要修改,然后同步所述状态数据到全局缓存内,最后将所述状态数据持久化到LevelDB;如果交易执行失败,则放弃当前局部缓存,不会改变全局缓存的状态数据。
8.一种区块链交易处理系统,其特征在于,包括多个客户端和多个节点;所述客户端用于生成一笔交易,并对所述交易进行私钥签名、序列化以及广播,其中,所述交易的数据结构包括如下多个属性:交易版本号、交易创建时的区块高度、交易发送方账户、交易接收方账户、转账金额、交易费用、交易备注、交易签名、以及交易哈希,当所述交易发送方或者交易接收方的账户第一次在链上激活时,以所述交易所在的区块高度和所述交易在区块中的位置索引来标识一个账户,在所述交易进行序列化时,采用压缩的变长编码来表示所述一个账户;
所述节点包括:
防重放攻击检查模块,用于对所述交易进行防重放攻击检查;
校验模块,用于在防重放攻击检查通过之后,对所述交易进行校验,所述校验包括验签;
打包和广播模块,用于在通过校验之后,将所述交易打包进新区块,并将所述新区块进行广播;
执行模块,用于节点达成共识之后,将包含所述交易的新区块添加到最长链上,并持久化到状态数据库。
9.根据权利要求 8所述的系统,其特征在于,所述防重放攻击检查模块包括:
交易属性设置单元,用于在所述交易的数据结构中还设置一个属性:攻击交易失效的区块高度,将所述交易创建时的区块高度记作x,将攻击交易失效的区块高度记作n,将所述交易被所述节点打包进区块时的区块高度记作X;
第一交易有效判断单元,用于如果X在区间[x-n,x+n]范围之外,则判定所述交易无效,否则,进入下一步;
第二交易有效判断单元,用于在内存中查找所述交易,如果能查找到所述交易,则判定所述交易无效,反之,则判定所述交易有效;其中,所述内存中维护着最新的n个区块包括的所有交易的键值对映射,并随着节点的最长链的变化实时更新所述键值对映射,其中,以标识唯一的区块的区块哈希作为映射的键,以所述区块包含的所有交易哈希组成的无序集合作为映射的键值。
10.根据权利要求 8所述的系统,其特征在于,所述执行模块包括:
阈值区块数量设置单元,用于设置允许分叉的阈值区块数量;
分叉链判断单元,用于当分叉链与节点的最长链的分叉点所在高度不超过所述阈值区块数量,所述分叉链被确认为正常分叉链,反之,则所述分叉链被丢弃;
区块回滚单元,用于在出现临时分叉时回滚区块;
状态数据库更新单元,用于在添加新区块或回滚区块时,通过依次执行或者回滚区块中包含的所有交易来更新状态数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210942282.1A CN115021945B (zh) | 2022-08-08 | 2022-08-08 | 区块链交易处理方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210942282.1A CN115021945B (zh) | 2022-08-08 | 2022-08-08 | 区块链交易处理方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115021945A true CN115021945A (zh) | 2022-09-06 |
CN115021945B CN115021945B (zh) | 2022-11-08 |
Family
ID=83066013
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210942282.1A Active CN115021945B (zh) | 2022-08-08 | 2022-08-08 | 区块链交易处理方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115021945B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019019056A1 (zh) * | 2017-07-26 | 2019-01-31 | 杭州复杂美科技有限公司 | 前置机参与区块链共识的方法 |
WO2020022958A1 (en) * | 2018-07-27 | 2020-01-30 | Aioz Pte Ltd | Method and apparatus for transaction verification in a blockchain-based network |
US20200228318A1 (en) * | 2018-09-21 | 2020-07-16 | NEC Laboratories Europe GmbH | Method for signing a new block in a decentralized blockchain consensus network |
US20200358619A1 (en) * | 2017-10-04 | 2020-11-12 | Jintai Ding | Quantumproof blockchain |
WO2021068728A1 (zh) * | 2019-10-10 | 2021-04-15 | 深圳前海微众银行股份有限公司 | 一种区块的状态树的生成和链上数据验证的方法及装置 |
US20210119778A1 (en) * | 2018-06-22 | 2021-04-22 | Wealedger Network Technologies Co., Ltd. | Method for preventing short-term bifurcation and double-spend attack on block chain network |
WO2022027531A1 (zh) * | 2020-08-03 | 2022-02-10 | 西安电子科技大学 | 区块链构建方法、系统、存储介质、计算机设备及应用 |
WO2022148390A1 (zh) * | 2020-06-05 | 2022-07-14 | 支付宝(杭州)信息技术有限公司 | 一种在区块链中部署、更新、调用智能合约的方法 |
WO2022152114A1 (zh) * | 2021-01-18 | 2022-07-21 | 腾讯科技(深圳)有限公司 | 基于节点内存的数据处理方法、装置、设备以及介质 |
-
2022
- 2022-08-08 CN CN202210942282.1A patent/CN115021945B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019019056A1 (zh) * | 2017-07-26 | 2019-01-31 | 杭州复杂美科技有限公司 | 前置机参与区块链共识的方法 |
US20200358619A1 (en) * | 2017-10-04 | 2020-11-12 | Jintai Ding | Quantumproof blockchain |
US20210119778A1 (en) * | 2018-06-22 | 2021-04-22 | Wealedger Network Technologies Co., Ltd. | Method for preventing short-term bifurcation and double-spend attack on block chain network |
WO2020022958A1 (en) * | 2018-07-27 | 2020-01-30 | Aioz Pte Ltd | Method and apparatus for transaction verification in a blockchain-based network |
US20200228318A1 (en) * | 2018-09-21 | 2020-07-16 | NEC Laboratories Europe GmbH | Method for signing a new block in a decentralized blockchain consensus network |
WO2021068728A1 (zh) * | 2019-10-10 | 2021-04-15 | 深圳前海微众银行股份有限公司 | 一种区块的状态树的生成和链上数据验证的方法及装置 |
WO2022148390A1 (zh) * | 2020-06-05 | 2022-07-14 | 支付宝(杭州)信息技术有限公司 | 一种在区块链中部署、更新、调用智能合约的方法 |
WO2022027531A1 (zh) * | 2020-08-03 | 2022-02-10 | 西安电子科技大学 | 区块链构建方法、系统、存储介质、计算机设备及应用 |
WO2022152114A1 (zh) * | 2021-01-18 | 2022-07-21 | 腾讯科技(深圳)有限公司 | 基于节点内存的数据处理方法、装置、设备以及介质 |
Non-Patent Citations (1)
Title |
---|
顾欣等: "区块链技术的安全问题研究综述", 《信息安全研究》 * |
Also Published As
Publication number | Publication date |
---|---|
CN115021945B (zh) | 2022-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113329031B (zh) | 一种区块的状态树的生成方法及装置 | |
CN110383279B (zh) | 用于检测重放攻击的系统和方法 | |
CN110597839B (zh) | 交易数据处理方法、装置、设备以及存储介质 | |
CN112380149B (zh) | 基于节点内存的数据处理方法、装置、设备以及介质 | |
US7257711B2 (en) | Efficient authenticated dictionaries with skip lists and commutative hashing | |
CN111630507A (zh) | 账户模型下的分布式区块链数据存储 | |
CN111226206B (zh) | 拍摄区块链数据的快照 | |
CN110599169A (zh) | 数据处理方法、装置、终端及介质 | |
CN111095210A (zh) | 基于纠错编码存储共享的区块链数据 | |
CN113826355A (zh) | 短交易标识符冲突检测和协调 | |
CN112950211B (zh) | 一种交易验重方法、装置、设备以及介质 | |
CN113626875B (zh) | 一种区块链分片赋能的知识图谱文件存储方法 | |
CN113994324B (zh) | 具有高效世界状态数据结构的区块链系统 | |
CN116628083B (zh) | 区块链交易数据扩容存储方法及系统 | |
CN114402352A (zh) | 用于追踪并测量矿池中工作量证明贡献的方法和装置 | |
CN111641496A (zh) | 区块链数据更新方法、装置、设备、系统及可读存储介质 | |
CN111316256A (zh) | 拍摄区块链数据的快照 | |
CN115021945B (zh) | 区块链交易处理方法和系统 | |
Lu et al. | Verifiable conjunctive dynamic searchable symmetric encryption with forward and backward privacy | |
EP4394619A1 (en) | Data processing method and apparatus based on blockchain, and device and readable storage medium | |
CN116668135A (zh) | 一种移动边缘设备参与的区块链共识方法、系统与装置 | |
US20240106669A1 (en) | Methods and systems for streaming block templates with cross-references | |
CN116126928A (zh) | 一种基于可变指纹布谷鸟过滤器的信息查找系统 | |
Yang et al. | HHT-based security enhancement approach with low overhead for coding-based reprogramming protocols in wireless sensor networks | |
Guo et al. | Modular-based Compression Scheme for Address Data in the Blockchain System for IoV Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |