WO2019242508A1 - 区块链系统和应用于区块链系统的路由节点的路由方法 - Google Patents

区块链系统和应用于区块链系统的路由节点的路由方法 Download PDF

Info

Publication number
WO2019242508A1
WO2019242508A1 PCT/CN2019/090355 CN2019090355W WO2019242508A1 WO 2019242508 A1 WO2019242508 A1 WO 2019242508A1 CN 2019090355 W CN2019090355 W CN 2019090355W WO 2019242508 A1 WO2019242508 A1 WO 2019242508A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
transaction request
miner
routing node
routing
Prior art date
Application number
PCT/CN2019/090355
Other languages
English (en)
French (fr)
Inventor
程强
Original Assignee
深圳市红砖坊技术有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 深圳市红砖坊技术有限公司 filed Critical 深圳市红砖坊技术有限公司
Publication of WO2019242508A1 publication Critical patent/WO2019242508A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Definitions

  • the embodiments of the present application relate to the field of computer technology, and in particular, to a blockchain system and a routing method applied to a routing node of the blockchain system.
  • each miner node of each parallel chain uses distributed data blockchain to store data, at least one routing node of the parallel chain is connected to the network, and the parallel chain corresponding to the account address bound by the SPV node is where the SPV node is located
  • the method includes: in response to the verification of the received transaction request being passed, adding the received transaction request to the transaction request set of the routing node, and signing the received transaction request to broadcast to The same-chain miner node of the routing node; synchronize the blockchain of the same-chain miner node of the routing node to the local blockchain in real time; determine the unaccounted transaction request that has been posted and not recorded in the transaction request set of the routing node; The determined unaccounted transaction request is sent to the routing node of the target parallel chain, where the target parallel chain is the determined Account posting transactions recorded address request corresponding parallel chain; and broadcasts the same chain miners node in response to receiving the transaction request by a different link transmission node, the transaction requests received signature to a routing node.
  • the blockchain system provided in the embodiments of the present application improves the transaction processing process from a single-chain serial mode to a multi-chain concurrent mode by using at least one parallel chain, so that the number of transactions per second increases with the number of parallel chains. , which in turn improves the TPS of the blockchain system.
  • the system architecture 100 may include parallel chains 101, 102, 103 and networks 104, 105.
  • the miner node may generate a new block using the selected pending transaction request, the mining reward information and the accounting reward information of the miner node after selecting the pending transaction request.
  • the mining reward information of the miner node is used to represent the account address bound by the mining reward to the miner node
  • the accounting reward information of the miner node is used to represent each of the selected pending transaction requests.
  • the accounting reward corresponding to the outgoing transaction request is included in the account address bound to the miner node.
  • Sub-step 2084 broadcasting the generated new block to other miner nodes in the same chain of the miner node.
  • Optional implementation method (6) Based on the foregoing optional implementation method (5), the trusted execution environment of the miner node may store a first preset mask, and the first preset mask is an integer between 0 and 65535. .
  • sub-step 2092 according to the preset calculation formula, calculates the virtual parallel chain identifier of the miner node according to the node identifier of the miner node, which can be performed as follows:
  • N is the number of parallel chains included in the blockchain system
  • VCN is the virtual parallel chain identifier of the miner node
  • Sub-step 2105 Determine the parallel chain where the miner node is located as the parallel chain indicated by the miner's parallel chain identifier.
  • Step 215 In response to receiving the signed routing node management instruction sent by the management server, the routing node uses a preset management public key to perform signature verification on the received signed routing node management instruction.
  • the routing node may broadcast the signed public key obtained in step 223 to the same-chain miner node of the routing node.
  • Step 231 The routing node responds to the verification of the received transaction request that fails, and sends a first prompt message to the SPV node that sent the received transaction request.
  • the routing node responds to the verification of the received transaction request, and adds the received transaction request to the transaction request set of the routing node.
  • the routing node may also send the first prompt message to the SPV node that sent the received transaction request in response to the verification that the received transaction request failed.
  • the first prompt information is used to indicate that the transaction request verification fails.
  • the miner node can perform signature verification on the received incineration instruction, and if the verification is passed, add the transaction request in the received incineration instruction to the newly issued block, and No accounting reward information is recorded, that is, the miner node executes the incineration instruction for free.
  • the dumb account address is a preset account address that only accepts transfers in but does not transfer out digital currency. All miner nodes will detect the transfer of dumb account addresses and treat them as illegal transactions. They will not be credited to the miner node's blockchain.
  • Step 235 In response to receiving the capacity expansion request, the management server expands the N parallel chains in the blockchain system into 2N parallel chains.
  • step 303 is basically the same as the operation of step 205 in the embodiment shown in FIG. 2, and details are not described herein again.
  • step 304 is basically the same as the operation of step 206 in the embodiment shown in FIG. 2, and details are not described herein again.
  • FIG. 4 illustrates a schematic structural diagram of a computer system 400 suitable for implementing a routing node according to an embodiment of the present application.
  • the routing node shown in FIG. 4 is only an example, and should not impose any restrictions on the functions and scope of use of the embodiments of the present application.

Abstract

本申请实施例公开了区块链系统和应用于区块链系统的路由节点的路由方法。该系统包括至少一个并行链,并行链包括路由节点、至少一个矿工节点和至少一个简化支付验证SPV节点,每个并行链的各个矿工节点采用分布式数据区块链存储数据,至少一个并行链的路由节点之间网络连接,SPV节点绑定的账号地址对应的并行链为SPV节点所在的并行链,该系统的一具体实施方式包括:路由节点校验并转发接收到的交易请求到同链矿工节点或者异链路由节点,以及实时将该路由节点的同链矿工节点的区块链同步到本地区块链;矿工节点对从同链路由节点接收到的签名后交易请求进行验证以及加入本地待处理交易请求集合。该实施方式提高了区块链系统的每秒交易次数。

Description

