CN110992182A - 区块链钱包的交易方法及*** - Google Patents
区块链钱包的交易方法及*** Download PDFInfo
- Publication number
- CN110992182A CN110992182A CN201911226055.3A CN201911226055A CN110992182A CN 110992182 A CN110992182 A CN 110992182A CN 201911226055 A CN201911226055 A CN 201911226055A CN 110992182 A CN110992182 A CN 110992182A
- Authority
- CN
- China
- Prior art keywords
- transaction
- wallet
- information
- merck
- blockchain
- 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
-
- 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
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
- G06Q20/367—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Finance (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Development Economics (AREA)
- Technology Law (AREA)
- Marketing (AREA)
- Economics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请涉及区块链技术领域,具体涉及一种区块链钱包的交易方法及***,包括以下步骤:默克树服务器获取区块链中的默克树信息;区块链钱包与转发服务器建立连接;区块链钱包向区块链发送交易信息,同时更新账户余额;区块链钱包向默克树服务器查询当前交易的默克路径信息并将默克路径信息、交易信息发送给转发服务器;转发服务器将交易信息以及默克路径信息发送给交易接收方;交易接收方根据所述默克路径信息进行交易验证并确认交易。本方法提供了一种点对点的区块链钱包的实现方式,使得钱包服务端不需要爬取区块链上交易信息,让钱包的交易不受大区块的影响,提高交易效率,降低钱包服务商的运营成本。
Description
技术领域
本申请涉及区块链技术领域,具体涉及一种区块链钱包的交易方法及***。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性和生成下一个区块。
在区块链中,没有余额账户的概念,帐号的余额由多条的UTXO(UnspentTransaction Output,未花费的输出)记录组成,每一笔收入都是一个UTXO,UTXO花掉的时候必须整个花掉,如果有剩余,必须生成新的一条UTXO,而不能改变UTXO中金额信息。由于区块链这个特性,其无法提供一个中心化的服务来查询每个用户的余额和历史记录。在这种情况下,需要有一类软件来帮用户管理区块链上的资产,这类软件就是钱包,其主要功能包括公钥和私钥管理,历史记录查询,余额查询,发送和接收交易等。目前市面上的钱包的实现方式主要有以下两种:
方式一,由后台服务爬取区块链上的所有交易信息,然后分析出每个地址的交易,存储到关系数据库中,如果爬取到当前钱包用户相关的交易,则更新用户的余额,当钱包客户端查询余额或者历史记录的时候,向服务端请求关系数据库中的数据。钱包发送交易的时候,向服务端请求UTXO的集合,然后构造交易发送到区块链网络上。这种实现方式,跟传统的中心化的钱包不一样,钱包服务商无法直接得到用户余额变动的信息,而只能从区块链上的海量交易中筛选出用户相关的交易。
在目前的比特币区块链中,区块数量超过60万,交易数量超过3亿,地址相关的流水超过20亿。区块链的区块大小限制,经历了1M(百万字节),8M,128M,256M。目前已经出现了每个区块的大小在1GB(GB十亿字节)以上,整个区块链的大小在10TB(TB表示万亿字节),每十分钟的交易数量在五百万以上的超大区块链。在不远的将来中,区块大小的限制将会被取消,交易量和整条链的大小都会呈指数增长,因为只有大小不被限制的超大区块,才可以承载现实世界中海量的交易,以及各种各样的需要永久保存,并且不可篡改,方便审计的数据。在这种情况下,维护一个区块链的全节点,并从全节点上爬取数据,存在以下问题:1、爬取区块里面的所有交易需要大量的计算量;2、存储交易需要大量的存储空间;3、效率低下,交易更新不及时;4、为实现高效率的存储和查询,导致关系数据库的分库分表方案复杂。这些问题都导致了钱包商运营成本的增加。
方式二,例如BIP 270和paymail的方式,采用了第三方服务端来对钱包进行统一集中管理,钱包之间发生交易的时候,需要根据对方的邮箱,到邮箱域名对应的服务器查询支付的模板,然后填充模板,构造交易,并将交易提交的该服务器。该方式的问题是,需要第三方服务端做大量工作,第三方服务端需要有邮箱对应的域名,需要支持支付模板生成,需要管理接收端的UTXO和历史记录。并且,用户的钱包过度依赖第三方服务端,无法保障资产的安全性,也无法自由迁移。
因此,如何既能降低运营的成本并且可以高效灵活地对区块链钱包进行管理,是钱包提供商当前急需解决的问题之一。
发明内容
本发明的目的之一在于克服以上缺点,提供一种点对点的区块链钱包的交易方法,使得钱包服务端不需要爬取区块链上交易,从而可以让钱包的交易不受大区块的影响,提高钱包交易的效率。
为了解决上述技术问题,本发明提供了一种区块链钱包的交易方法,包括以下步骤:
默克树服务器获取并保存区块链中每个区块的默克树信息;
区块链钱包使用公钥作为身份信息与转发服务器建立连接;
交易发起方区块链钱包向区块链发送交易信息;所述交易信息包括交易编号、发起方公钥、接收方公钥以及交易金额信息;
所述交易发起方区块链钱包更新账户余额和交易历史记录;
所述交易发起方区块链钱包向所述默克树服务器查询当前交易的默克路径信息;
所述交易发起方区块链钱包将所述默克路径信息和所述交易信息发送给所述转发服务器;
所述转发服务器根据所述交易信息中的接收方公钥将所述交易信息以及所述默克路径信息发送给交易接收方;
所述交易接收方根据所述默克路径信息进行交易验证并确认交易。
本申请的方法提供了一种点对点的区块链钱包的交易方法,交易双方通过转发服务器进行交易通讯,同时通过获取区块链的默克树信息并根据默克树信息进行区块链交易信息的验证,使得钱包服务端不需要爬取区块链上交易信息,提高了交易效率,减少磁盘存储空间,从而可以让钱包的交易不受大区块的影响,同时降低钱包服务商的运营成本。另外,通过基于公钥的认证通信模型,各个服务商的钱包可以通过这个通信模型互相通信。
进一步地,所述“默克树服务器获取并保存区块链中每个区块的默克树信息”,具体步骤为:
按照记录的顺序获取一个区块中的所有交易的编号;
从第一个交易编号开始,将每两个相邻的奇数个交易编号与偶数个交易编号合并后计算生成上一层的哈希值,若交易总数为奇数,则对最后一个交易编号计算生成上一层哈希值;
对生成的哈希值重复执行上述操作,直至生成唯一的哈希值,得到该区块的默克树结构;
保存前述步骤生成的默克树结构及当前区块高度。
进一步地,所述转发服务器为多个,每个转发服务器都将接收到的所述默克路径信息和所述交易信息发送给其他所有的转发服务器。
通过设置转发服务器集群,可以方便进行转发服务器的扩容和负载均衡,提高消息处理量和效率,同时也可以实现相互容灾备份,减少故障率。
进一步地,所述“区块链钱包使用公钥作为身份信息与转发服务器建立连接”,具体为:
所述区块链钱包使用所有公钥分别与转发服务器建立长连接;
或所述区块链钱包使用所有公钥与钱包代理建立长连接,所述钱包代理使用自身公钥与转发服务器建立长连接,同时所述区块链钱包在所述转发服务器上设置所有公钥的代理信息。
通过钱包代理机制,可以极大地减少钱包和转发服务端的连接数量,降低转发服务端的设计和实现的复杂度,提高运行效率,同时也方便不同钱包服务商的接入和管理。
进一步地,所述“所述交易发起方区块链钱包更新账户余额和交易历史记录”,具体为:
若所述交易发起方区块链钱包与转发服务器直接连接,则在本地更新账户余额和交易历史记录;
若所述交易发起方区块链钱包通过钱包代理与转发服务器进行连接,则将所述账户余额和交易历史记录发送给钱包代理,由所述钱包代理更新账户余额和交易历史记录。
进一步地,所述“所述交易发起方区块链钱包将所述默克路径信息和所述交易信息发送给所述转发服务器”,具体为:
若所述交易发起方区块链钱包与转发服务器直接连接,则发送所述默克路径信息和所述交易信息给所述转发服务器;
若所述交易发起方区块链钱包通过钱包代理与转发服务器进行连接,则将所述默克路径信息和所述交易信息发送给钱包代理,由所述钱包代理再发送给转发服务器。
进一步地,所述“所述转发服务器根据所述交易信息中的接收方公钥将所述交易信息以及所述默克路径信息发送给交易接收方”,具体为:
所述转发服务器将接收到的消息进行保存;
若所述交易接收方区块链钱包的公钥已指定代理信息,则根据钱包代理的公钥查找相应的连接,并发送所述交易信息以及所述默克路径信息;
若所述交易接收方区块链钱包的公钥未指定代理信息,则根据所述交易接收方区块链钱包的公钥查找相应的连接,并发送所述交易信息以及所述默克路径信息。
进一步地,所述“所述交易接收方根据所述默克路径信息进行交易验证并确认交易”,包括以下步骤:
交易接收方获取并保存区块链中每个区块的头部信息;所述交易接收方为区块链钱包或钱包代理;
所述交易接收方根据交易编号和所述默克路径信息计算默克树的根;
所述交易接收方将计算得到的默克树的根与从对应高度区块头部信息获取的默克树的根进行对比,若两者相等,则认为该交易有效,更新账户余额和交易历史记录。
相应地,本申请还提供了一种区块链钱包的交易***,包括默克树服务器、区块链钱包、转发服务器以及钱包代理,其中,
默克树服务器,用于获取并保存区块链中每个区块的默克树信息,同时可根据提供的交易编号进行默克路径信息查询;
区块链钱包,使用公钥作为身份信息与转发服务器建立连接,或使用所有公钥与钱包代理建立长连接并在所述转发服务器上设置所有公钥的代理信息,用于向区块链发送交易信息,并更新账户余额和交易历史记录;用于向所述默克树服务器查询当前交易的默克路径信息,同时将所述默克路径信息和所述交易信息发送给所述转发服务器;用于接收转发服务器发送的所述默克路径信息以及所述交易信息,并根据所述默克路径信息进行交易验证并确认交易。
转发服务器,用于所述区块链钱包、钱包代理的身份验证及连接管理;用于接收交易发起方区块链钱包发送的所述默克路径信息和所述交易信息;用于根据所述交易信息中的接收方公钥将所述交易信息以及所述默克路径信息发送给交易接收方;所述交易接收方为区块链钱包或钱包代理;
钱包代理,使用自身公钥与转发服务器建立长连接,同时与其管理的区块链钱包建立长连接,用于更新其管理的交易发起方区块链钱包的账户余额和交易历史记录信息;用于接收其管理的交易发起方区块链钱包发送的所述默克路径信息和所述交易信息,并发送给转发服务器;用于接收转发服务器发送的所述默克路径信息以及所述交易信息,并根据所述默克路径信息进行交易验证并确认交易。
进一步地,所述转发服务器为多个,每个转发服务器都将接收到的所述默克路径信息和所述交易信息发送给其他所有的转发服务器。
区别于现有技术,本发明技术方案的有益效果有:
1.本申请的方法提供了一种点对点的区块链钱包的交易方法,交易双方通过转发服务器进行交易通讯,同时通过获取区块链的默克树信息并根据默克树信息进行区块链交易信息的验证,使得钱包服务端不需要爬取区块链上交易信息,提高了交易效率,减少磁盘存储空间,从而可以让钱包的交易不受大区块的影响,同时降低钱包服务商的运营成本。另外,通过基于公钥的认证通信模型,各个服务商的钱包可以通过这个通信模型互相通信。
2.通过设置转发服务器集群,可以方便进行转发服务器的扩容和负载均衡,提高消息处理量和效率,同时也可以实现相互容灾备份,减少故障率。
3.通过钱包代理机制,可以极大地减少钱包和转发服务端的连接数量,降低转发服务端的设计和实现的复杂度,提高运行效率,同时也方便不同钱包服务商的接入和管理。
附图说明
图1是本发明一种区块链钱包的交易方法的步骤流程图。
图2是本发明默克树结构示意图。
图3是本发明一种区块链钱包的交易***结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1,是本发明一种区块链钱包的交易方法的步骤流程图,包括以下步骤:
步骤1、默克树服务器获取并保存区块链中每个区块的默克树信息;
在区块链中,每个区块通常包括区块头和交易数据块,其中,交易数据块记录零条或多条交易数据,区块头则记录了版本号、前置区块的Hash、难度、产生时间、默克树(Merkel)根等信息。其中,默克树是由当前区块里面所有交易构成的一棵二叉树,树的叶子节点是每笔交易的编号,根据交易顺序两两配对组合后计算生成一个哈希值,通过不断循环两两配对,最终计算得到唯一一个哈希值,就是默克树的根。本申请中,需要对默克树完整的树结构进行保存,用于交易接收方的交易验证,通常是保存到关系数据库中。默克树服务器获取并保存区块链中每个区块的默克树信息的具体步骤为:
步骤11、按照记录的顺序获取一个区块中的所有交易的编号;
步骤12、从第一个交易编号开始,将每两个相邻的奇数个交易编号与偶数个交易编号合并后计算生成上一层的哈希值,若交易总数为奇数,则对最后一个交易编号计算生成上一层哈希值;
步骤13、对生成的哈希值重复执行上述操作,不断生成上一层的哈希值,直至得到由唯一的哈希值组成的顶层,该唯一哈希值即是默克树的根,所有层的哈希值和叶子节点的交易编号组成了该区块的默克树结构;
步骤14、保存前述步骤生成的默克树结构及当前区块高度。其中,区块高度是指区块链的区块的顺序编号,会随着区块的增加而不断增大。将整个区块链中的每一个区块对应的默克树结构以及所属区块高度进行保存之后,区块链钱包只需要知道一笔交易对应默克树相关路径的Hash值,就可以自主地判断一笔交易是否在一个区块中,对交易进行验证。
需要说明的是,由于区块链在运行过程中区块高度会不断增加,因此默克树服务器获取并保存区块链中每个区块的默克树信息也必须不断监控区块链的区块高度,每当发现区块链新增加了一个区块时,就相应地同步该区块中的默克树结构信息。
步骤2、区块链钱包使用公钥作为身份信息与转发服务器建立连接;本发明中,转发服务器是用来进行区块链钱包之间的交易信息转发,转发服务负责接收和管理区块链钱包的长连接,同时接收交易发起方区块链钱包发送的交易消息,并根据公钥信息将交易信息转发给交易接收方。区块链钱包是用于管理区块链上资产的客户端,可分为全节点钱包和轻钱包(SPV,Simplified Payment Verification),其中,全节点钱包除了进行自身资产的管理以外,还要储存所有区块链上的信息,可以验证其他人发出的消息是否真实,通常体积较大,而轻钱包只能发出消息且只验证跟自己有关的交易,是一种最常见的轻便高效,不影响日常使用钱包客户端,这种钱包是整个网络的使用者,因此每次使用通常是需要支付手续费的。区块链钱包必须使用公钥作为身份信息与转发服务器建立连接,每个公钥就是区块链钱包交易过程中的唯一身份标识。
在一优选的实施例中,由于一个区块链钱包可以有多个公钥,每个公钥都可以接收交易信息,因此当区块链钱包直接与转发服务器连接时候,可以使用所有公钥分别与转发服务器建立长连接;另外,还可以在区块链钱包与转发服务器之间设置钱包代理,区块链钱包使用自己所有的公钥与钱包代理建立长连接,钱包代理使用自身公钥与转发服务器建立长连接,同时所述区块链钱包在所述转发服务器上设置所有公钥的代理信息,以便转发服务器将所有该区块链钱包公钥相关的交易都转发给设置的钱包代理,在实际应用中,设置的代理信息就是钱包的公钥与钱包代理的公钥的一一对应关系。通过钱包代理机制,可以极大地减少钱包和转发服务端的连接数量,降低转发服务端的设计和实现的复杂度,提高运行效率,同时也方便不同钱包服务商的接入和业务管理。
优选地,转发服务器还可以对区块链钱包或钱包代理的公钥进行验证,进行身份确认,只允许通过验证的区块链钱包或钱包代理建立连接。通常,转发服务器还可以向申请连接的区块链钱包或钱包代理收取一定的费用,作为代为转发交易的报酬,费用收取成功后才能建立连接,通过转发服务器提供一种基于付费模型的服务方案,同时可避免转发服务端受到来自匿名钱包端或非法钱包的的攻击。
在另一优选的实施例中,可以由多个转发服务器组成一个服务器集群,区块链钱包或钱包代理可以选取集群中的任意一个转发服务器进行连接,每个转发服务器都配置了集群中其他所有转发服务器的地址信息,转发服务器在收到交易消息的时候转发给其他所有服务器。通过设置转发服务器集群,可以方便进行转发服务器的扩容和负载均衡,提高消息处理量和效率,同时也可以实现相互容灾备份,减少故障率。
步骤3、交易发起方区块链钱包向区块链发送交易信息;交易发起方区块链钱包构造一个交易信息,通常包括交易编号、交易发起方公钥、交易接收方公钥、交易金额等信息,并将消息提交到区块链的P2P网络中,由区块链按照本身的运行机制对交易进行确认后写入新的区块中。
步骤4、交易发起方区块链钱包更新账户余额和交易历史记录;
本申请的技术方案中,钱包的账户余额以及交易历史记录可以在本地进行保存,以便查询,保存的方式可以通过数据库进行存储,也可以通过文件进行存储。具体地,若区块链钱包与转发服务器直接连接,则由区块链钱包在本地更新账户余额和交易历史记录;若区块链钱包通过钱包代理与转发服务器进行连接,则区块链钱包将账户余额和交易历史记录发送给钱包代理,由钱包代理更新账户余额和交易历史记录。在具体的实际应用场景中,一个钱包代理通常对应一个钱包服务商,负责管理该钱包商底下所有的区块链钱包,接收该服务商的所有区块链钱包的交易信息,同时可以对所有区块链钱包的余额和交易历史记录进行统一管理,区块链钱包可以向钱包代理请求查询余额和交易记录。
步骤5、交易发起方区块链钱包向所述默克树服务器查询当前交易的默克路径信息;当该笔交易被区块链确认写入区块后,默克树服务器会获取并保存该区块的默克树结构。此时,交易发起方区块链钱包就可以向默克树服务器查询当前交易的默克路径信息,这里所述的默克路径信息包括当前交易所属的区块高度以及由交易编号或哈希值组成的集合,当前交易编号与查询的默克路径信息可以计算得到默克树的根。若交易发起方区块链钱包长时间无法从默克树服务器查询到当前交易的默克路径信息,则说明该交易没有被区块链确认,交易发起方区块链钱包会将交易进行回退处理。如图2,是本发明默克树结构示意图,这里以8个交易记录为例,默克树服务器获取并保存默克树结构信息的时候,会将区块高度为N+2的区块默克树的第一层哈希值,第二层哈希值以及最后一层的交易编号都存入数据库。若区块链钱包需要查询交易5对应的默克路径,则默克树服务器将返回交易5所在的区块高度N+2,以及返回由交易6、第二层哈希值4以及第一层哈希值1所组成的最小集合。通过交易5编号、交易6编号、第二层哈希值4以及第一层哈希值1,就能计算出默克树的根。
步骤6、交易发起方区块链钱包将所述默克路径信息、交易信息发送给所述转发服务器;
具体地,若交易发起方区块链钱包与转发服务器直接连接,则发送所述默克路径信息、交易信息给转发服务器;若交易发起方区块链钱包通过钱包代理与转发服务器进行连接,则将查询的默克路径信息、交易信息发送给钱包代理,由钱包代理再发送给转发服务器。
步骤7、转发服务器根据交易信息中接收方公钥将交易信息以及所述默克路径信息发送给交易接收方;
在一优选的实施例中,可以由多个转发服务器组成转发服务器集群,每个转发服务器都配置了集群中其他所有转发服务器的地址信息,每个转发服务器都将接收到的默克路径信息、交易信息发送给其他所有的转发服务器。
具体地,转发服务器根据交易接收方区块链钱包的公钥将交易信息以及所述默克路径信息发送给交易接收方,包括以下步骤:
步骤71、转发服务器先将接收到的消息进行保存,以便后续的查询,通常是保存至关系型数据库中;
步骤72、若交易接收方区块链钱包的公钥已指定代理信息,即设置了对应的钱包代理公钥,则根据钱包代理的公钥查找相应的连接,通过连接发送所述交易信息以及所述默克路径信息;
步骤73、若交易接收方区块链钱包的公钥未指定代理信息,说明区块链钱包是直接与转发服务器建立长连接,则根据交易接收方区块链钱包的公钥查找相应的连接,通过连接发送所述交易信息以及所述默克路径信息。
步骤8、所述交易接收方根据所述默克路径信息进行交易验证并确认交易,这里的接收方指的是区块链钱包或钱包代理,若接收方为区块链钱包,则由区块链钱包进行交易验证和确认,若接收方为钱包代理,则由钱包代理为其管理的所有区块链钱包进行交易验证和确认。交易接收方进行交易验证并确认交易,包括以下几个步骤:
步骤81、交易接收方获取并保存区块链中每个区块的头部信息;这里,交易接收方从区块链上重新获取所有区块头部信息的目的是获取每个区块高度对应的默克根的值,用于交易的校验。由于区块链的区块高度会不断地增加,因此每当有新的区块生成,都必须同步获取并保存新增区块的头部信息。以比特币区块链为例,每个区块头占80字节,目前区块高度在60万左右,总共大概占用50M的空间,若交易接收方为区块链钱包,则该区块链钱包需占用50M空间保存区块链的头部信息,若交易接收方为钱包代理,则由钱包代理统一获取并保存区块链中每个区块的头部信息,不用每个区块链钱包分别获取保存,减少了空间的占用。
步骤82、所述交易接收方根据交易编号和所述默克路径信息计算默克树的根;例如,根据图2中的默克树,交易5与其关联的默克路径信息计算默克树的根的步骤为:将交易5的编号和交易6编号合并后计算哈希值,得到第二层哈希值3,再跟第二层哈希值4合并后计算哈希值,得到第一层哈希值2,再跟第一层哈希值1合并后计算哈希值,得到默克树的根。
步骤83、交易接收方将计算得到的默克树的根与从对应高度区块头部信息获取的默克树的根进行对比,根据默克树的生成机制,交易接收方只需要知道交易相关的默克路径信息,就可以自主地判断一笔交易是否在一个区块中。由于默克树服务器返回的查询结果中包含了当前交易所在的区块高度,因此,交易接收方可以直接从对应高度区块头部信息获取的默克树的根,与计算出来的默克树的根进行比较。若两者相等,认为该交易真实有效,则由区块链钱包或钱包代理更新账户余额和交易历史记录;若不相等,则说明数据在传输过程进行了非法修改,本地钱包也不进行余额更新和交易记录。
本申请的方法提供了一种点对点的区块链钱包的交易方法,交易双方通过转发服务器进行交易通讯,同时通过获取区块链的默克树信息并根据默克树信息进行区块链交易信息的验证,使得钱包服务端不需要爬取区块链上交易信息,提高了交易效率,减少磁盘存储空间,从而可以让钱包的交易不受大区块的影响,同时降低钱包服务商的运营成本。另外,通过基于公钥的认证通信模型,各个服务商的钱包可以通过这个通信模型互相通信。
如图3,是本发明一种区块链钱包的交易***结构图,包括默克树服务器、区块链钱包、转发服务器以及钱包代理,其中,
默克树服务器,用于获取并保存区块链中每个区块的默克树信息,同时可根据提供的交易编号进行默克路径信息查询;其中,默克树服务器获取并保存区块链中每个区块的默克树信息的具体步骤为:按照记录的顺序获取一个区块中的所有交易的编号;从第一个交易编号开始,将每两个相邻的奇数个交易编号与偶数个交易编号合并后计算生成上一层的哈希值,若交易总数为奇数,则对最后一个交易编号计算生成上一层哈希值;对生成的哈希值重复执行上述操作,不断生成上一层的哈希值,直至得到由唯一的哈希值组成的顶层,该唯一哈希值即是默克树的根,所有层的哈希值和叶子节点的交易编号组成了该区块的默克树结构;保存前述步骤生成的默克树结构及当前区块高度。默克树服务器不断监控区块链的区块高度,每当发现区块链新增加了一个区块时,就相应地同步该区块中的默克树结构信息。
区块链钱包,是用于管理区块链上资产的客户端,可分为全节点钱包和轻钱包,使用公钥作为身份信息与转发服务器建立连接,或使用所有公钥与钱包代理建立长连接并在所述转发服务器上设置所有公钥的代理信息,用于向区块链发送交易信息,并更新本地的账户余额和交易历史记录;用于向所述默克树服务器查询当前交易的默克路径信息,同时将所述默克路径信息、所述交易信息发送给所述转发服务器;用于接收转发服务器发送的所述默克路径信息以及所述交易信息,并根据所述默克路径信息进行交易验证并确认交易。
转发服务器,用于所述区块链钱包、钱包代理的身份验证及连接管理;用于接收交易发起方区块链钱包发送的所述默克路径信息、所述交易信息;用于根据所述交易接收方区块链钱包的公钥将所述交易信息以及所述默克路径信息发送给交易接收方;所述交易接收方为区块链钱包或钱包代理;
钱包代理,在具体的实际应用场景中,一个钱包代理通常对应一个钱包服务商,负责管理该钱包商底下所有的区块链钱包,接收该服务商的所有区块链钱包的交易信息,同时可以对所有区块链钱包的余额和交易历史记录进行统一管理,区块链钱包可以向钱包代理请求查询余额和交易记录。钱包代理使用自身公钥与转发服务器建立长连接,同时与其管理的区块链钱包建立长连接,用于更新其管理的交易发起方区块链钱包的账户余额和交易历史记录信息;用于接收其管理的交易发起方区块链钱包发送的所述默克路径信息、所述交易信息,并发送给转发服务器;用于接收转发服务器发送的所述默克路径信息以及所述交易信息,并根据所述默克路径信息进行交易验证并确认交易。
优选地,本申请所述转发服务器为多个,组成了一个转发服务器集群,每个转发服务器都将接收到的所述默克路径信息、所述交易信息发送给其他所有的转发服务器。
上述具体实施方式只是对本发明的技术方案进行详细解释,本发明并不只仅仅局限于上述实施例,凡是依据本发明原理的任何改进或替换,均应在本发明的保护范围之内。
Claims (10)
1.一种区块链钱包的交易方法,其特征在于,包括以下步骤:
默克树服务器获取并保存区块链中每个区块的默克树信息;
区块链钱包使用公钥作为身份信息与转发服务器建立连接;
交易发起方区块链钱包向区块链发送交易信息;所述交易信息包括交易编号、发起方公钥、接收方公钥以及交易金额信息;
所述交易发起方区块链钱包更新账户余额和交易历史记录;
所述交易发起方区块链钱包向所述默克树服务器查询当前交易的默克路径信息;
所述交易发起方区块链钱包将所述默克路径信息和所述交易信息发送给所述转发服务器;
所述转发服务器根据所述交易信息中的接收方公钥将所述交易信息以及所述默克路径信息发送给交易接收方;
所述交易接收方根据所述默克路径信息进行交易验证并确认交易。
2.如权利要求1所述的区块链钱包的交易方法,其特征在于,所述“默克树服务器获取并保存区块链中每个区块的默克树信息”,具体步骤为:
按照记录的顺序获取一个区块中的所有交易的编号;
从第一个交易编号开始,将每两个相邻的奇数个交易编号与偶数个交易编号合并后计算生成上一层的哈希值,若交易总数为奇数,则对最后一个交易编号计算生成上一层哈希值;
对生成的哈希值重复执行上述操作,直至生成唯一的哈希值,得到该区块的默克树结构;
保存前述步骤生成的默克树结构及当前区块高度。
3.如权利要求1所述的区块链钱包的交易方法,其特征在于,所述转发服务器为多个,每个转发服务器都将接收到的所述默克路径信息和所述交易信息发送给其他所有的转发服务器。
4.如权利要求1所述的区块链钱包的交易方法,其特征在于,所述“区块链钱包使用公钥作为身份信息与转发服务器建立连接”,具体为:
所述区块链钱包使用所有公钥分别与转发服务器建立长连接;
或所述区块链钱包使用所有公钥与钱包代理建立长连接,所述钱包代理使用自身公钥与转发服务器建立长连接,同时所述区块链钱包在所述转发服务器上设置所有公钥的代理信息。
5.如权利要求4所述的区块链钱包的交易方法,其特征在于,所述“所述交易发起方区块链钱包更新账户余额和交易历史记录”,具体为:
若所述交易发起方区块链钱包与转发服务器直接连接,则在本地更新账户余额和交易历史记录;
若所述交易发起方区块链钱包通过钱包代理与转发服务器进行连接,则将所述账户余额和交易历史记录发送给钱包代理,由所述钱包代理更新账户余额和交易历史记录。
6.如权利要求4所述的区块链钱包的交易方法,其特征在于,所述“所述交易发起方区块链钱包将所述默克路径信息和所述交易信息发送给所述转发服务器”,具体为:
若所述交易发起方区块链钱包与转发服务器直接连接,则发送所述默克路径信息和所述交易信息给所述转发服务器;
若所述交易发起方区块链钱包通过钱包代理与转发服务器进行连接,则将所述默克路径信息和所述交易信息发送给钱包代理,由所述钱包代理再发送给转发服务器。
7.如权利要求4所述的区块链钱包的交易方法,其特征在于,所述“所述转发服务器根据所述交易信息中的接收方公钥将所述交易信息以及所述默克路径信息发送给交易接收方”,具体为:
所述转发服务器将接收到的消息进行保存;
若所述交易接收方区块链钱包的公钥已指定代理信息,则根据钱包代理的公钥查找相应的连接,并发送所述交易信息以及所述默克路径信息;
若所述交易接收方区块链钱包的公钥未指定代理信息,则根据所述交易接收方区块链钱包的公钥查找相应的连接,并发送所述交易信息以及所述默克路径信息。
8.如权利要求4所述的区块链钱包的交易方法,其特征在于,所述“所述交易接收方根据所述默克路径信息进行交易验证并确认交易”,包括以下步骤:
交易接收方获取并保存区块链中每个区块的头部信息;所述交易接收方为区块链钱包或钱包代理;
所述交易接收方根据交易编号和所述默克路径信息计算默克树的根;
所述交易接收方将计算得到的默克树的根与从对应高度区块头部信息获取的默克树的根进行对比,若两者相等,则认为该交易有效,更新账户余额和交易历史记录。
9.一种区块链钱包的交易***,其特征在于,包括默克树服务器、区块链钱包、转发服务器以及钱包代理,其中,
默克树服务器,用于获取并保存区块链中每个区块的默克树信息,同时可根据提供的交易编号进行默克路径信息查询;
区块链钱包,使用公钥作为身份信息与转发服务器建立连接,或使用所有公钥与钱包代理建立长连接并在所述转发服务器上设置所有公钥的代理信息,用于向区块链发送交易信息,并更新账户余额和交易历史记录;用于向所述默克树服务器查询当前交易的默克路径信息,同时将所述默克路径信息和所述交易信息发送给所述转发服务器;用于接收转发服务器发送的所述默克路径信息以及所述交易信息,并根据所述默克路径信息进行交易验证并确认交易;
转发服务器,用于所述区块链钱包、钱包代理的身份验证及连接管理;用于接收交易发起方区块链钱包发送的所述默克路径信息和所述交易信息;用于根据所述交易信息中的接收方公钥将所述交易信息以及所述默克路径信息发送给交易接收方;所述交易接收方为区块链钱包或钱包代理;
钱包代理,使用自身公钥与转发服务器建立长连接,同时与其管理的区块链钱包建立长连接,用于更新其管理的交易发起方区块链钱包的账户余额和交易历史记录信息;用于接收其管理的交易发起方区块链钱包发送的所述默克路径信息和所述交易信息,并发送给转发服务器;用于接收转发服务器发送的所述默克路径信息以及所述交易信息,并根据所述默克路径信息进行交易验证并确认交易。
10.如权利要求9所述的区块链钱包的交易***,其特征在于,所述转发服务器为多个,每个转发服务器都将接收到的所述默克路径信息和所述交易信息发送给其他所有的转发服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911226055.3A CN110992182B (zh) | 2019-12-04 | 2019-12-04 | 区块链钱包的交易方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911226055.3A CN110992182B (zh) | 2019-12-04 | 2019-12-04 | 区块链钱包的交易方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110992182A true CN110992182A (zh) | 2020-04-10 |
CN110992182B CN110992182B (zh) | 2023-06-16 |
Family
ID=70089996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911226055.3A Active CN110992182B (zh) | 2019-12-04 | 2019-12-04 | 区块链钱包的交易方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110992182B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111709735A (zh) * | 2020-04-28 | 2020-09-25 | 上海墨珩网络科技有限公司 | 一种基于区块链的可信交易处理***及方法 |
CN113256289A (zh) * | 2021-05-17 | 2021-08-13 | 网易(杭州)网络有限公司 | 区块链的判别方法、装置及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160292680A1 (en) * | 2015-04-05 | 2016-10-06 | Digital Asset Holdings | Digital asset intermediary electronic settlement platform |
CN108765151A (zh) * | 2018-05-11 | 2018-11-06 | 深圳市恋上互联网技术有限公司 | 一种基于区块链的交易方法 |
CN108805565A (zh) * | 2018-05-17 | 2018-11-13 | 深圳前海微众银行股份有限公司 | 基于区块链的承诺存在性证明方法、设备及可读存储介质 |
US20180330349A1 (en) * | 2017-05-10 | 2018-11-15 | Coinplug, Inc. | Method for paying cost of iot device based on blockchain and merkle tree structure related thereto, and server, service providing terminal, and digital wallet using the same |
CN109544331A (zh) * | 2018-10-12 | 2019-03-29 | 深圳壹账通智能科技有限公司 | 基于区块链的供应链金融应用方法、装置及终端设备 |
CN110175840A (zh) * | 2019-04-19 | 2019-08-27 | 华中科技大学 | 联盟链中实现轻钱包机制的方法、客户端、联盟链及*** |
CN110334175A (zh) * | 2019-04-29 | 2019-10-15 | 山东冰链网络信息科技有限公司 | 医疗文档的零知识证明方法、***及存储介质 |
-
2019
- 2019-12-04 CN CN201911226055.3A patent/CN110992182B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160292680A1 (en) * | 2015-04-05 | 2016-10-06 | Digital Asset Holdings | Digital asset intermediary electronic settlement platform |
US20180330349A1 (en) * | 2017-05-10 | 2018-11-15 | Coinplug, Inc. | Method for paying cost of iot device based on blockchain and merkle tree structure related thereto, and server, service providing terminal, and digital wallet using the same |
CN108765151A (zh) * | 2018-05-11 | 2018-11-06 | 深圳市恋上互联网技术有限公司 | 一种基于区块链的交易方法 |
CN108805565A (zh) * | 2018-05-17 | 2018-11-13 | 深圳前海微众银行股份有限公司 | 基于区块链的承诺存在性证明方法、设备及可读存储介质 |
CN109544331A (zh) * | 2018-10-12 | 2019-03-29 | 深圳壹账通智能科技有限公司 | 基于区块链的供应链金融应用方法、装置及终端设备 |
CN110175840A (zh) * | 2019-04-19 | 2019-08-27 | 华中科技大学 | 联盟链中实现轻钱包机制的方法、客户端、联盟链及*** |
CN110334175A (zh) * | 2019-04-29 | 2019-10-15 | 山东冰链网络信息科技有限公司 | 医疗文档的零知识证明方法、***及存储介质 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111709735A (zh) * | 2020-04-28 | 2020-09-25 | 上海墨珩网络科技有限公司 | 一种基于区块链的可信交易处理***及方法 |
CN111709735B (zh) * | 2020-04-28 | 2023-10-20 | 上海墨珩网络科技有限公司 | 一种基于区块链的可信交易处理***及方法 |
CN113256289A (zh) * | 2021-05-17 | 2021-08-13 | 网易(杭州)网络有限公司 | 区块链的判别方法、装置及电子设备 |
CN113256289B (zh) * | 2021-05-17 | 2023-06-30 | 网易(杭州)网络有限公司 | 区块链的判别方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110992182B (zh) | 2023-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107193490B (zh) | 一种基于区块链的分布式数据存储***及方法 | |
US11764950B2 (en) | System or method to implement right to be forgotten on metadata driven blockchain using shared secrets and consensus on read | |
EP3639465B1 (en) | Improved hardware security module management | |
US11469891B2 (en) | Expendable cryptographic key access | |
CN102170440B (zh) | 适用于存储云间数据安全迁移的方法 | |
CN110046894B (zh) | 一种基于纠删码的分组可重构区块链建立方法 | |
US20230316273A1 (en) | Data processing method and apparatus, computer device, and storage medium | |
CN112835612A (zh) | 一种基于区块链的电子文档版本管理方法及装置 | |
CN104520822A (zh) | 数据存储应用编程界面 | |
CN110311782A (zh) | 个人信息的零知识证明方法、***及存储介质 | |
CN108923932A (zh) | 一种去中心化协同验证模型及验证算法 | |
CN104603740A (zh) | 归档数据识别 | |
CN112800439B (zh) | 一种面向安全存储的密钥管理协议设计方法及*** | |
WO2023011022A1 (zh) | 基于区块链的数据处理方法、设备及计算机可读存储介质 | |
CN110992182B (zh) | 区块链钱包的交易方法及*** | |
Wang et al. | Ess: An efficient storage scheme for improving the scalability of bitcoin network | |
CN113011960A (zh) | 基于区块链的数据访问方法、装置、介质及电子设备 | |
CN112800066A (zh) | 索引管理的方法、相关设备及存储介质 | |
CN113643032B (zh) | 一种基于区块链的信息处理方法、装置及数据管理*** | |
CN112988852B (zh) | 基于区块链的数据管理方法、设备以及介质 | |
CN117010889A (zh) | 数据处理方法、装置及设备、介质、产品 | |
CN115730933A (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN112487065A (zh) | 一种数据检索方法和装置 | |
Meng et al. | Blockchain storage method based on Erasure Code | |
Yuan et al. | Blockchain‐Based Self‐Auditing Scheme with Batch Verification for Decentralized Storage |
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 |