区块链系统和应用于区块链系统的路由节点的路由方法
本专利申请要求于2018年06月20日提交的、申请号为201810636486.6、申请人为程强、发明名称为“区块链系统和应用于区块链系统的路由节点的路由方法”的中国专利申请的优先权,该申请的全文以引用的方式并入本申请中。
技术领域
本申请实施例涉及计算机技术领域,具体涉及区块链系统和应用于区块链系统的路由节点的路由方法。
背景技术
区块链是一种按照时间顺序将数据区块以链条的方式组合成特定数据结构,并以密码学的方式保证其不可篡改、不可伪造的去中心化共享总账(Decentralized Shared Ledger)。区块链能够安全存储简单的、有先后关系、能在系统内验证的数据。
区块链系统,就是采用区块链存储数据的系统。目前,大部分区块链系统普遍具有以下特点:去中心化、不可篡改、不可伪造、可验证、匿名。然而,目前的区块链系统由于出块速度与每块容量的限定(例如,比特币系统中平均每10分钟出一个块,每个区块限定1兆字节的容量),普遍存在一次交易等待确认的时间较长(例如,比特币系统中每笔交易平均等待时候一小时),以及TPS(Transactions Per Second,每秒交易数)较低的问题(例如,比特币系统中平均每秒处理7次交易)。
发明内容
本申请实施例提出了区块链系统和应用于区块链系统的路由节点的路由方法。
第一方面,本申请实施例提供了一种区块链系统,该系统包括至 少一个并行链,并行链包括路由节点、至少一个矿工节点和至少一个简化支付验证SPV节点,每个并行链的各个矿工节点采用分布式数据区块链存储数据,至少一个并行链的路由节点之间网络连接,SPV节点绑定的账号地址对应的并行链为SPV节点所在的并行链,其中:SPV节点被配置成:响应于接收到交易请求,将所收到的交易请求发送给该SPV节点所在的并行链的路由节点;路由节点被配置成:响应于对所收到的交易请求校验通过,将所收到的交易请求添加到该路由节点的交易请求集合中,以及将所收到的交易请求签名后广播给该路由节点的同链矿工节点;以及实时将该路由节点的同链矿工节点的区块链同步到本地区块链;矿工节点被配置成:响应于对从同链路由节点接收到的签名后交易请求验证通过,将签名后交易请求中该矿工节点的链内交易请求添加到该矿工节点的待处理交易请求集合;路由节点被配置成:确定该路由节点的交易请求集合中确认已出账且未入账的未入账交易请求;将所确定的未入账交易请求发送给目标并行链的路由节点,其中,目标并行链是所确定的未入账交易请求中的入账账号地址对应的并行链;以及响应于接收到异链路由节点发送的交易请求,将所收到的交易请求签名后广播给该路由节点的同链矿工节点。
在一些实施例中,矿工节点中设置有可信执行环境,以及矿工节点的可信执行环境中存储有用于唯一标识该矿工节点的节点标识。
在一些实施例中,矿工节点绑定有账号地址;以及矿工节点被配置成:响应于竞争到该矿工节点所在并行链的记账权,执行以下记账操作:从该矿工节点的待处理交易请求集合中选取待处理交易请求;用所选取的待处理交易请求、该矿工节点的挖矿奖励信息和记账奖励信息生成新区块,其中,该矿工节点的挖矿奖励信息和记账奖励信息分别用于表征将挖矿奖励和与所选取的待处理交易请求中的各出账交易请求对应的记账奖励计入该矿工节点绑定的账号地址;将所生成的新区块串接到该矿工节点的本地区块链中;以及将所生成的新区块广播给该矿工节点的其他同链矿工节点。
在一些实施例中,账号地址包括虚拟并行链标识和账号地址字符串;以及矿工节点被配置成:响应于检测到账号地址生成请求,在该 矿工节点的可信执行环境中执行以下账号地址绑定操作:响应于确定该矿工节点没有绑定过账号地址,生成新的账号地址字符串作为该矿工节点的账号地址字符串;按照预设计算公式,根据该矿工节点的节点标识计算该矿工节点的虚拟并行链标识,组合该矿工节点的账号地址字符串和虚拟并行链标识得到账号地址,以及将组合得到的账号地址确定为该矿工节点绑定的账号地址。
在一些实施例中,该区块链系统包括的并行链数目N为2的m次方,其中,m为0到16之间的自然数。
在一些实施例中,虚拟并行链标识为0到65535之间的自然数。
在一些实施例中,各矿工节点的可信执行环境中存储有第一预设掩码,第一预设掩码为0到65535之间的整数;以及按照预设计算公式,根据该矿工节点的节点标识计算该矿工节点的虚拟并行链标识,包括:将该矿工节点的节点标识的二进制表示与第一预设掩码的二进制表示按位做异或运算的结果确定为该矿工节点的虚拟并行链标识。
在一些实施例中,用于指示并行链的并行链标识为0到(N-1)之间的自然数。
在一些实施例中,各路由节点和各矿工节点的可信执行环境中存储有第二预设掩码,第二预设掩码为0到65535之间的整数;以及矿工节点被配置成:响应于检测到矿工入网请求,在该矿工节点的可信执行环境中执行以下并行链确定操作:将该矿工节点的虚拟并行链标识的二进制表示与N减1的差的二进制表示按位做与运算,得到账号并行链标识;将账号并行链标识所指示的并行链确定为该矿工节点绑定的账号地址对应的并行链;将该矿工节点的虚拟并行链标识的二进制表示与第二预设掩码的二进制表示按位做异或运算,得到异或运算结果;将所得到的异或运算结果与N减1的差的二进制表示按位做与运算,得到矿工并行链标识;将该矿工节点所在的并行链确定为矿工并行链标识所指示的并行链。
在一些实施例中,各矿工节点的可信执行环境中和各路由节点中还存储有N和m;以及路由节点还被配置成:对在本地存储的并行链配置信息进行加密后得到加密并行链配置信息,并将加密并行链配置 信息发送给该路由节点的同链矿工节点,其中,并行链配置信息包括N、m和第二预设掩码;以及矿工节点被配置成:响应于接收到该矿工节点的同链路由节点发送的加密并行链配置信息,在该矿工节点的可信执行环境中对接收到的加密并行链配置信息进行解密;以及响应于对解密后的并行链配置信息进行校验通过,用解密后并行链配置信息中的N,m和第二预设掩码更新该矿工节点的可信执行环境中存储的N,m和第二预设掩码。
在一些实施例中,该区块链系统还包括管理服务器,管理服务器与各路由节点网络连接,管理服务器中存储有预设管理私钥和预设管理公钥,各路由节点和各矿工节点存储有预设管理公钥;以及管理服务器被配置成:响应于接收到用户输入的路由节点管理指令,将利用预设管理私钥对路由节点管理指令签名后发送给第一路由节点,其中,第一路由节点是路由节点管理指令所涉及的路由节点;路由节点被配置成:响应于接收到管理服务器发送的签名后路由节点管理指令,利用预设管理公钥对所收到的签名后路由节点管理指令进行签名验证;响应于对所收到的签名后路由节点管理指令签名验证通过,执行所收到的签名后路由节点管理指令中的路由节点管理指令。
在一些实施例中,管理服务器被配置成:响应于接收到用户输入的交易管理指令,利用预设管理私钥对交易管理指令签名后发送给第二路由节点,其中,第二路由节点是交易管理指令所涉及的账号地址对应的并行链的路由节点;路由节点被配置成:响应于接收到管理服务器发送的签名后交易管理指令,利用预设管理公钥对所收到的签名后交易管理指令进行签名验证;响应于对所收到的签名后交易管理指令签名验证通过,将所收到的签名后交易管理指令发送给该路由节点的同链矿工节点;矿工节点被配置成:响应于接收到该矿工节点的同链路由节点发送的签名后交易管理指令,利用预设管理公钥对所收到的签名后交易管理指令进行签名验证;响应于对所收到的签名后交易管理指令签名验证通过,将所收到的签名后交易管理指令中的交易管理指令添加到本地待处理交易请求集合中。
在一些实施例中,路由节点还被配置成:响应于检测到预设异常, 利用预设管理公钥对所检测到的异常的异常相关信息进行加密,并将加密后的异常相关信息发送到管理服务器。
在一些实施例中,路由节点还被配置成:在该路由节点启动后,在本地存储的启动配置信息中获取该路由节点的公钥和私钥,获取利用预设管理私钥对该路由节点的公钥进行签名的签名后公钥,将所获取的签名后公钥广播给该路由节点的同链矿工节点,利用该路由节点的私钥对发送给该路由节点的同链矿工节点的数据进行签名后发送,以及利用该路由节点的私钥对从该路由节点的同链矿工节点收到的数据进行解密;以及矿工节点还被配置成:响应于接收到该矿工节点的同链路由节点发送的签名后公钥,利用预设管理公钥对所收到的签名后公钥进行签名验证;响应于对签名后公钥进行签名验证通过,将所收到的签名后公钥中的公钥确定为该矿工节点的同链路由节点的公钥;利用该矿工节点的同链路由节点的公钥对发送给该矿工节点的同链路由节点的数据进行加密后发送,以及利用该矿工节点的同链路由节点的公钥对从该矿工节点的同链路由节点的收到的数据进行签名验证。
在一些实施例中,路由节点被配置成:响应于对所收到的交易请求校验不通过,向发送所收到的交易请求的SPV节点发送第一提示信息,其中,第一提示信息用于指示交易请求校验不通过。
在一些实施例中,路由节点被配置成:对于该路由节点的交易请求集合中的异常交易请求,向该路由节点的各同链矿工节点发送与该异常交易请求对应的焚毁指令,其中,异常交易请求是未在预设时长内确认出账的交易请求,与该异常交易请求对应的焚毁指令用于指示矿工节点将该异常交易请求中的出账账号地址减少该异常交易请求中的转出金额;以及矿工节点被配置成:响应于接收到焚毁指令,执行所接收到的焚毁指令。
在一些实施例中,路由节点被配置成:对该路由节点的交易请求集合中的各个交易请求的执行过程进行监控。
在一些实施例中,路由节点的域名与该路由节点所在并行链的并行链标识相关联。
在一些实施例中,管理服务器被配置成:响应于接收到扩容请求,将区块链系统中的N个并行链扩容为2N个并行链。
在一些实施例中,矿工节点被配置成:在该矿工节点的可信执行环境中,对发送给该矿工节点的同链矿工节点的数据利用第一密钥进行加密后发送,其中,第一密钥是根据该矿工节点所在并行链的并行链标识和m生成的;在该矿工节点的可信执行环境中,对从该矿工节点的同链矿工节点接收到的数据利用第一密钥进行解密。
在一些实施例中,路由节点被配置成:响应于对所收到的交易请求校验通过,将所收到的交易请求添加到该路由节点的交易请求集合中,包括:路由节点被配置成:响应于接收到该路由节点的同链SPV节点发送的交易请求,校验所收到的交易请求的合法性;响应于合法性校验不通过,向发送所收到的交易请求的SPV节点发送用于指示合法性校验不通过的第二提示信息;响应于合法性校验通过,根据该路由节点的交易请求集合中未处理交易请求的数目确定该路由节点是否可接收新交易请求;响应于确定可接收新交易请求,将所收到的交易请求添加到该路由节点的交易请求集合中,以及生成与所收到的交易请求对应的交易编号,将所收到的交易请求、对应的交易标识和用于表征已出账的操作进程状态对应存储至预设分布式数据库中,其中,所收到的交易请求对应的交易标识包括所生成的交易编号和该路由节点所在并行链的并行链标识。
在一些实施例中,路由节点被配置成:确定该路由节点的交易请求集合中的已经入账确认的已入账交易请求;根据所确定的已入账交易请求的交易标识,将预设分布式数据库中所确定的已入账交易请求的操作进程状态更新为已入账。
在一些实施例中,各并行链还包括账本节点,各并行链的账本节点组成分布式账本集群;以及账本节点被配置成:实时将该账本节点的相邻同链矿工节点或路由节点中存储的区块链同步存储到该账本节点的本地区块链中;响应于接收到终端发送的账号信息查询请求,根据账号信息查询请求在分布式账本集群中查询数据,以及将查询结果发送给发送账号信息查询请求的终端。
第二方面,本申请实施例提供了一种应用于区块链系统的路由节点的路由方法,该区块链系统包括至少一个并行链,并行链包括路由节点、至少一个矿工节点和至少一个简化支付验证SPV节点,每个并行链的各个矿工节点采用分布式数据区块链存储数据,至少一个并行链的路由节点之间网络连接,SPV节点绑定的账号地址对应的并行链为SPV节点所在的并行链,该方法包括:响应于对所收到的交易请求校验通过,将所收到的交易请求添加到路由节点的交易请求集合中,以及将所收到的交易请求签名后广播给路由节点的同链矿工节点;实时将路由节点的同链矿工节点的区块链同步到本地区块链;确定路由节点的交易请求集合中确认已出账且未入账的未入账交易请求;将所确定的未入账交易请求发送给目标并行链的路由节点,其中,目标并行链是所确定的未入账交易请求中的入账账号地址对应的并行链;以及响应于接收到异链路由节点发送的交易请求,将所收到的交易请求签名后广播给路由节点的同链矿工节点。
在一些实施例中,矿工节点中设置有可信执行环境,区块链系统包括的并行链数目N为2的m次方,其中,m为0到16之间的自然数。
在一些实施例中,各矿工节点的可信执行环境中和各路由节点存储有N,m和第二预设掩码,第二预设掩码为0到65535之间的整数;以及方法还包括:对在本地存储的并行链配置信息进行加密后得到加密并行链配置信息,并将加密并行链配置信息发送给路由节点的同链矿工节点,其中,并行链配置信息包括N、m和第二预设掩码。
在一些实施例中,区块链系统还包括管理服务器,管理服务器与各路由节点网络连接,管理服务器中存储有预设管理私钥和预设管理公钥,各路由节点和各矿工节点存储有预设管理公钥;以及该方法还包括:响应于接收到管理服务器发送的签名后路由节点管理指令,利用预设管理公钥对所收到的签名后路由节点管理指令进行签名验证;响应于对所收到的签名后路由节点管理指令签名验证通过,执行所收到的签名后路由节点管理指令中的路由节点管理指令。
在一些实施例中,该方法还包括:响应于接收到管理服务器发送 的签名后交易管理指令,利用预设管理公钥对所收到的签名后交易管理指令进行签名验证;响应于对所收到的签名后交易管理指令签名验证通过,将所收到的签名后交易管理指令发送给路由节点的同链矿工节点。
在一些实施例中,该方法还包括:响应于检测到预设异常,利用预设管理公钥对所检测到的异常的异常相关信息进行加密,并将加密后的异常相关信息发送到管理服务器。
在一些实施例中,该方法还包括:在路由节点启动后,在本地存储的启动配置信息中获取路由节点的公钥和私钥,以及获取利用预设管理私钥对路由节点的公钥进行签名的签名后公钥;将所获取的签名后公钥广播给路由节点的同链矿工节点;利用路由节点的私钥对发送给路由节点的同链矿工节点的数据进行签名后发送;以及利用路由节点的私钥对从路由节点的同链矿工节点收到的数据进行解密。
在一些实施例中,该方法还包括:响应于对所收到的交易请求校验不通过,向发送所收到的交易请求的SPV节点发送第一提示信息,其中,第一提示信息用于指示交易请求校验不通过。
在一些实施例中,该方法还包括:对于路由节点的交易请求集合中的异常交易请求,向路由节点的各同链矿工节点发送与异常交易请求对应的焚毁指令,其中,异常交易请求是未在预设时长内确认出账的交易请求,与异常交易请求对应的焚毁指令用于指示矿工节点将异常交易请求中的出账账号地址减少异常交易请求中的转出金额。
在一些实施例中,该方法还包括:对路由节点的交易请求集合中的各个交易请求的执行过程进行监控。
在一些实施例中,路由节点的域名与路由节点所在并行链的并行链标识相关联。
在一些实施例中,响应于对所收到的交易请求校验通过,将所收到的交易请求添加到路由节点的交易请求集合中,包括:响应于接收到路由节点的同链SPV节点发送的交易请求,校验所收到的交易请求的合法性;响应于合法性校验不通过,向发送所收到的交易请求的SPV节点发送用于指示合法性校验不通过的第二提示信息;响应于合法性 校验通过,根据路由节点的交易请求集合中未处理交易请求的数目确定路由节点是否可接收新交易请求;响应于确定可接收新交易请求,将所收到的交易请求添加到路由节点的交易请求集合中,以及生成与所收到的交易请求对应的交易编号,将所收到的交易请求、对应的交易标识和用于表征已出账的操作进程状态对应存储至预设分布式数据库中,其中,所收到的交易请求对应的交易标识包括所生成的交易编号和路由节点所在并行链的并行链标识。
在一些实施例中,该方法还包括:确定路由节点的交易请求集合中的已经入账确认的已入账交易请求;根据所确定的已入账交易请求的交易标识,将预设分布式数据库中所确定的已入账交易请求的操作进程状态更新为已入账。
第三方面,本申请实施例提供了一种路由节点,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如第二方面中任一实现方式描述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其中,该计算机程序被一个或多个处理器执行时实现如第二方面中任一实现方式描述的方法。
本申请实施例提供的区块链系统,通过采用至少一个并行链的方式将交易处理过程从单链串行方式,改进为多链并发方式,使得每秒交易次数随着并行链数增加而增加,进而提高了区块链系统的TPS。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请的一个实施例可以应用于其中的示例性系统架构图;
图2A-图2D是根据本申请的区块链系统的一个实施例的时序图;
图3是根据本申请的应用于区块链系统的路由节点的路由方法的一个实施例的流程图;
图4是适于用来实现本申请实施例的路由节点的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的区块链系统和应用于区块链系统的路由节点的路由方法的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括并行链101、102、103和网络104、105。
并行链101包括路由节点1011,矿工节点1012、1014、1015、1016、1018,SPV(Simplified Payment Verification,简化支付验证)节点1013、1017和网络1019。网络1019用以在路由节点1011,矿工节点1012、1014、1015、1016、1018和SPV节点1013、1017之间提供通信链路的介质。网络1019可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。并行链101的矿工节点1012、1014、1015、1016、1018采用分布式数据区块链存储数据。并行链101的SPV节点1013、1017绑定有账号地址,SPV节点1013、1017绑定的账号地址对应的并行链为并行链101。
并行链102包括路由节点1021,矿工节点1022、1023、1025、1026,SPV节点1024和网络1027。网络1027用以在路由节点1021,矿工节点1022、1023、1025、1026和SPV节点1024之间提供通信链路的介质。网络1027可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。并行链102的矿工节点1022、1023、1025、1026采用分布式数据区块链存储数据。并行链102的SPV节点1024绑定有账 号地址,SPV节点1024绑定的账号地址对应的并行链为并行链102。
并行链103包括路由节点1031,矿工节点1032、1033、1035、1036,SPV节点1034、1037和网络1038。网络1038用以在路由节点1031,矿工节点1032、1033、1035、1036和SPV节点1034、1037之间提供通信链路的介质。网络1038可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。并行链103的矿工节点1032、1033、1035、1036采用分布式数据区块链存储数据。并行链103的SPV节点1034、1037绑定有账号地址,SPV节点1034、1037绑定的账号地址对应的并行链为并行链103。
用户可以使用SPV节点1013、1017通过网络1019与路由节点1021交互,以接收或发送消息等。用户也可以使用SPV节点1024通过网络1027与路由节点1021交互,以接收或发送消息等。用户可以还使用SPV节点1034、1037通过网络1037与路由节点1031交互,以接收或发送消息等。
SPV节点1013、1017、1024、1034、1037上可以安装有各种通讯客户端应用,例如简化支付验证应用、钱包应用、网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。用户可以使用SPV节点1013、1017、1024、1034、1037上安装的简化支付验证应用,实现数字货币管理、转账、收款、查看余额、查看交易记录等操作。
SPV节点1013、1017、1024、1034、1037可以是硬件,也可以是软件。当SPV节点1013、1017、1024、1034、1037为硬件时,可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。当SPV节点1013、1017、1024、1034、1037为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供简化支付验证服务),也可以实现成单个软件或软件模块。在此不做具体限定。
需要说明的是,本申请实施例所提供的应用于区块链系统的路由节点的路由方法一般由路由节点1011、1021、1031执行,相应地,应用于区块链系统的路由节点的路由装置一般设置于路由节点1011、 1021、1031中。
需要说明的是,路由节点1011、1021、1031可以是硬件,也可以是软件。当路由节点1011、1021、1031为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当路由节点1011、1021、1031为软件时,可以实现成多个软件或软件模块(例如用来提供路由服务),也可以实现成单个软件或软件模块。在此不做具体限定。
需要说明的是,矿工节点1012、1014、1015、1016、1018、1022、1023、1025、1026、1032、1033、1035、1036可以是硬件,也可以是软件。当矿工节点1012、1014、1015、1016、1018、1022、1023、1025、1026、1032、1033、1035、1036为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当矿工节点1012、1014、1015、1016、1018、1022、1023、1025、1026、1032、1033、1035、1036为软件时,可以实现成多个软件或软件模块(例如用来提供挖矿和记账服务),也可以实现成单个软件或软件模块。在此不做具体限定。
应该理解,图1中的并行链的数目仅仅是示意性的。根据实现需要,可以具有任意数目的并行链。每个并行链中的路由节点、矿工节点、网络和SPV节点的数目也仅仅是示意性的。根据实现需要,可以具有任意数目的路由节点、矿工节点、网络和SPV节点。
继续参考图2,其示出了根据本申请的区块链系统的一个实施例的时序200。
本申请实施例中的区块链系统可以包括至少一个并行链(例如图1所示的并行链101、102、103),并行链可以包括路由节点(例如图1所示的路由节点1011、1021、1031)、至少一个矿工节点(例如图1所示的矿工节点1012、1014、1015、1016、1018、1022、1023、1025、1026、1032、1033、1035、1036)和至少一个SPV节点(例如图1所示的SPV节点1013、1017、1024、1034、1037),每个并行链的各个矿工节点采用分布式数据区块链存储数据,至少一个并行链的路由节 点之间网络连接,SPV节点绑定的账号地址对应的并行链为SPV节点所在的并行链。
如图2所示,根据本申请的区块链系统的一个实施例的时序200包括以下步骤:
步骤201,SPV节点响应于接收到交易请求,将所收到的交易请求发送给该SPV节点所在的并行链的路由节点。
在本实施例中,SPV节点(例如图1所示的SPV节点1013、1017、1024、1034、1037)中可以安装有简化支付验证应用。用户可以使用SPV节点中的简化支付验证应用提交交易请求。这里,交易请求为转账请求。即,将SPV节点绑定的账号地址A中的数字货币转给不同于账号地址A的账号地址B。这样,SPV节点可以响应于接收到上述交易请求,将上述交易请求发送给该SPV节点所在的并行链的路由节点。
这里,每个SPV节点可以绑定有账号地址。实践中,可以采用钱包应用为SPV节点生成并绑定账号地址。因此,将上述交易请求发送给该SPV节点所在的并行链中的路由节点,也就是将上述交易请求发送给该SPV节点绑定的账号地址对应的并行链的路由节点。
步骤202,路由节点响应于对所收到的交易请求校验通过,将所收到的交易请求添加到该路由节点的交易请求集合中,以及将所收到的交易请求签名后广播给该路由节点的各个同链矿工节点。
在本实施例中,路由节点(例如,图1所示的路由节点1011、1021、1031)可以响应于接收到步骤201中SPV节点发送的交易请求,对所收到的交易请求进行校验。如果校验通过,则可以将所收到的交易请求添加到该路由节点的交易请求集合中,以及将所收到的交易请求签名后广播给该路由节点的各个同链矿工节点。
这里,路由节点对所收到的交易请求进行校验可以包括但不限于对交易请求进行合法性校验。其中,合法性校验可以包括但不限于验证交易请求中的转出账号地址是否存在UTXO(Unspent Transaction Output,未花费交易输出)记录、交易请求中的转出账号地址的余额是否支持本次交易请求、交易请求中的转出账号地址是否是路由节点中存储的转出账号地址黑名单中的账号地址、交易请求中的转入账号 地址是否是路由节点中存储的转入账号地址黑名单中的账号地址等等。实践中,这里对交易请求进行校验还可以包括其他校验。
这里,路由节点的交易请求集合中存储了该路由节点校验通过的各个交易请求。
这里,路由节点对所收到的交易请求进行签名可以是利用该路由节点的私钥对所收到的交易请求进行签名。
这里,该路由节点的同链矿工节点是与该路由节点属于同一并行链的矿工节点。例如,如图1所示,矿工节点1012、1014、1015、1016、1018是路由节点1011的同链矿工节点。
实践中,由于每个并行链通常是基于对等网络(Peer to Peer,P2P)的,因此,路由节点在将所收到的交易请求签名后广播给该路由节点的同链矿工节点时,可以是将所收到的交易请求签名后广播给该路由节点的相邻同链矿工节点,再由上述该路由节点的相邻同链矿工节点将上述签名后的交易请求广播给各自的相邻矿工节点。
需要说明的是,路由节点可以在对从SPV节点接收到的交易请求进行校验通过的情况下,先将所收到的交易请求添加到该路由节点的交易请求集合中,再将所收到的交易请求签名后广播给该路由节点的各个同链矿工节点,或者,路由节点也可以在对从SPV节点接收到的交易请求进行校验通过的情况下,先将所收到的交易请求签名后广播给该路由节点的各个同链矿工节点,再将所收到的交易请求添加到该路由节点的交易请求集合中,本申请对此不做具体限定。
步骤203,路由节点实时将该路由节点的同链矿工节点的区块链同步到本地区块链。
在本实施例中,路由节点(例如,图1所示的路由节点1011、1021、1031)还会实时将该路由节点的同链矿工节点的区块链同步到本地区块链。也就是说,路由节点不会执行挖矿和记账的操作,但是,路由节点中同步保存了该路由节点所在并行链的区块链数据(账本)。
需要说明的是,路由节点可以随时执行步骤203,并不限定于在执行完步骤202之后执行步骤203。
步骤204,矿工节点响应于对从同链路由节点接收到的签名后交 易请求验证通过,将签名后交易请求中该矿工节点的链内交易请求添加到该矿工节点的待处理交易请求集合。
在本实施例中,矿工节点(例如图1所示的矿工节点1012、1014、1015、1016、1018、1022、1023、1025、1026、1032、1033、1035、1036)可以响应于从该矿工节点的同链路由节点接收到签名后交易请求,首先,对所收到的签名后交易请求进行验证。其次,如果验证通过,则矿工节点可以将签名后交易请求中该矿工节点的链内交易请求添加到该矿工节点的待处理交易请求集合。
这里,矿工节点对所收到的签名后交易请求进行验证具体可以包括:利用该矿工节点的同链路由节点的公钥对所收到的签名后交易请求进行签名验证,如果签名验证通过再对所收到的签名后交易请求进行合法性校验,如果合法性校验通过,则可以确定对矿工节点对所收到的签名后交易请求进行验证通过。
这里,签名后交易请求中该矿工节点的链内交易请求具体可以包括以下两种情况:(1)签名后交易请求中的转出账号地址和转入账号地址对应的并行链都是该矿工节点所在的并行链,那么签名后交易请求中的出账请求和入账请求均为该矿工节点的链内交易请求。(2)签名后交易请求中的转出账号地址对应的并行链是该矿工节点所在的并行链,而签名后交易请求中的转入账号地址对应的并行链不是该矿工节点所在的并行链,那么签名后交易请求中的出账请求是该矿工节点的链内交易请求,而签名后交易请求中的入账请求不是该矿工节点的链内交易请求。
需要说明的是,每个矿工节点中都可以存储有该矿工节点的待处理交易请求集合。属于同一并行链的各个矿工节点可以按照预设的共识机制竞争该矿工节点所在并行链的记账权。如果某个矿工节点竞争到该矿工节点所在并行链的记账权(俗称挖矿),则可以用该矿工节点本地存储的待处理交易请求集合中的待处理交易请求形成新区块,并将所形成的新区快串接到该矿工节点的本地区块链中。即,矿工节点需要执行挖矿和记账操作。
步骤205,路由节点确定该路由节点的交易请求集合中确认已出 账且未入账的未入账交易请求。
在本实施例中,路由节点除了可以在本地交易请求集合中记录交易请求之外,还可以实时更新并记录本地交易请求集合中每个交易请求对应的当前处理状态。
在本实施例中,交易请求可以包括出账请求和入账请求。例如,交易请求D为将账号地址A中的X个数字货币转给账号地址B。那么交易请求D可以包括出账请求D1和入账请求D2,其中,出账请求D1为将账号地址A中的数字货币减少X个,入账请求D2为将账号地址B中的数字货币增加X个。
在本实施例中,由于路由节点(例如,图1所示的路由节点1011、1021、1031)中同步存储了该路由节点所在并行链的区块链数据,因此,路由节点可以首先在本地交易请求集合中查询对应的当前处理状态为尚未出账的未出账交易请求,然后再根据本地同步存储的区块链数据,确定各个未出账交易请求是否已确认出账。例如,路由节点可以在本地同步存储的区块链数据中确定是否在该交易请求中的出账请求对应的区块之后存在六个及六个以上的区块,如果是,则可以确认该交易请求确认已出账。如果确定未出账交易请求确认已出账,则可以确定该交易请求为确认已出账且未入账的未入账交易请求。
步骤206,路由节点将所确定的未入账交易请求发送给目标并行链的路由节点。
在本实施例中,路由节点(例如,图1所示的路由节点1011、1021、1031)可以将步骤205中所确定的未入账交易请求发送给目标并行链的路由节点。其中,上述目标并行链是所确定的未入账交易请求中的入账账号地址对应的并行链。例如,对于未入账交易请求D:将账号地址A中的X个数字货币转给账号地址B,其中,账号地址A对应并行链L1,账号地址B对应并行链L2,这里,对应步骤206,可以是并行链L1的路由节点将未入账交易请求D发送给并行链L2的路由节点。
在本实施例中,两个路由节点之间的跨链通信既可以采用TCP/IP消息收发方式实现,也可以通过一个路由节点写数据库(例如非关系 型数据库),另一个路由节点从数据库读取最新数据的方式实现。本申请对此不做具体限定。
如果通过读写数据库的方式实现跨链通信,跨链交易所涉及的未入账交易请求可在区块链系统的任一路由节点经查询得到,而不必限于写数据库的路由节点和未入账交易请求中的入账地址对应的并行链的路由节点。另外,本区块链系统所支持的出账交易请求和入账交易请求是分开处理的。因此,在本区块链系统中,出账交易请求具有不可逆特性,从而可以让入账交易请求的入账账号地址对应的SPV节点通过其所属并行链的路由节点查询当前入账交易请求是否已处于不可逆状态,即查询数据库以确定该入账交易请求对应的交易请求所在的路由节点是否已将该入账交易请求对应的交易请求添加到该路由节点的交易请求集合中。继而,SPV节点不必等到交易请求最终被确认才能获取交易请求的执行结果。
步骤207,路由节点响应于接收到异链路由节点发送的交易请求,将所收到的交易请求签名后广播给该路由节点的同链矿工节点。
在本实施例中,路由节点(例如,图1所示的路由节点1011、1021、1031)可以响应于接收到异链路由节点发送的交易请求,将所收到的交易请求签名后广播给该路由节点的同链矿工节点。
这里,路由节点的异链路由节点是与该路由节点所在的并行链不同的并行链中的路由节点。
如果路由节点接收到异链路由节点发送的交易请求,表明上述异链路由节点向该路由节点发送了异链路由节点的交易请求集合中确认已出账且未入账的未入账交易请求。则,上述路由节点可以将所收到的交易请求签名后广播给该路由节点的同链矿工节点。这里,路由节点对交易请求进行签名可以是路由节点使用该路由节点的私钥进行签名。
例如,对于未入账交易请求D:将账号地址A中的X个数字货币转给账号地址B,其中,账号地址A对应并行链L1,账号地址B对应并行链L2,这里,对应步骤206,可以是并行链L1的路由节点将未入账交易请求D发送给并行链L2的路由节点。对应步骤207,可以 是并行链L2的路由节点将未入账交易请求D签名后广播给并行链L2中的矿工节点。从而,L2链的矿工节点可以执行步骤204,如果接收到同链路由节点,即并行链L2的路由节点发送的签名后交易请求D,首先对收到的签名后交易请求D进行验证,如果验证通过,将签名后交易请求中该矿工节点的链内交易请求添加到该矿工节点的待处理交易请求集合。其中,交易请求D中并行链L2的矿工节点的链内交易请求是将账号地址B增加X个数字货币。
需要说明的是,时序200仅仅是示意性的,实践中,步骤201到步骤207的执行顺序可以按照各种方式重新排列组合,本申请对此不做具体限定。
在某些情况下,本实施例可以具有以下可选实现方式:
可选实现方式(一):矿工节点可以中设置有可信执行环境(TEE,Trusted Execution Environment),以及矿工节点的可信执行环境中可以存储有用于唯一标识该矿工节点的节点标识。
这里,TEE是与设备上的Rich OS(通常是Android等)并存的运行环境,并且给Rich OS提供安全服务。TEE具有其自身的执行空间。TEE所能访问的软硬件资源是与Rich OS分离的。TEE提供了可信应用(Trusted Application,TA)的安全执行环境,同时也保护可信应用的资源和数据的保密性,完整性和访问权限。为了保证TEE本身的可信根,TEE在安全启动过程中是要通过验证并且与Rich OS隔离的。在TEE中,每个可信应用是相互独立的,而且不能在未授权的情况下不能互相访问。
作为示例,矿工节点中设置的TEE可以采用如下两种方式:
(1)、借助特定CPU芯片提供的安全防护能力,比如Intel SGX、ARM Trust Zone等,构造一个可信执行环境。
为了保障安全强度,还可以在可信执行环境底层增加可信硬件支持,比如采用符合可信平台模块(TPM,Trusted Platform Module)标准的安全芯片,或采用符合可信密码模块(TCM,Trusted Cryptography Module)标准的安全芯片。
(2)采用加密锁(俗称软件狗)实现可信执行环境。
常见的软件狗常包装成一个小巧的USB(Universal Serial Bus,通用串行总线)设备,软件狗内既提供文件存贮,也支持运行经过定制的程序。采用软件狗,可以不必限定矿机节点的设备类型,只要矿机节点有USB接口即可,降低了对矿机节点的设备要求。
可选实现方式(二):基于上述可选实现方式(一),矿机节点还可以绑定有账号地址,以及上述时序200还可以包括步骤208:
步骤208,矿工节点响应于竞争到该矿工节点所在并行链的记账权,执行记账操作。
这里,矿机节点可以响应于竞争到该矿工节点所在并行链的记账权,执行记账操作,其中,上述记账操作可以包括以下子步骤2081到子步骤2084(图2A中未示出):
子步骤2081,从该矿工节点的待处理交易请求集合中选取待处理交易请求。
这里,矿工节点可以采用各种实现方式从该矿工节点的待处理交易请求集合中选取待处理交易请求。例如,可以在该矿工节点的待处理交易请求集合中按照待处理交易请求的记账奖励(也称为交易费用,或者交易手续费)从高到底的顺序选取第一预设数目(比如,10)个待处理交易请求。又例如,还可以在该矿工节点的待处理交易请求集合中按照待处理交易请求的交易提交时间从前到后的顺序选取第二预设数目个待处理交易请求。
子步骤2082,用所选取的待处理交易请求、该矿工节点的挖矿奖励信息和记账奖励信息生成新区块。
这里,矿工节点可以在选取了待处理交易请求后,用所选取的待处理交易请求、该矿工节点的挖矿奖励信息和记账奖励信息生成新区块。其中,该矿工节点的挖矿奖励信息用于表征将挖矿奖励入该矿工节点绑定的账号地址,该矿工节点的记账奖励信息用于表征将与所选取的待处理交易请求中的各出账交易请求对应的记账奖励计入该矿工节点绑定的账号地址。
这里,由于矿工节点竞争到记账权,即矿工节点挖矿成功,那么会给矿工节点以挖矿奖励,即,将指定数额的数字货币给予该矿工节 点绑定的账号地址。
另外,每个交易请求中除了包括将账号地址A的X个数字货币转给账号地址B以外,还可以包括给将该交易请求记入账本(区块链)的矿工节点予以Y个币的记账奖励(即,交易费用)。
本申请的区块链系统中包括至少一个并行链,交易请求包括链内交易请求和跨连交易请求两种。其中,链内交易请求是交易请求的出账账号对应的并行链和入账账号对应的并行链为同一并行链的交易请求,而跨连交易请求是交易请求的出账账号对应的并行链和入账账号对应的并行链为不同并行链的交易请求。例如,对于交易请求D:将账号地址A中的X个数字货币转给账号地址B,其中,账号地址A对应并行链L1,账号地址B对应并行链L2,如果L1与L2相同,则交易请求D为链内交易请求,如果L1与L2不同,则交易请求D为跨连交易请求。
对于链内交易请求:将L1链的账号地址A中的X个数字货币转给L1链的账号地址B,对应的记账奖励为Y个数字货币。如果,L1链的矿工节点M1竞争到与上述链内交易对应的区块的记账权,那么矿工节点M1在自己的区块中写入:将账号地址A中减少X个数字货币,将账号地址B中增加X个数字货币,将矿工节点M1绑定的账号地址增加预设的挖矿奖励个数字货币,将矿工节点M1绑定的账号地址再增加Y个数字货币。
对于跨链交易请求:将L1链的账号地址A中的X个数字货币转给L2链的账号地址B,对应的记账奖励为Y个数字货币,且L1不等于L2。由于该交易涉及到跨连,相应的交易被分成出账交易请求:将账号地址A中减少X个数字货币和入账交易请求:将账号地址B中增加X个数字货币两部分。那么上述出账交易请求会被记录在L1链的矿工节点中,而上述入账交易请求会被记录在L2链的矿工节点中。如果,L1链的矿工节点M1竞争到与上述出账交易对应的区块的记账权,那么矿工节点M1在自己的区块中写入:将账号地址A中减少X个数字货币,将矿工节点M1绑定的账号地址增加预设的挖矿奖励个数字货币,将矿工节点M1绑定的账号地址再增加Y个数字货币。如 果L2链的矿工节点M2竞争到上述入账交易对应的区块的记账权,那么矿工节点M2在自己的区块中写入:将账号地址B中增加X个数字货币,将矿工节点M1绑定的账号地址增加预设的挖矿奖励个数字货币。这里,矿工节点M2不能获得上述跨链交易的记账奖励。即,记账奖励仅仅给出出账账号地址对应的并行链中的矿工节点。
子步骤2083,将所生成的新区块串接到该矿工节点的本地区块链中。
这里,矿工节点可以生成了新区块后将所生成的新区块串接到该矿工节点的本地区块链中。
子步骤2084,将所生成的新区块广播给该矿工节点的其他同链矿工节点。
这里,矿工节点可以在生成了新区块后将所生成的新区块广播给该矿工节点的其他同链矿工节点。
需要说明的是,矿工节点可以在执行完子步骤2082后,先执行子步骤2083再执行子步骤2084,矿工节点也可以在执行完子步骤2082后,先执行子步骤2084再执行子步骤2083,本申请对此不做具体限定。
可选实现方式(三):基于上述可选实现方式(二),矿工节点绑定的账号地址可以包括虚拟并行链标识和账号地址字符串。以及,上述时序200还可以包括步骤209:
步骤209,矿工节点响应于检测到账号地址生成请求,在该矿工节点的可信执行环境中执行账号地址绑定操作。
这里,矿工节点中除了安装有用于挖矿和记账的应用之外,为了保障矿工节点的挖矿奖励和记账奖励只能转入矿工节点绑定的唯一账号地址中,在该矿工节点的可信执行环境中还可以安装有账号地址绑定应用。这里,矿工节点可以在每次启动设备时发出账号地址生成请求,矿工节点也可以检测用户输入的账号地址生成请求。如果矿工节点检测到账号地址生成请求,那么矿工节点可以在该矿工节点的可信执行环境中执行账号地址绑定操作。这里,账号地址绑定操作可以包括以下子步骤2091到子步骤2094(图2A中未示出):
子步骤2091,响应于确定该矿工节点没有绑定过账号地址,生成新的账号地址字符串作为该矿工节点的账号地址字符串。
这里,可以首先在矿工节点的可信执行环境确定该矿工节点是否绑定过账号地址。如果确定该矿工节点绑定过账号地址,则不做任何操作或者可以呈现用于指示该矿工节点绑定过账号地址的已绑定提示信息。如果确定该矿工节点没有绑定过账号地址,则可以在矿工节点的可信执行环境中采用各种实现方式生成新的账号地址字符串作为该矿工节点的账号地址字符串。例如,可以采用现有的钱包应用来生成20字节的账号地址字符串。
子步骤2092,按照预设计算公式,根据该矿工节点的节点标识计算该矿工节点的虚拟并行链标识。
基于可选实现方式(一)可知,矿工节点的可信执行环境中存储有用于唯一标识该矿工节点的节点标识。这里,可以在矿工节点的可信执行环境中,按照预设计算公式,根据该矿工节点的节点标识计算该矿工节点的虚拟并行链标识。例如,各个矿工节点的可信执行环境中可以存储有相同的虚拟并行链标识密钥,那么可以利用该矿工节点的可信执行环境中存储的虚拟并行链标识密钥对该矿工节点的节点标识进行加密,并将加密结果作为该矿工节点的虚拟并行链标识。
这里,用于对并行链进行指示的是并行链标识。每个矿工节点都属于一个并行链,因此,该矿工节点的可信执行环境中存储有该矿工节点所在的并行链的并行链标识。这里,除了矿工节点的可信执行环境中除了存储有该矿工节点所在并行链的并行链标识,还可以存储有该矿工节点的虚拟并行链标识,之所以要虚拟并行链标识,是为了在未来区块链系统中的并行链数目发生变化时,并行链的标识相应也会发生变化,这个过程中,每个矿工节点的虚拟并行链标识是不变的,但是每个矿工节点所在并行链可以发生变化,相应的每个矿工节点所在并行链的并行链标识也可以发生变化。这时,每个矿工节点都可以根据自己的虚拟并行链标识来确定自己所在并行链的并行链标识。
子步骤2093,组合该矿工节点的账号地址字符串和虚拟并行链标识得到账号地址。
这里,可以在子步骤2092中得到该矿工节点的虚拟并行链标识后,在该矿工节点的可信执行环境中组合该矿工节点的账号地址字符串和虚拟并行链标识得到账号地址。例如,可以将该矿工节点的账号地址字符串串接在该矿工节点的虚拟并行链标识之后,得到账号地址。又例如,还可以将该矿工节点的虚拟并行链标识串接在该矿工节点的账号地址字符串之后,得到账号地址。
子步骤2094,将组合得到的账号地址确定为该矿工节点绑定的账号地址。
这里,可以在该矿工节点的可信执行环境中将子步骤2093中组合得到账号地址确定为该矿工节点绑定的账号地址。
经过子步骤2091到子步骤2094,已经在检测到账号地址生成请求的矿工节点的可信执行环境中,确定并存储了该矿工节点的账号地址和虚拟并行链标识。
可选实现方式(四):上述区块链系统包括的并行链数目N可以为2的m次方,其中,m为0到16之间的自然数。也就是说,区块链系统中可以包括1,2,4,8,16,32,64,…,或者65536个并行链。
可选实现方式(五):基于上述可选实现方式(四),矿工节点的虚拟并行链标识可以为虚拟并行链标识为0到65535之间的自然数。
可选实现方式(六):基于上述可选实现方式(五),矿工节点的可信执行环境中可以存储有第一预设掩码,第一预设掩码为0到65535之间的整数。这样,子步骤2092,按照预设计算公式,根据该矿工节点的节点标识计算该矿工节点的虚拟并行链标识,可以如下进行:
将该矿工节点的节点标识的二进制表示与第一预设掩码的二进制表示按位做异或运算的结果确定为该矿工节点的虚拟并行链标识。
具体可以用公式表示如下:
VCN=UID^UidMask                 (1)
其中:
UID是该矿工节点的节点标识的二进制表示;
UidMask是该矿工节点的可信执行环境中存储的第一预设掩码;
VCN是计算所得的该矿工节点的虚拟并行链标识。
实践中,各个矿工节点的可信执行环境中存储的第一预设掩码可以是相同的。
可选地,上述子步骤2092,按照预设计算公式,根据该矿工节点的节点标识计算该矿工节点的虚拟并行链标识,也可以如下进行:
VCN=UID&0xFFFF                (2)
其中:
UID是该矿工节点的节点标识的二进制表示;
0xFFFF是65535的十六进制表示;
VCN是计算所得的该矿工节点的虚拟并行链标识。
上述子步骤2092中是按照预设计算公式,根据该矿工节点的节点标识计算该矿工节点的虚拟并行链标识。可选地,还可以根据矿工节点绑定的账号地址的私钥或者公钥来推导该矿工节点的虚拟并行链标识。作为示例,可以将矿工节点绑定的账号地址的公钥的最后2个字节确定为该矿工节点的虚拟并行链标识。可以理解的是,无论是采用子步骤2092所记载的根据矿工节点的节点标识推导矿工节点的虚拟并行链标识,还是根据矿工节点绑定的账号地址的私钥或者公钥来推导该矿工节点的虚拟并行链标识,其目的均是为了使得各个矿工节点的虚拟并行链标识的取值尽量在0到65535之间随机分布,由此避免上述区块链系统中众多矿工节点在一条或多于一条并行链中聚集算力。
可选实现方式(七):基于上述各种可选实现方式,用于指示并行链的并行链标识可以为0到(N-1)之间的自然数,其中,N为区块链系统中并行链的数目。
可选实现方式(八):基于上述可选方式(七),各个路由节点和各个矿工节点的可信执行环境中还可以存储有第二预设掩码,第二预设掩码为0到65535之间的整数。以及上述时序200还可以包括步骤210:
步骤210,矿工节点响应于检测到矿工入网请求,在该矿工节点的可信执行环境中执行并行链确定操作。
这里,用户可以在使用矿工节点进行挖矿和记账之前,先利用矿工节点发出矿工入网请求以确定该矿工节点所在的并行链。例如,矿工节点可以在用户首次打开执行挖矿和记账操作的应用界面时生成矿工入网请求。这样,矿工节点可以响应于检测到矿工入网请求,在该矿工节点的可信执行环境中执行并行链确定操作。其中,并行链确定操作可以包括以下子步骤2101到子步骤2105(图2A中未示出):
子步骤2101,将该矿工节点的虚拟并行链标识的二进制表示与N减1的差的二进制表示按位做与运算,得到账号并行链标识。
子步骤2101可以用如下公式来表示:
ACN=VCN&(N-1)                (3)
其中:
VCN是该矿工节点的虚拟并行链标识;
N是区块链系统所包括的并行链的数目;
ACN是计算所得到的账号并行链标识。
子步骤2102,将账号并行链标识所指示的并行链确定为该矿工节点绑定的账号地址对应的并行链。
这里,可以将上述公式(3)中计算得到的ACN所指示的并行链确定为该矿工节点绑定的账号地址对应的并行链。
矿工节点在竞争到该矿工节点所在并行链的记账权之后,执行记账操作时,是从该矿工节点的待处理交易请求集合中选取待处理交易请求,并且用所选取的待处理交易请求、该矿工节点的挖矿奖励信息和记账奖励信息生成新区块。这里,该矿工节点的挖矿奖励信息用于表征将挖矿奖励计入该矿工节点绑定的账号地址,该矿工节点的记账奖励信息用于表征将与所选取的待处理交易请求中的各出账交易请求对应的记账奖励计入该矿工节点绑定的账号地址。即,在矿工节点竞争到记账权之后,会在该矿工节点所在的并行链的各个矿工节点的区块链中记录由上述所选取的待处理交易请求、该矿工节点的挖矿奖励信息和记账奖励信息所生成的新区块。
而由上述记载可知,矿工节点的待处理交易请求集合中存在两类交易请求:一类是由该矿工节点的同链路由节点发送的出账交易请求, 即转出账号地址对应的并行链是该矿工节点所在的并行链;另一类是该矿工节点的同链路由节点发送的入账交易请求,即转入账号地址对应的并行链是该矿工节点所在的并行链。
综上,可以得到,这里矿工节点绑定的账号地址对应的UTXO记录存储在该矿工节点绑定的账号地址对应的并行链(即账号并行链标识ACN所指示的并行链)的路由节点和各矿工节点的区块链中。
可选地,SPV节点绑定的账号地址也可以包括虚拟并行链标识和账号地址字符串。而且,可以按照步骤2101的计算方法,即将SPV节点的虚拟并行链标识的二进制表示与N减1的差的二进制表示按位做与运算,得到SPV节点的账号并行链标识。继而,SPV节点绑定的账号地址对应的UTXO记录存储在该SPV节点绑定的账号地址对应的并行链的路由节点和各矿工节点的区块链中,即记录在该SPV节点的账号并行链标识所指示的并行链的路由节点和各矿工节点的区块链中。换言之,SPV节点绑定的账号地址通过它所包括的虚拟并行链标识指示该账号地址对应的并行链。
子步骤2103,将该矿工节点的虚拟并行链标识的二进制表示与第二预设掩码的二进制表示按位做异或运算,得到异或运算结果。
子步骤2104,将所得到的异或运算结果与N减1的差的二进制表示按位做与运算,得到矿工并行链标识。
这里,子步骤2103和子步骤2104合在一起可以用如下公式来表示:
MCN=(VCN^MiningMask)&(N-1)          (4)
其中:
VCN是该矿工节点的虚拟并行链标识;
N是区块链系统所包括的并行链的数目;
MiningMask该矿工节点的可信执行环境中存储的第二预设掩码;
MCN是计算所得的矿工并行链标识。
子步骤2105,将该矿工节点所在的并行链确定为矿工并行链标识所指示的并行链。
即,将该矿工节点所在的并行链确定为上述公式中计算得到的 MCN所指示的并行链。
这里,该矿工节点竞争该矿工节点所在的并行链的记账权。即,该矿工节点在该矿工节点所在的并行链执行挖矿操作。换言之,矿工并行链标识指示了该矿工节点执行挖矿操作的并行链。
经过子步骤2101到子步骤2105,在该矿工节点的可信执行环境中确定并存储了该矿工节点绑定的账号地址对应的并行链的并行链标识(以下简称矿工节点的ACN),还确定并记录了矿工节点所在的并行链的并行链标识(以下简称矿工节点的MCN)。需要说明的是,矿工节点的ACN与矿工节点的MCN可以是相同的,也可以是不同的。矿工节点的ACN体现的是,矿工节点的挖矿奖励和记账奖励记录在该矿工节点的ACN所指示的并行链的矿工节点中,而矿工节点的MCN体现的是,该矿工节点所记录的出账交易和入账交易中涉及的账号地址对应的并行链的并行链标识。
由于页面显示限制,下面继续参考图2B,需要说明的是,图2B的流程除了包括图2B中所示的流程外,还可以包括图2A中所示的各个步骤。
可选实现方式(九):基于上述可选实现方式(八),各矿工节点的可信执行环境中和各路由节点中还可以存储有区块链系统所包括的并行链数目N和m,以及上述时序200还可以包括以下步骤211:
步骤211,路由节点对在本地存储的并行链配置信息进行加密后得到加密并行链配置信息,并将加密并行链配置信息发送给该路由节点的同链矿工节点。
这里,上述并行链配置信息可以包括区块链所包括的并行链数目N、m和第二预设掩码。
这里,m与区块链系统的扩容序号之间存在关联。
例如,区块链系统可以最开始有1个并行链,此时m为0,没有经过扩容,扩容序号为0。然后经过一次扩容,将1个并行链扩容成2个并行链,此时m为1,即经过一次扩容,扩容序号为1。再经过一次扩容,将2个并行链扩容成4个,此时m为2,即经过二次扩容,扩容序号为2。在这种情况下,区块链系统的扩容序号等于m。
又例如,区块链系统也可以最开始有16个并行链,此时m为4,没有经过扩容,扩容序号为0。然后经过一次扩容,将16个并行链扩容成32个并行链,此时m为5,即经过一次扩容,扩容序号为1。在这种情况下,区块链系统的扩容序号等于(m–m 0),其中,m 0为log 2N 0,N 0为区块链系统最开始未经扩容时所包括的并行链数目。
路由节点可以在矿工节点首次接入区块链系统时,执行步骤211。路由节点还可以在区块链系统扩容,即,增加区块链系统所包括的并行链数目的时候,执行步骤211。
步骤212,矿工节点响应于接收到该矿工节点的同链路由节点发送的加密并行链配置信息,在可信执行环境中对接收到的加密并行链配置信息进行解密。
需要说明的是,步骤211中的加密既可以采用对称加密,也可以采用非对称加密。如果步骤211中采用的是非对称加密,步骤211中加密时可以利用预设密钥对中的公钥进行加密,而步骤212中可以利用上述预设密钥对中的私钥进行解密。如果步骤211中采用的是对称加密,步骤211中可以采用预设配置信息密钥进行加密,而步骤212中也可以相应地采用上述预设配置信息密钥进行解密。这里的预设配置信息密钥可以是预设的、且有安全保证(不会泄露)的密钥。
步骤213,矿工节点在可信执行环境中响应于对解密后的并行链配置信息进行校验通过,用解密后并行链配置信息中的N,m和第二预设掩码更新可信执行环境中存储的N,m和第二预设掩码。
这里,矿工节点在可信执行环境中对解密后的并行链配置信息进行校验可以包括以下至少一项:解密后的并行链配置信息中的N是该矿工节点的可信执行环境中存储的N的两倍,解密后的并行链配置信息中的m等于该矿工节点的可信执行环境中存储的m加1的和。如果上述校验通过,表明该矿工节点的同链路由节点发来的并行链配置信息可以信任,则可以用解密后并行链配置信息中的N,m和第二预设掩码更新该矿工节点的可信执行环境中存储的N,m和第二预设掩码。
可选实现方式(十):基于图2所示的实施例,或者上述可选实现方式(一)到(九)中的任一可选实现方式,上述区块链系统还可以 包括管理服务器,管理服务器与区块链系统的各个并行链中的各路由节点网络连接,管理服务器中存储有预设管理私钥和预设管理公钥,各路由节点和各矿工节点存储有预设管理公钥。以及上述时序200还可以包括步骤214到步骤216:
步骤214,管理服务器响应于接收到用户输入的路由节点管理指令,将利用预设管理私钥对路由节点管理指令签名后发送给第一路由节点。
这里,路由节点管理指令是针对路由节点、且需要由路由节点执行的管理指令。路由节点管理指令可以包括但不限于实现以下操作的指令:启动在线扩容、将指定账号地址加入转入账号地址黑名单或者将指定账号地址加入转出账号地址黑名单等等。
用户可以通过终端上安装的网页浏览器访问预设管理网站来输入路由管理指令,然后终端将上述用户输入的路由管理指令发送给上述管理服务器,这里,管理服务器可以是预设管理网站提供支持的服务器。
用户还可以通过终端上安装的管理应用的管理指令输入界面来输入路由管理指令,然后终端可以将上述用户在管理指令输入界面中输入的路由管理指令发送给上述管理服务器,这里,管理服务器可以是对终端上安装的管理应用提供支持的服务器。
可以理解的是,用户也可以通过直接在管理服务器中访问预设管理网站或者使用管理应用来输入路由管理指令。
这样,管理服务器可以响应于接收到上述用户输入的路由管理指令,首先利用管理服务器中存储的预设管理私钥对所收到的路由节点管理指令进行签名,然后将签名后的路由节点管理指令发送给第一路由节点,其中,第一路由节点是路由节点管理指令所涉及的路由节点。
步骤215,路由节点响应于接收到管理服务器发送的签名后路由节点管理指令,利用预设管理公钥对所收到的签名后路由节点管理指令进行签名验证。
步骤216,路由节点响应于对所收到的签名后路由节点管理指令签名验证通过,执行所收到的签名后路由节点管理指令中的路由节点 管理指令。
通过执行步骤214到步骤216,用户可以通过输入针对路由节点的路由管理指令来实现对路由节点的管理。继而可以使监管部门通过管理服务器实现对路由节点的管理。
可选实现方式(十一):基于上述可选实现方式(十),上述时序200还可以包括步骤217到步骤221:
步骤217,管理服务器响应于接收到用户输入的交易管理指令,利用预设管理私钥对交易管理指令签名后发送给第二路由节点。
这里,交易管理指令可以包括将指定账号地址增加指定数目个数字货币或者将指定账号地址减少指定数目个数字货币。
这里,用户可以采用步骤214中记载的实现方式输入交易管理指令,在此不再赘述。
这样,管理服务器可以响应于接收到用户输入的交易管理指令,利用预设管理私钥对交易管理指令签名后发送给第二路由节点。其中,第二路由节点是交易管理指令所涉及的账号地址对应的并行链的路由节点。
步骤218,路由节点响应于接收到管理服务器发送的签名后交易管理指令,利用预设管理公钥对所收到的签名后交易管理指令进行签名验证。
步骤219,路由节点响应于对所收到的签名后交易管理指令签名验证通过,将所收到的签名后交易管理指令发送给该路由节点的同链矿工节点。
步骤220,矿工节点响应于接收到该矿工节点的同链路由节点发送的签名后交易管理指令,利用预设管理公钥对所收到的签名后交易管理指令进行签名验证。
步骤221,矿工节点响应于对所收到的签名后交易管理指令签名验证通过,将所收到的签名后交易管理指令中的交易管理指令添加到本地待处理交易请求集合中。
通过执行步骤217到步骤221,可以将用户输入的交易管理指令添加到矿工节点的本地待处理交易请求集合中。这样,矿工节点可以 继续执行步骤208,从而竞争到记账权的矿工节点可以将上述交易管理指令记入本地区块链中。继而可以使监管部门通过管理服务器实现对交易请求的管理。
可选实现方式(十二):基于上述可选实现方式(十)或者可选实现方式(十一),上述时序200还可以包括以下步骤222:
步骤222,路由节点响应于检测到预设异常,利用预设管理公钥对所检测到的异常的异常相关信息进行加密,并将加密后的异常相关信息发送到管理服务器。
这里,预设的异常可以包括但不限于以下的异常情况:
(1)、出账异常,即路由节点本地存储的交易请求集合中存在未在第一预设时长内完成出账确认的交易请求。
(2)、入账异常,即路由节点本地存储的交易请求集合中存在未在第二预设时长内完成入账确认的交易请求。
导致异常的原因可以是各种原因。例如,导致异常的原因可能是程序代码缺陷(bug),网络故障、出现对区块链系统的恶意攻击等等。导致异常的原因不同,异常的异常相关信息也会有所不同。例如,如果是程序代码缺陷导致的异常,那么异常的异常相关信息可以包括程序代码缺陷所在的程序文件名称、程序代码缺陷在程序文件中的行数、程序代码缺陷的缺陷类型等等。
这里,路由节点可以响应于检测到预设异常,利用预设管理公钥对所检测到的异常的异常相关信息进行加密,并将加密后的异常相关信息发送到管理服务器。
通过执行步骤222,管理服务器可以在接收到加密后的上述异常相关信息后,使用预设管理私钥对所收到的加密后异常相关信息进行解密。这样,管理服务器的用户可以通过分析上述异常相关信息,确定问题所在,并根据确定的问题改进区块链系统。
由于页面显示限制,下面继续参考图2C,需要说明的是,图2C的流程除了包括图2C中所示的流程外,还可以包括图2A和图2B中所示的各个步骤。
可选实现方式(十三):基于图2所示的步骤201到步骤208,或 者上述任一可选实现方式,上述时序200还可以包括以下步骤223到步骤230:
步骤223,路由节点在启动后,在本地存储的启动配置信息中获取该路由节点的公钥和私钥,以及获取利用预设管理私钥对该路由节点的公钥进行签名的签名后公钥。
这里,路由节点本地可以预先存储有启动配置信息,启动配置信息中包括该路由节点的公钥和私钥,以及获取利用预设管理私钥对该路由节点的公钥进行签名的签名后公钥。这样,路由节点可以在首次启动设备或者重新启动设备后,在本地存储的启动配置信息中获取该路由节点的公钥和私钥,以及获取利用预设管理私钥对该路由节点的公钥进行签名的签名后公钥。
步骤224,路由节点将所获取的签名后公钥广播给该路由节点的同链矿工节点。
这里,路由节点可以将步骤223中所获取的签名后公钥广播给该路由节点的同链矿工节点。
步骤225,路由节点利用该路由节点的私钥对发送给该路由节点的同链矿工节点的数据进行签名后发送。
这里,路由节点可以在需要给该路由节点的同链矿工节点发送数据时,首先,利用该路由节点的私钥对发送给该路由节点的同链矿工节点的数据进行签名,然后再将签名后的数据发送给该路由节点的同链矿工节点。
步骤226,路由节点利用该路由节点的私钥对从该路由节点的同链矿工节点收到的数据进行解密。
这里,路由节点可以在从该路由节点的同链矿工节点收到数据时,利用该路由节点的私钥对从该路由节点的同链矿工节点收到的数据进行解密。
步骤227,矿工节点响应于接收到该矿工节点的同链路由节点发送的签名后公钥,利用预设管理公钥对所收到的签名后公钥进行签名验证。
这里,由于路由节点发送给同链矿工节点的签名后公钥是使用预 设管理私钥进行签名的,那么矿工节点可以响应于接收到该矿工节点的同链路由节点发送的签名后公钥,利用预设管理公钥对所收到的签名后公钥进行签名验证。
步骤228,矿工节点响应于对签名后公钥进行签名验证通过,将所收到的签名后公钥中的公钥确定为该矿工节点的同链路由节点的公钥。
步骤229,矿工节点利用该矿工节点的同链路由节点的公钥对发送给该矿工节点的同链路由节点的数据进行加密。
这里,矿工节点可以在需要给该矿工节点的同链路由节点发送数据时,首先,利用步骤228中确定的该矿工节点的同链路由节点的公钥对发送给该矿工节点的同链路由节点的数据进行加密,然后将加密后的数据发送给该矿工节点的同链路由节点。
步骤230,矿工节点利用该矿工节点的同链路由节点的公钥对从该矿工节点的同链路由节点的收到的数据进行签名验证。
这里,由于路由节点发送给同链矿工节点的数据是采用路由节点的私钥进行签名的,因此,矿工节点可以在从该矿工节点的同链路由节点收到数据时,利用该矿工节点的同链路由节点的公钥对从该矿工节点的同链路由节点的收到的数据进行签名验证。
通过执行步骤223到步骤230,可以实现路由节点和路由节点的同链矿工节点之间的加密通讯。
由于页面显示限制,下面继续参考图2D,需要说明的是,图2D的流程除了包括图2D中所示的流程外,还可以包括图2A、图2B和图2C中所示的各个步骤。
可选实现方式(十四):基于图2所示的步骤201到步骤208,或者上述任一可选实现方式,上述时序200还可以包括以下步骤231:
步骤231,路由节点响应于对所收到的交易请求校验不通过,向发送所收到的交易请求的SPV节点发送第一提示信息。
在步骤202中,路由节点响应于对所收到的交易请求校验通过,将所收到的交易请求添加到该路由节点的交易请求集合中。这里,路由节点还可以响应于对所收到的交易请求校验不通过,向发送所收到 的交易请求的SPV节点发送第一提示信息。其中,第一提示信息用于指示交易请求校验不通过。
通过执行步骤231,发出交易请求的SPV节点的用户可以知道其所提交的交易请求校验没有通过,从而SPV节点的用户可以采用相应的措施,例如重新发送交易请求,或者检查交易请求存在什么问题后修改交易请求后重新提交交易请求。
可选实现方式(十五):基于图2所示的步骤201到步骤208,或者上述任一可选实现方式,上述时序200还可以包括以下步骤232和步骤233:
步骤232,路由节点对于该路由节点的交易请求集合中的异常交易请求,向该路由节点的各同链矿工节点发送与该异常交易请求对应的焚毁指令。
这里,路由节点的交易请求集合中的异常交易请求是指未在预设时长内确认出账的交易请求。路由节点的交易请求集合中的交易请求是经过路由节点校验通过的交易请求。虽然,路由节点的交易请求集合中的交易请求经过了校验,但是现实中会有各种异常产生,导致交易请求不能在预设时长内确认出账,那么对于发出上述交易请求的SPV节点而言,如果上述交易请求已经校验通过,而相应的转出金额的数字货币并未确认出账,这里需要强制执行将上述交易请求中的转出交易。
具体地,路由节点可以对于该路由节点的交易请求集合中的异常交易请求,向该路由节点的各同链矿工节点发送与该异常交易请求对应的焚毁指令。其中,与该异常交易请求对应的焚毁指令用于指示矿工节点将该异常交易请求中的出账账号地址减少该异常交易请求中的转出金额。
这里,交易请求确认出账可以是指交易请求已经经过路由节点验证通过,并且存储到了路由节点的交易请求集合中,该交易请求的出账请求确认出账。例如,路由节点可以在本地同步存储的区块链数据中确定最近已确认的区块中是否存在该出账请求已执行的操作记录。如果存在该出账请求已执行的操作记录,表明该出账请求确认出账。 反之,如果不存在,路由节点可以等待预设时长(比如,1.2小时),如果在预设时长内,最近已确认的区块中都不存在该出账请求已执行的操作记录,则可以确认该交易请求未确认出账。其中,最近已确认的区块是指本地所同步存储的区块链数据中尾部除最后Z个区块外的若干个区块,之所以除去尾部Z个区块是因为区块链系统普遍以Z次出块确认作为最终确认的条件。例如,对于比特币系统,Z可以取值为6。
这里,交易请求中的转出金额可以包括以下两部分:从交易请求中的转出账号地址转给转入账号地址的金额和记账奖励金额。
步骤233,矿工节点响应于接收到焚毁指令,执行所接收到的焚毁指令。
这里矿工节点执行焚毁指令可以包括:首先,解析将所收到的焚毁指令,得到异常交易请求中的出账账号地址减少该异常交易请求中的转出金额的出账交易请求。然后,将所得到的出账交易请求添加到该矿工节点的待处理交易请求集合中。最终,会由该矿工节点所在的并行链中竞争到记账权的矿工节点将上述出账交易请求写入本地区块链。
实践中,步骤232中,路由节点也可以对于该路由节点的交易请求集合中的异常交易请求,生成与该异常交易请求对应的出账交易请求,并将所生成的出账交易请求用该路由节点的私钥进行签名,得到签名信息,将生成的出账交易请求和签名信息作为焚毁指令发送给该路由节点的各同链矿工节点。其中,所生成的出账交易请求用于指示从被焚账号地址转入待焚毁金额到哑巴账号地址。其中,被焚账号地址和待焚毁金额分别是该异常交易请求中的出账账号地址和出账金额。这样,在步骤233中,矿工节点可以对所收到的焚毁指令进行签名验证,并在验证通过的情况下,在新出区块中添加所收到的焚毁指令中的出账交易请求,并不记录记账奖励信息,即矿工节点免费执行焚毁指令。哑巴账号地址是预设的一个只接收转入而不转出数字货币的账号地址。所有矿工节点都会检测哑巴账号地址向外转账的情形,并视之为非法交易,拒绝记入矿工节点的区块链中。
通过执行步骤232和步骤233,可以减少等待交易确认的时间。即,只要用户在SPV节点发出的交易请求被路由节点校验通过,那么对SPV节点用户而言,转出交易不可逆,转出金额无论是否发生异常都会转出。例如,账号地址A的用户使用简化支付验证应用提交了交易请求,用于将账号地址A的X个数字货币转给账号地址B以购买一杯咖啡,该交易请求被提交到路由节点并且被路由节点校验通过。随后,账号地址A的用户不需要等到该交易请求的最终出账确认和入账确认,可以提前带着一杯咖啡离开,不管账号地址B有没有确认收到账号地址A转来的X个数字货币,账号地址A的X个数字货币都会被转出。从而可以减少账号地址A的用户等待交易确认的时间。
可选实现方式(十六):基于图2所示的步骤201到步骤208,或者上述任一可选实现方式,上述时序200还可以包括以下步骤234:
步骤234,路由节点对该路由节点的交易请求集合中的各个交易请求的执行过程进行监控。
这里,由于路由节点中同步存储有路由节点所在并行链中的矿工节点的区块链数据,则路由节点可以通过分析本地同步的区块链数据,确定并记录该路由节点的交易请求集合中的每个交易请求的当前状态,从而实现对每个交易请求的执行过程进行监控。
可选实现方式(十六):基于图2所示的步骤201到步骤208,或者上述任一可选实现方式,路由节点的域名可以与该路由节点所在并行链的并行链标识相关联。
比如,“routenode0.xxx.com”是并行链标识“0”所指示的并行链的路由节点的域名,“routenode1.xxx.com”是并行链标识“1”所指示的并行链的路由节点的域名,“routenode65535.xxx.com”是并行链标识“65535”所指示的并行链的路由节点的域名
采用可选实现方式(十六),可以简化路由节点确定自己所在并行链的过程。
可选实现方式(十七):基于图2所示的步骤201到步骤208,或者上述任一可选实现方式,上述时序200还可以包括以下步骤235:
步骤235,管理服务器响应于接收到扩容请求,将区块链系统中 的N个并行链扩容为2N个并行链。
实践中,区块链系统会随着SPV节点和矿工节点数目的增加而将以性能,为此,可以将区块链系统进行扩容,所谓扩容就是增加并行链的数目。这里,可以由用户在管理服务器上发起扩容请求。这样,管理服务器可以响应于接收到扩容请求,将区块链系统中的N个并行链扩容为2N个并行链。具体地,管理服务器可以向区块链系统的N个并行链的路由节点发送路由管理指令,以实现将区块链系统原有路由节点中同步的区块链数据复制到新启动的路由节点中,并重新对各个路由节点确定所在的并行链。
可选实现方式(十八):基于图2所示的步骤201到步骤208,或者上述任一可选实现方式,上述时序200还可以包括以下步骤236和步骤237:
步骤236,矿工节点在该矿工节点的可信执行环境中,对发送给该矿工节点的同链矿工节点的数据利用第一密钥进行加密后发送。
这里,矿工节点可以在需要给该矿工节点的同链矿工节点发送数据时,首先,在在该矿工节点的可信执行环境中,对发送给该矿工节点的同链矿工节点的数据利用第一密钥进行加密,然后,再将加密后的数据发送给该矿工节点的同链矿工节点。需要说明的是,这里第一密钥的计算过程也是在该矿工节点的可信执行环境中完成的,计算完成得到的第一密钥也是存储在该矿工节点的可信执行环境中,该矿工节点的可信执行环境之外的应用不可以访问到第一密钥。
这里,第一密钥是根据该矿工节点所在并行链的并行链标识和上述m生成的。作为示例,第一密钥可以是通过组合该矿工节点所在并行链的并行链标识、上述m和第三预设掩码得到的,其中,第三预设掩码存储在每个矿工节点的可信执行环境中。
步骤237,矿工节点在该矿工节点的可信执行环境中,对从该矿工节点的同链矿工节点接收到的数据利用第一密钥进行解密。
这里,由于,第一密钥是根据矿工节点所在并行链的并行链标识和上述m生成的,对于所在并行链相同的各个矿工节点,并行链标识是相同的,m也是相同的,因此,对同一并行链中的各个不同矿工节 点而言,根据该矿工节点所在并行链的并行链标识和上述m生成的第一密钥也是相同的。即,同一并行链的不同矿工节点具有相同的第一密钥。而且,需要说明的是,第一密钥存储在每个矿工节点的可信执行环境中。
基于上述理由,如果矿工节点接收到该矿工节点的同链矿工节点发送的数据,那么矿工节点可以首先在该矿工节点的可信执行环境中获取第一密钥,然后对从该矿工节点的同链矿工节点接收到的数据利用第一密钥进行解密,就得到了相应的数据。
可选实现方式(十九):基于图2所示的步骤201到步骤208,或者上述任一可选实现方式,上述步骤202可以包括如下子步骤2021到子步骤2029:
子步骤2021,响应于接收到该路由节点的同链SPV节点发送的交易请求,校验所收到的交易请求的合法性。
这里,路由节点可以在接收到该路由节点的同链SPV节点发送的交易请求的情况下,首先校验所收到的交易请求的合法性。如果合法性校验通过,转到子步骤2022。如果合法性校验不通过,转到子步骤2023。
子步骤2022,向发送所收到的交易请求的SPV节点发送用于指示合法性校验不通过的第二提示信息。
这里,路由节点可以在子步骤2021中对所收到的交易请求的合法性校验不通过的情况下,向发送所收到的交易请求的SPV节点发送用于指示合法性校验不通过的第二提示信息。这样,发送交易请求的SPV节点可以获知合法性校验不通过,并进而等待用户的下一步操作。这里,第二提示信息可以与可选实现方式(十四)中的步骤231中发送的第一提示信息相同也可以不同。
子步骤2023,根据该路由节点的交易请求集合中未处理交易请求的数目确定该路由节点是否可接收新交易请求。
这里,路由节点可以在子步骤2021中对所收到的交易请求的合法性校验通过的情况下,根据该路由节点的交易请求集合中未处理交易请求的数目确定该路由节点是否可接收新交易请求。如果确定可以接 收新交易请求,可以转到子步骤2024。
例如,路由节点可以首先确定该路由节点的交易请求集合中未处理交易请求的数目是否大于预设未处理交易数目。如果是,确定该路由节点不可接收新交易请求,如果否,确定该路由节点可以接收新交易请求。
子步骤2024,将所收到的交易请求添加到该路由节点的交易请求集合中,以及生成与所收到的交易请求对应的交易编号,将所收到的交易请求、对应的交易标识和用于表征已出账的操作进程状态对应存储至预设分布式数据库中。
这里,路由节点可以在子步骤2023中确定该路由节点可以接收新交易请求的情况下,将所收到的交易请求添加到该路由节点的交易请求集合中,以及生成与所收到的交易请求对应的交易编号,将所收到的交易请求、对应的交易标识和用于表征已出账的操作进程状态对应存储至预设分布式数据库中。其中,所收到的交易请求对应的交易标识包括所生成的交易编号和该路由节点所在并行链的并行链标识。
这里,交易请求对应的交易编号可以是由路由节点生成的在该路由节点内不重复且连续递增的交易编号。但,由于各个路由节点内的交易编号之间可能存在重复,但是各个路由节点所在并行链的并行链标识不同,因此,可以组合交易编号和该路由节点所在并行链的并行链标识作为交易标识,从而交易标识可以唯一标识区块链系统中的交易请求,并且,预设分布式数据库中不仅存储了区块链系统中每个交易的交易请求信息和交易标识,还会实施更新并存储每个交易的操作进程状态。这里,交易的操作进程状态可以包括但不限于:合法性校验通过、合法性校验不通过、已加入路由节点的交易请求集合且未出账、出账已确认但入账未确认、入账已确认等等。
可选实现方式(二十):基于图2所示的步骤201到步骤208,或者上述任一可选实现方式,各个并行链还可以包括账本节点,各并行链的账本节点组成分布式账本集群。这样,上述时序200还可以包括如下步骤238和步骤239:
步骤238,账本节点实时将该账本节点的相邻同链矿工节点或路 由节点中存储的区块链同步存储到该账本节点的本地区块链中。
这里,账本节点可以实时将该账本节点的相邻同链矿工节点或路由节点中存储的区块链同步存储到该账本节点的本地区块链中。这样,账本节点中实时存储了每个并行链中的区块链数据。
步骤239,账本节点响应于接收到终端发送的账号信息查询请求,根据账号信息查询请求在分布式账本集群中查询数据,以及将查询结果发送给发送账号信息查询请求的终端。
这里,由于区块链系统的每个并行链均包括账本节点,且,每个账本节点均存储所在并行链的区块链数据,组合各个并行链的账本节点可以组成分布式账本集群。因此,账本节点可以响应于接收到终端发送的账号信息查询请求,根据账号信息查询请求在分布式账本集群中查询数据,以及将查询结果发送给发送账号信息查询请求的终端。从而,可以完成将区块链系统中各个并行链的区块链数据进行汇总、分析和查询。
本申请的上述实施例提供的区块链系统,通过采用至少一个并行链的方式将交易处理过程从单链串行方式,改进为多链并发方式,使得每秒交易次数随着并行链数增加而增加,进而提高了区块链系统的TPS。
进一步参考图3,其示出了应用于区块链系统的路由节点的路由方法的一个实施例的流程300。其中,区块链系统包括至少一个并行链,并行链包括路由节点、至少一个矿工节点和至少一个SPV节点,每个并行链的各个矿工节点采用分布式数据区块链存储数据,至少一个并行链的路由节点之间网络连接,SPV节点绑定的账号地址对应的并行链为SPV节点所在的并行链,该路由方法的流程300,包括以下步骤:
步骤301,响应于对所收到的交易请求校验通过,将所收到的交易请求添加到路由节点的交易请求集合中,以及将所收到的交易请求签名后广播给路由节点的同链矿工节点。
在本实施例中,路由方法运行于其上的执行主体(例如图1所示 的路由节点)可以响应于接收到区块链系统中SPV节点发送的交易请求,对所收到的交易请求进行校验。如果校验通过,则可以将所收到的交易请求添加到上述执行主体的交易请求集合中,以及将所收到的交易请求签名后广播给上述执行主体的各个同链矿工节点。
在本实施例中步骤301的具体操作与图2所示的实施例中步骤202的操作基本相同,在此不再赘述。
步骤302,实时将同链矿工节点的区块链同步到本地区块链。
在本实施例中,上述执行主体可以将同链矿工节点的区块链同步到本地区块链。也就是说,上述执行主体不会执行挖矿和记账的操作,但是,上述执行主体中同步保存了上述执行主体所在并行链的区块链数据(账本)。
需要说明的是,上述执行主体可以随时执行步骤302,并不限定于在执行完步骤301之后执行步骤302。
步骤303,确定交易请求集合中确认已出账且未入账的未入账交易请求。
在本实施例中,上述执行主体可以确定本地存储的交易请求集合中确认已出账且未入账的未入账交易请求。
在本实施例中,步骤303的具体操作与图2所示的实施例中步骤205的操作基本相同,在此不再赘述。
步骤304,将所确定的未入账交易请求发送给目标并行链的路由节点。
在本实施例中,上述执行主体可以但步骤303中将所确定的未入账交易请求发送给目标并行链的路由节点。其中,上述目标并行链是所确定的未入账交易请求中的入账账号地址对应的并行链。
在本实施例中,步骤304的具体操作与图2所示的实施例中步骤206的操作基本相同,在此不再赘述。
步骤305,响应于接收到异链路由节点发送的交易请求,将所收到的交易请求签名后广播给同链矿工节点。
在本实施例中,上述执行主体可以响应于接收到异链路由节点发送的交易请求,将所收到的交易请求签名后广播给上述执行主体的同 链矿工节点。
在本实施例中,步骤305的具体操作与图2所示的实施例中步骤207的操作基本相同,在此不再赘述。
本申请的上述实施例提供的应用于区块链系统的路由节点的路由方法,通过对路由节点的链内SPV节点发送的交易请求进行校验、签名、转发,以及实时同步同链矿工节点的区块链数据,可以提高区块链系统的TPS。
下面参考图4,其示出了适于用来实现本申请实施例的路由节点的计算机系统400的结构示意图。图4示出的路由节点仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图4所示,计算机系统400包括中央处理单元(CPU,Central Processing Unit)401,其可以根据存储在只读存储器(ROM,Read Only Memory)402中的程序或者从存储部分408加载到随机访问存储器(RAM,Random Access Memory)403中的程序而执行各种适当的动作和处理。在RAM 403中,还存储有系统400操作所需的各种程序和数据。CPU 401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O,Input/Output)接口405也连接至总线404。
以下部件连接至I/O接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(CRT,Cathode Ray Tube)、液晶显示器(LCD,Liquid Crystal Display)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如LAN(局域网,Local Area Network)卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至I/O接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程 序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。在该计算机程序被中央处理单元(CPU)401执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++、Python,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中, 远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:响应于对所收到的交易请求校验通过,将所收到的交易请求添加到路由节点的交易请求集合中,以及将所收到的交易请求签名后广播给路由节点的同链矿工节点;实时将路由节点的同链矿工节点的区块链同步到本地区块链;确定路由节点的交易请求集合中确认已出账且未入账的未入账交易请求;将所确定的未入账交易请求发送给目标并行链的路由节点,其中,目标并行链是所确定的未入账交易请求中的入账账号地址对应的并行链;以及响应于接收到异链路由节点发送的交易请求,将所收到的交易请求签名后广播给路由节点的同链矿工节点。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合 而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (38)

  1. 一种区块链系统,包括至少一个并行链,并行链包括路由节点、至少一个矿工节点和至少一个简化支付验证SPV节点,每个并行链的各个矿工节点采用分布式数据区块链存储数据,所述至少一个并行链的路由节点之间网络连接,SPV节点绑定的账号地址对应的并行链为SPV节点所在的并行链,其中:
    SPV节点被配置成:响应于接收到交易请求,将所收到的交易请求发送给该SPV节点所在的并行链的路由节点;
    路由节点被配置成:响应于对所收到的交易请求校验通过,将所收到的交易请求添加到该路由节点的交易请求集合中,以及将所收到的交易请求签名后广播给该路由节点的同链矿工节点;以及实时将该路由节点的同链矿工节点的区块链同步到本地区块链;
    矿工节点被配置成:响应于对从同链路由节点接收到的签名后交易请求验证通过,将签名后交易请求中该矿工节点的链内交易请求添加到该矿工节点的待处理交易请求集合;
    路由节点被配置成:确定该路由节点的交易请求集合中确认已出账且未入账的未入账交易请求;将所确定的未入账交易请求发送给目标并行链的路由节点,其中,所述目标并行链是所确定的未入账交易请求中的入账账号地址对应的并行链;以及响应于接收到异链路由节点发送的交易请求,将所收到的交易请求签名后广播给该路由节点的同链矿工节点。
  2. 根据权利要求1所述的系统,其中,矿工节点中设置有可信执行环境,以及矿工节点的可信执行环境中存储有用于唯一标识该矿工节点的节点标识。
  3. 根据权利要求2所述的系统,其中,矿工节点绑定有账号地址;以及
    矿工节点被配置成:响应于竞争到该矿工节点所在并行链的记账 权,执行以下记账操作:从该矿工节点的待处理交易请求集合中选取待处理交易请求;用所选取的待处理交易请求、该矿工节点的挖矿奖励信息和记账奖励信息生成新区块,其中,该矿工节点的挖矿奖励信息和记账奖励信息分别用于表征将挖矿奖励和与所选取的待处理交易请求中的各出账交易请求对应的记账奖励计入该矿工节点绑定的账号地址;将所生成的新区块串接到该矿工节点的本地区块链中;以及将所生成的新区块广播给该矿工节点的其他同链矿工节点。
  4. 根据权利要求3所述的系统,其中,账号地址包括虚拟并行链标识和账号地址字符串;以及
    矿工节点被配置成:响应于检测到账号地址生成请求,在该矿工节点的可信执行环境中执行以下账号地址绑定操作:响应于确定该矿工节点没有绑定过账号地址,生成新的账号地址字符串作为该矿工节点的账号地址字符串;按照预设计算公式,根据该矿工节点的节点标识计算该矿工节点的虚拟并行链标识,组合该矿工节点的账号地址字符串和虚拟并行链标识得到账号地址,以及将组合得到的账号地址确定为该矿工节点绑定的账号地址。
  5. 根据权利要求4所述的系统,其中,所述区块链系统包括的并行链数目N为2的m次方,其中,m为0到16之间的自然数。
  6. 根据权利要求5所述的系统,其中,虚拟并行链标识为0到65535之间的自然数。
  7. 根据权利要求6所述的系统,其中,各所述矿工节点的可信执行环境中存储有第一预设掩码,所述第一预设掩码为0到65535之间的整数;以及
    所述按照预设计算公式,根据该矿工节点的节点标识计算该矿工节点的虚拟并行链标识,包括:
    将该矿工节点的节点标识的二进制表示与所述第一预设掩码的二 进制表示按位做异或运算的结果确定为该矿工节点的虚拟并行链标识。
  8. 根据权利要求7所述的系统,其中,用于指示并行链的并行链标识为0到(N-1)之间的自然数。
  9. 根据权利要求8所述的系统,其中,各所述路由节点和各所述矿工节点的可信执行环境中存储有第二预设掩码,所述第二预设掩码为0到65535之间的整数;以及
    矿工节点被配置成:响应于检测到矿工入网请求,在该矿工节点的可信执行环境中执行以下并行链确定操作:将该矿工节点的虚拟并行链标识的二进制表示与所述N减1的差的二进制表示按位做与运算,得到账号并行链标识;将所述账号并行链标识所指示的并行链确定为该矿工节点绑定的账号地址对应的并行链;将该矿工节点的虚拟并行链标识的二进制表示与所述第二预设掩码的二进制表示按位做异或运算,得到异或运算结果;将所得到的异或运算结果与所述N减1的差的二进制表示按位做与运算,得到矿工并行链标识;将该矿工节点所在的并行链确定为所述矿工并行链标识所指示的并行链。
  10. 根据权利要求9所述的系统,其中,各所述矿工节点的可信执行环境中和各所述路由节点中还存储有所述N和所述m;以及
    路由节点还被配置成:对在本地存储的并行链配置信息进行加密后得到加密并行链配置信息,并将所述加密并行链配置信息发送给该路由节点的同链矿工节点,其中,所述并行链配置信息包括所述N、所述m和所述第二预设掩码;以及
    矿工节点被配置成:响应于接收到该矿工节点的同链路由节点发送的加密并行链配置信息,在该矿工节点的可信执行环境中对接收到的加密并行链配置信息进行解密;以及响应于对解密后的并行链配置信息进行校验通过,用解密后并行链配置信息中的N,m和第二预设掩码更新该矿工节点的可信执行环境中存储的N,m和第二预设掩码。
  11. 根据权利要求10所述的系统,其中,所述区块链系统还包括管理服务器,所述管理服务器与各所述路由节点网络连接,所述管理服务器中存储有预设管理私钥和预设管理公钥,各所述路由节点和各所述矿工节点存储有所述预设管理公钥;以及
    所述管理服务器被配置成:响应于接收到用户输入的路由节点管理指令,将利用所述预设管理私钥对所述路由节点管理指令签名后发送给第一路由节点,其中,所述第一路由节点是所述路由节点管理指令所涉及的路由节点;
    路由节点被配置成:响应于接收到所述管理服务器发送的签名后路由节点管理指令,利用所述预设管理公钥对所收到的签名后路由节点管理指令进行签名验证;响应于对所收到的签名后路由节点管理指令签名验证通过,执行所收到的签名后路由节点管理指令中的路由节点管理指令。
  12. 根据权利要求11所述的系统,其中:
    所述管理服务器被配置成:响应于接收到用户输入的交易管理指令,利用所述预设管理私钥对所述交易管理指令签名后发送给第二路由节点,其中,所述第二路由节点是所述交易管理指令所涉及的账号地址对应的并行链的路由节点;
    路由节点被配置成:响应于接收到所述管理服务器发送的签名后交易管理指令,利用所述预设管理公钥对所收到的签名后交易管理指令进行签名验证;响应于对所收到的签名后交易管理指令签名验证通过,将所收到的签名后交易管理指令发送给该路由节点的同链矿工节点;
    矿工节点被配置成:响应于接收到该矿工节点的同链路由节点发送的签名后交易管理指令,利用所述预设管理公钥对所收到的签名后交易管理指令进行签名验证;响应于对所收到的签名后交易管理指令签名验证通过,将所收到的签名后交易管理指令中的交易管理指令添加到本地待处理交易请求集合中。
  13. 根据权利要求12所述的系统,其中,路由节点还被配置成:
    响应于检测到预设异常,利用所述预设管理公钥对所检测到的异常的异常相关信息进行加密,并将加密后的异常相关信息发送到所述管理服务器。
  14. 根据权利要求13所述的系统,其中:
    路由节点还被配置成:在该路由节点启动后,在本地存储的启动配置信息中获取该路由节点的公钥和私钥,获取利用所述预设管理私钥对该路由节点的公钥进行签名的签名后公钥,将所获取的签名后公钥广播给该路由节点的同链矿工节点,利用该路由节点的私钥对发送给该路由节点的同链矿工节点的数据进行签名后发送,以及利用该路由节点的私钥对从该路由节点的同链矿工节点收到的数据进行解密;以及
    矿工节点还被配置成:响应于接收到该矿工节点的同链路由节点发送的签名后公钥,利用所述预设管理公钥对所收到的签名后公钥进行签名验证;响应于对签名后公钥进行签名验证通过,将所收到的签名后公钥中的公钥确定为该矿工节点的同链路由节点的公钥;利用该矿工节点的同链路由节点的公钥对发送给该矿工节点的同链路由节点的数据进行加密后发送,以及利用该矿工节点的同链路由节点的公钥对从该矿工节点的同链路由节点的收到的数据进行签名验证。
  15. 根据权利要求14所述的系统,其中,路由节点被配置成:
    响应于对所收到的交易请求校验不通过,向发送所收到的交易请求的SPV节点发送第一提示信息,其中,所述第一提示信息用于指示交易请求校验不通过。
  16. 根据权利要求15所述的系统,其中,路由节点被配置成:
    对于该路由节点的交易请求集合中的异常交易请求,向该路由节点的各同链矿工节点发送与该异常交易请求对应的焚毁指令,其中, 异常交易请求是未在预设时长内确认出账的交易请求,与该异常交易请求对应的焚毁指令用于指示矿工节点将该异常交易请求中的出账账号地址减少该异常交易请求中的转出金额;以及
    矿工节点被配置成:响应于接收到焚毁指令,执行所接收到的焚毁指令。
  17. 根据权利要求16所述的系统,其中,路由节点被配置成:
    对该路由节点的交易请求集合中的各个交易请求的执行过程进行监控。
  18. 根据权利要求17所述的系统,其中,路由节点的域名与该路由节点所在并行链的并行链标识相关联。
  19. 根据权利要求18所述的系统,其中,所述管理服务器被配置成:
    响应于接收到扩容请求,将所述区块链系统中的N个并行链扩容为2N个并行链。
  20. 根据权利要求19所述的系统,其中,矿工节点被配置成:
    在该矿工节点的可信执行环境中,对发送给该矿工节点的同链矿工节点的数据利用第一密钥进行加密后发送,其中,所述第一密钥是根据该矿工节点所在并行链的并行链标识和所述m生成的;
    在该矿工节点的可信执行环境中,对从该矿工节点的同链矿工节点接收到的数据利用所述第一密钥进行解密。
  21. 根据权利要求20所述的系统,其中,所述路由节点被配置成:响应于对所收到的交易请求校验通过,将所收到的交易请求添加到该路由节点的交易请求集合中,包括:
    路由节点被配置成:响应于接收到该路由节点的同链SPV节点发送的交易请求,校验所收到的交易请求的合法性;响应于合法性校验 不通过,向发送所收到的交易请求的SPV节点发送用于指示合法性校验不通过的第二提示信息;响应于合法性校验通过,根据该路由节点的交易请求集合中未处理交易请求的数目确定该路由节点是否可接收新交易请求;响应于确定可接收新交易请求,将所收到的交易请求添加到该路由节点的交易请求集合中,以及生成与所收到的交易请求对应的交易编号,将所收到的交易请求、对应的交易标识和用于表征已出账的操作进程状态对应存储至预设分布式数据库中,其中,所收到的交易请求对应的交易标识包括所生成的交易编号和该路由节点所在并行链的并行链标识。
  22. 根据权利要求21所述的系统,其中,路由节点被配置成:
    确定该路由节点的交易请求集合中的已经入账确认的已入账交易请求;
    根据所确定的已入账交易请求的交易标识,将所述预设分布式数据库中所确定的已入账交易请求的操作进程状态更新为已入账。
  23. 根据权利要求1-22中任一所述的系统,其中,各所述并行链还包括账本节点,各所述并行链的账本节点组成分布式账本集群;以及
    账本节点被配置成:
    实时将该账本节点的相邻同链矿工节点或路由节点中存储的区块链同步存储到该账本节点的本地区块链中;
    响应于接收到终端发送的账号信息查询请求,根据所述账号信息查询请求在所述分布式账本集群中查询数据,以及将查询结果发送给发送所述账号信息查询请求的终端。
  24. 一种应用于区块链系统的路由节点的路由方法,其中,所述区块链系统包括至少一个并行链,并行链包括路由节点、至少一个矿工节点和至少一个简化支付验证SPV节点,每个并行链的各个矿工节点采用分布式数据区块链存储数据,所述至少一个并行链的路由节点 之间网络连接,SPV节点绑定的账号地址对应的并行链为SPV节点所在的并行链,所述方法包括:
    响应于对所收到的交易请求校验通过,将所收到的交易请求添加到所述路由节点的交易请求集合中,以及将所收到的交易请求签名后广播给所述路由节点的同链矿工节点;
    实时将所述路由节点的同链矿工节点的区块链同步到本地区块链;
    确定所述路由节点的交易请求集合中确认已出账且未入账的未入账交易请求;
    将所确定的未入账交易请求发送给目标并行链的路由节点,其中,所述目标并行链是所确定的未入账交易请求中的入账账号地址对应的并行链;以及
    响应于接收到异链路由节点发送的交易请求,将所收到的交易请求签名后广播给所述路由节点的同链矿工节点。
  25. 根据权利要求24所述的方法,其中,矿工节点中设置有可信执行环境,所述区块链系统包括的并行链数目N为2的m次方,其中,m为0到16之间的自然数。
  26. 根据权利要求25所述的方法,其中,各所述矿工节点的可信执行环境中和各所述路由节点存储有所述N,所述m和第二预设掩码,所述第二预设掩码为0到65535之间的整数;以及
    所述方法还包括:对在本地存储的并行链配置信息进行加密后得到加密并行链配置信息,并将所述加密并行链配置信息发送给所述路由节点的同链矿工节点,其中,所述并行链配置信息包括所述N、所述m和所述第二预设掩码。
  27. 根据权利要求26所述的方法,其中,所述区块链系统还包括管理服务器,所述管理服务器与各所述路由节点网络连接,所述管理服务器中存储有预设管理私钥和预设管理公钥,各所述路由节点和各 所述矿工节点存储有所述预设管理公钥;以及
    所述方法还包括:
    响应于接收到所述管理服务器发送的签名后路由节点管理指令,利用所述预设管理公钥对所收到的签名后路由节点管理指令进行签名验证;
    响应于对所收到的签名后路由节点管理指令签名验证通过,执行所收到的签名后路由节点管理指令中的路由节点管理指令。
  28. 根据权利要求27所述的方法,其中,所述方法还包括:
    响应于接收到所述管理服务器发送的签名后交易管理指令,利用所述预设管理公钥对所收到的签名后交易管理指令进行签名验证;
    响应于对所收到的签名后交易管理指令签名验证通过,将所收到的签名后交易管理指令发送给所述路由节点的同链矿工节点。
  29. 根据权利要求28所述的方法,其中,所述方法还包括:
    响应于检测到预设异常,利用所述预设管理公钥对所检测到的异常的异常相关信息进行加密,并将加密后的异常相关信息发送到所述管理服务器。
  30. 根据权利要求29所述的方法,其中,所述方法还包括:
    在所述路由节点启动后,在本地存储的启动配置信息中获取所述路由节点的公钥和私钥,以及获取利用所述预设管理私钥对所述路由节点的公钥进行签名的签名后公钥;
    将所获取的签名后公钥广播给所述路由节点的同链矿工节点;
    利用所述路由节点的私钥对发送给所述路由节点的同链矿工节点的数据进行签名后发送;以及
    利用所述路由节点的私钥对从所述路由节点的同链矿工节点收到的数据进行解密。
  31. 根据权利要求30所述的方法,其中,所述方法还包括:
    响应于对所收到的交易请求校验不通过,向发送所收到的交易请求的SPV节点发送第一提示信息,其中,所述第一提示信息用于指示交易请求校验不通过。
  32. 根据权利要求31所述的方法,其中,所述方法还包括:
    对于所述路由节点的交易请求集合中的异常交易请求,向所述路由节点的各同链矿工节点发送与所述异常交易请求对应的焚毁指令,其中,异常交易请求是未在预设时长内确认出账的交易请求,与所述异常交易请求对应的焚毁指令用于指示矿工节点将所述异常交易请求中的出账账号地址减少所述异常交易请求中的转出金额。
  33. 根据权利要求32所述的方法,其中,所述方法还包括:
    对所述路由节点的交易请求集合中的各个交易请求的执行过程进行监控。
  34. 根据权利要求33所述的方法,其中,所述路由节点的域名与所述路由节点所在并行链的并行链标识相关联。
  35. 根据权利要求34所述的方法,其中,所述响应于对所收到的交易请求校验通过,将所收到的交易请求添加到所述路由节点的交易请求集合中,包括:
    响应于接收到所述路由节点的同链SPV节点发送的交易请求,校验所收到的交易请求的合法性;
    响应于合法性校验不通过,向发送所收到的交易请求的SPV节点发送用于指示合法性校验不通过的第二提示信息;
    响应于合法性校验通过,根据所述路由节点的交易请求集合中未处理交易请求的数目确定所述路由节点是否可接收新交易请求;
    响应于确定可接收新交易请求,将所收到的交易请求添加到所述路由节点的交易请求集合中,以及生成与所收到的交易请求对应的交易编号,将所收到的交易请求、对应的交易标识和用于表征已出账的 操作进程状态对应存储至预设分布式数据库中,其中,所收到的交易请求对应的交易标识包括所生成的交易编号和所述路由节点所在并行链的并行链标识。
  36. 根据权利要求35所述的方法,其中,所述方法还包括:
    确定所述路由节点的交易请求集合中的已经入账确认的已入账交易请求;
    根据所确定的已入账交易请求的交易标识,将所述预设分布式数据库中所确定的已入账交易请求的操作进程状态更新为已入账。
  37. 一种路由节点,包括:
    一个或多个处理器;
    存储装置,其上存储有一个或多个程序,
    当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求24-36中任一所述的方法。
  38. 一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被一个或多个处理器执行时实现如权利要求24-36中任一所述的方法。
PCT/CN2019/090355 2018-06-20 2019-06-06 区块链系统和应用于区块链系统的路由节点的路由方法 WO2019242508A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810636486.6A CN110619520B (zh) 2018-06-20 2018-06-20 区块链系统和应用于区块链系统的路由节点的路由方法
CN201810636486.6 2018-06-20

Publications (1)

Publication Number Publication Date
WO2019242508A1 true WO2019242508A1 (zh) 2019-12-26

Family

ID=68920761

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/090355 WO2019242508A1 (zh) 2018-06-20 2019-06-06 区块链系统和应用于区块链系统的路由节点的路由方法

Country Status (2)

Country Link
CN (1) CN110619520B (zh)
WO (1) WO2019242508A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111275437A (zh) * 2020-01-12 2020-06-12 杭州复杂美科技有限公司 平行链共识方法、设备和存储介质
CN112231105A (zh) * 2020-10-26 2021-01-15 中国工商银行股份有限公司 基于区块链的区块写入方法及系统
CN113691508A (zh) * 2021-08-06 2021-11-23 上海浦东发展银行股份有限公司 数据传输方法、系统、装置、计算机设备及存储介质
CN114500030A (zh) * 2022-01-21 2022-05-13 黎鸿 基于数字地址的弹性链方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111401868B (zh) * 2020-03-19 2022-07-01 南开大学 一种费用最小的区块链链下交易路由算法
CN112737916B (zh) * 2020-11-23 2022-01-07 腾讯科技(深圳)有限公司 一种基于区块链网络的数据处理方法及相关装置
CN112446050B (zh) * 2021-02-01 2021-05-18 腾讯科技(深圳)有限公司 应用于区块链系统的业务数据处理方法及装置
CN115811498A (zh) * 2023-02-06 2023-03-17 北京微芯区块链与边缘计算研究院 一种联盟链的节点路由方法、装置、设备及存储介质
CN117240605B (zh) * 2023-11-10 2024-02-02 北京中科江南信息技术股份有限公司 数据交易方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160330034A1 (en) * 2015-05-07 2016-11-10 Blockstream Corporation Transferring ledger assets between blockchains via pegged sidechains
CN107277781A (zh) * 2017-05-03 2017-10-20 上海点融信息科技有限责任公司 移动宽带网络下的区块链多播网络、区块链设备及其通信方法
CN107742210A (zh) * 2017-10-13 2018-02-27 布比(北京)网络技术有限公司 一种不同区块链间的跨链转账系统和方法
CN107909369A (zh) * 2017-10-13 2018-04-13 布比(北京)网络技术有限公司 基于跨链交易的共识方法、装置和存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106385319B (zh) * 2016-09-29 2020-11-27 江苏通付盾科技有限公司 区块链网络中信息的验证方法及系统
CN106452785B (zh) * 2016-09-29 2019-05-17 财付通支付科技有限公司 区块链网络、分支节点及区块链网络应用方法
CN106936589B (zh) * 2017-04-21 2020-02-07 杭州秘猿科技有限公司 一种无中心的许可链平行分片方法及交易方法
CN107395353B (zh) * 2017-04-24 2020-01-31 阿里巴巴集团控股有限公司 一种区块链共识方法及装置
CN107291862A (zh) * 2017-06-12 2017-10-24 腾讯科技(深圳)有限公司 业务数据存储方法、装置、存储介质及电子设备
CN107294729B (zh) * 2017-07-25 2020-03-13 中国联合网络通信集团有限公司 区块链中不同节点之间的通信方法及装置
CN107688999B (zh) * 2017-08-11 2020-11-13 杭州溪塔科技有限公司 一种基于区块链的并行交易执行方法
CN107678865A (zh) * 2017-09-20 2018-02-09 中国银行股份有限公司 基于交易分组的区块链的验证方法以及系统
CN107862216B (zh) * 2017-10-13 2021-04-06 布比(北京)网络技术有限公司 用于匿名跨链交易的隐私保护方法、装置和存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160330034A1 (en) * 2015-05-07 2016-11-10 Blockstream Corporation Transferring ledger assets between blockchains via pegged sidechains
CN107277781A (zh) * 2017-05-03 2017-10-20 上海点融信息科技有限责任公司 移动宽带网络下的区块链多播网络、区块链设备及其通信方法
CN107742210A (zh) * 2017-10-13 2018-02-27 布比(北京)网络技术有限公司 一种不同区块链间的跨链转账系统和方法
CN107909369A (zh) * 2017-10-13 2018-04-13 布比(北京)网络技术有限公司 基于跨链交易的共识方法、装置和存储介质

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111275437A (zh) * 2020-01-12 2020-06-12 杭州复杂美科技有限公司 平行链共识方法、设备和存储介质
CN111275437B (zh) * 2020-01-12 2023-05-30 杭州复杂美科技有限公司 平行链共识方法、设备和存储介质
CN112231105A (zh) * 2020-10-26 2021-01-15 中国工商银行股份有限公司 基于区块链的区块写入方法及系统
CN112231105B (zh) * 2020-10-26 2023-10-27 中国工商银行股份有限公司 基于区块链的区块写入方法及系统
CN113691508A (zh) * 2021-08-06 2021-11-23 上海浦东发展银行股份有限公司 数据传输方法、系统、装置、计算机设备及存储介质
CN114500030A (zh) * 2022-01-21 2022-05-13 黎鸿 基于数字地址的弹性链方法
CN114500030B (zh) * 2022-01-21 2023-06-20 黎鸿 基于数字地址的弹性链方法

Also Published As

Publication number Publication date
CN110619520A (zh) 2019-12-27
CN110619520B (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
WO2019242508A1 (zh) 区块链系统和应用于区块链系统的路由节点的路由方法
JP7273148B2 (ja) デジタル証明書の発行方法、デジタル証明書発行センター、記憶媒体およびコンピュータプログラム
CN111066287B (zh) 使用可信执行环境检索区块链网络的公开数据
AU2019204708B2 (en) Retrieving public data for blockchain networks using highly available trusted execution environments
EP4120114A1 (en) Data processing method and apparatus, smart device and storage medium
CN108596588B (zh) 一种区块数据的处理方法、装置、计算设备和存储介质
US8417964B2 (en) Software module management device and program
CN110535648B (zh) 电子凭证生成及验证和密钥控制方法、装置、系统和介质
TW202036345A (zh) 使用多重金鑰對簽署的程式執行和資料證明方案
US8850208B1 (en) Certificate crosschecking by multiple certificate authorities
WO2020010972A1 (zh) 应用于区块链系统中矿工节点的共识方法和区块链系统
WO2020050390A1 (ja) 権利者端末、利用者端末、権利者プログラム、利用者プログラム、コンテンツ利用システムおよびコンテンツ利用方法
CN110096894B (zh) 一种基于区块链的数据匿名共享系统及方法
EP3796613B1 (en) Techniques for repeat authentication
EP4092984A1 (en) Data processing method and apparatus, device and medium
CN110620776B (zh) 一种数据转移信息传输方法及其装置
JP6939313B2 (ja) 分散認証システム
KR20180024389A (ko) 키 관리 장치 및 방법
WO2019163040A1 (ja) アクセス管理システム、及びそのプログラム
WO2017175926A1 (ko) Id 기반 공개 키 암호화를 이용한 전자 지불 방법 및 전자 디바이스
CN112825522A (zh) 可信的数据传输方法、系统、电子设备、存储介质
US20240143730A1 (en) Multi-factor authentication using blockchain
US20230231722A1 (en) Apparatus, methods, and program products for generating secure short universal resource locators
US20230198769A1 (en) Opt-out systems and methods for tailored advertising
CN117728976A (zh) 数据传输方法、装置、设备及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19821511

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19821511

Country of ref document: EP

Kind code of ref document: A1