CN111899096A - 一种防止区块链数据膨胀的方法、设备及介质 - Google Patents
一种防止区块链数据膨胀的方法、设备及介质 Download PDFInfo
- Publication number
- CN111899096A CN111899096A CN202010610000.9A CN202010610000A CN111899096A CN 111899096 A CN111899096 A CN 111899096A CN 202010610000 A CN202010610000 A CN 202010610000A CN 111899096 A CN111899096 A CN 111899096A
- Authority
- CN
- China
- Prior art keywords
- node
- read
- transaction
- endorsement
- transaction request
- 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.)
- Withdrawn
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Technology Law (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请公开了一种防止区块链数据膨胀的方法、设备及介质,方法包括:通过背书节点接收用户发送的交易请求,并对所述交易请求进行验证,验证成功后,将封装的数据发送至链码容器;链码容器调取背书节点中的处理逻辑,生成读写集,其中,所述读写集中包括交易请求中包括充值链码,交易请求中的花费和余额;背书节点通过验证所述读写集,对所述交易请求进行背书,并将背书结果发送至客户端,以使客户端将一个或多个背书结果封装成交易信封后发送给区块链并广播至区块链的每个节点;所述每个节点对所述区块进行验证,并在验证通过后将区块写入区块链中。本发明实施例实现了用户上链数据的控制,可以有效防止数据过快膨胀。并且所有余额查询更新过程都被封装进交易内,可追溯。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种防止区块链数据膨胀的方法、设备及介质。
背景技术
面对数据量的急剧膨胀,企业需要不断购置大量的存储设备来应对不断增长的存储需求。权威调查机构的研究表明,目前世界大公司的年度存储需求增长率为100%。然而,这似乎并不能从根本解决问题。首先,存储设备的采购预算越来越高,大多数企业难以承受如此巨大的开支。其次,随着数据中心的扩大,存储管理成本、占用空间、制冷能力、能耗等也都变得越来越严重,其中能耗尤为突出。
Hyperledger Fabric是Hyperledger区块链项目中的一员。像其他区块链技术一样,它有一个账本,使用智能合约,是一个由参与者共同管理他们的交易的系统。
发明内容
本说明书实施例提供一种防止区块链数据膨胀的方法、设备及介质,用于解决现有技术中的如下技术问题:
联盟链随着成员的增加,日新增数据量会随之增大,数据过快膨胀;
并发交易中的多线程问题。
本说明书实施例采用下述技术方案:
本发明实施例的第一方面提供了一种防止区块链数据膨胀的方法,包括:
通过背书节点接收用户发送的交易请求,并对所述交易请求进行验证,验证成功后,将封装的数据发送至链码容器;
链码容器调取背书节点中的处理逻辑,生成读写集,其中,所述读写集中包括交易请求中包括充值链码,交易请求中的花费和余额;
背书节点通过验证所述读写集,对所述交易请求进行背书,并将背书结果发送至客户端,以使客户端将一个或多个背书结果封装成交易信封后发送给区块链并广播至区块链的每个节点;
所述每个节点对所述区块进行验证,并在验证通过后将区块写入区块链中。
在一个示例中,所述链码容器调取背书节点中的处理逻辑,生成读写集,包括:
通过所述背书节点的处理逻辑生成临时读写集;
将所述交易请求中的余额作为主键,将所述交易请求中的花费作为数据值,将所述充值链码作为命名空间,将所述主键、数据值、命名空间放入所临时读写集,形成所述读写集。
在一个示例中,所述将所述交易请求中的余额作为主键,包括:
将所述用户的证书和所述交易请求中的余额作为主键。
在一个示例中,所述链码容器调取背书节点中的处理逻辑,生成读写集,还包括:
通过在每个节点中添加一共享的特定区域,用于存储所述命名空间为充值链码的主键和数据值,以在在区块写链后,多个交易并发的情况下对读写集中主键和数据值进行更新。
在一个示例中,所述背书节点通过验证所述读写集,对所述交易请求进行背书,包括:
背书节点调取相应的数据处理逻辑解析所述数据集中的主键和数据值;
背书节点通过验证所述主键和数据值的大小关系,确定是否对所述交易请求进行背书。
在一个示例中,所述背书节点通过验证所述读写集,对所述交易请求进行背书,包括:
背书节点判断所述读写集的链码类型,所述链码的类型包括:系统链码、充值链码和用户链码;
背书节点若是用户链码,则调取相应的数据处理逻辑解析所述数据集中的主键和数据值;
通过验证所述主键和数据值的大小关系,确定是否对所述交易请求进行背书。
在一个示例中,所述每个节点对所述区块进行验证,并在验证通过后将区块写入区块链中,包括:
解析所述交易信封,获取读写集;
判断所述读写集的链码类型,所述链码的类型包括:系统链码、充值链码和用户链码;
背书节点若是用户链码,则调取相应的数据处理逻辑解析所述数据集中的主键和数据值;
基于主键和数据值,在区块链中更新主键和数据值。
在一个示例中,所述客户端将一个或多个背书结果封装成交易信封后发送给区块链并广播至区块链的每个节点,包括:
客户端将一个或多个背书结果封装成交易信封后发送给区块链的排序节点;
排序节点将背书结果对应的区块排序后发送给主节点,通过主节点将排序后的区块广播至区块链的节点中。
本发明实施例的第二方面提供了一种基于防止区块链数据膨胀的设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
通过背书节点接收用户发送的交易请求,并对所述交易请求进行验证,验证成功后,将封装的数据发送至链码容器;
链码容器调取背书节点中的处理逻辑,生成读写集,其中,所述读写集中包括交易请求中包括充值链码,交易请求中的花费和余额;
背书节点通过验证所述读写集,对所述交易请求进行背书,并将背书结果发送至客户端,以使客户端将一个或多个背书结果封装成交易信封后发送给区块链并广播至区块链的每个节点;
所述每个节点对所述区块进行验证,并在验证通过后将区块写入区块链中。
本发明实施例的第三方面提供了一种防止区块链数据膨胀的非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
通过背书节点接收用户发送的交易请求,并对所述交易请求进行验证,验证成功后,将封装的数据发送至链码容器;
链码容器调取背书节点中的处理逻辑,生成读写集,其中,所述读写集中包括交易请求中包括充值链码,交易请求中的花费和余额;
背书节点通过验证所述读写集,对所述交易请求进行背书,并将背书结果发送至客户端,以使客户端将一个或多个背书结果封装成交易信封后发送给区块链并广播至区块链的每个节点;
所述每个节点对所述区块进行验证,并在验证通过后将区块写入区块链中。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
本发明实施例实现了用户上链数据的控制,可以有效防止数据过快膨胀。并且所有余额查询更新过程都被封装进交易内,可追溯。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例提供的方法流程示意图;
图2为本说明书实施例提供的设备框架示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
本申请的实施例提供了防止区块链数据膨胀的方法及相应方案,所有新增操作都会被放入提案响应的读写集内,然后封装进交易信封,随交易一起排序和打包成块,再通过主节点(英文:leader)发起的广播(英文:gossip)传递至所有节点,最终在确认(英文:committer)服务中被执行进世界状态数据库。全程可追溯,去中心化。符合现有fabric策略和规则实现了用户上链数据的控制,所有余额查询更新过程都被封装进交易内,可以有效防止数据过快膨胀。
现有技术中,一个用户交易从发起到最后上链更改账本的的整体流程如下:
1)用户通过基于sdk的客户端或者peer cmd向背书节点发起请求。
2)背书节点收到请求后,开始了一步步的验证操作,在验证成功后,封装请求数据然后发送给链码容器。
3)链码容器收到分装的数据后,进行链码内逻辑,在处理完自己的逻辑后,后调用stub.putState()或者stub.getState()方法来生成该交易的读写集,stub.putState()或者stub.getState()方法是背书节点中的逻辑;由于fabric链码和数据分离,链码容器需要向peer节点发送链码请求。
4)背书节点收到链码请求后,会通过交易模拟器,来生成读写集,然后将是否成功的响应结果返回给链码容器。
5)链码容器收到响应后判断读写集是否成功生成,然后产生响应发送给背书节点。
6)背书节点收到链码容器执行结束的响应,如果成功,则背书,然后将背书结果返回给客户端
7)客户端收集所有背书响应,封装成交易信封发送给排序(英文:order)节点排序
8)排序节点排序出块,然后将出块信息返回给主(英文:leader)节点
9)主节点验证块信息,然后通过广播(英文:gossip)发送给所有节点
10)节点验证块内交易,然后根据有效交易的读写集更新本地账本。
为了实现需求,需要更改用户交易的读写集,读写集在第4步产生,通过在此处判断是否余额大于花费并且修改读写集,但是由于此处的异常因为步骤5的存在不能直接结束交易流程,比如在5中,虽然收到了报错,但是仍然会向步骤6返回正常,那么交易将会继续进行。所以将终止交易的步骤放在了步骤6的背书以前,根据生成的读写集获取到本次的余额和花费,然后就可以正确的终止或者放行交易。
但这样处理,出块时间为两秒,在这两面内并发或者快速发起多笔交易时,只扣一次的余额。这就涉及到了并发的问题,交易的发起是并发的,所以在第四部修改读写集更新余额的话只能在单线程成功,为了解决多线程的问题,更新余额必须在第八步到第十步之间。
图1为本说明书实施例提供的方法流程示意图。如图所示,方法包括:
S101通过背书节点接收用户发送的交易请求,并对所述交易请求进行验证,验证成功后,将封装的数据发送至链码容器;
S102链码容器调取背书节点中的处理逻辑,生成读写集,其中,所述读写集中包括交易请求中包括充值链码,交易请求中的花费和余额;
S103背书节点通过验证所述读写集,对所述交易请求进行背书,并将背书结果发送至客户端,以使客户端将一个或多个背书结果封装成交易信封后发送给区块链并广播至区块链的每个节点;
S104所述每个节点对所述区块进行验证,并在验证通过后将区块写入区块链中。
根据本发明的具体实施例,所述链码容器调取背书节点中的处理逻辑,生成读写集,包括:
通过所述背书节点的处理逻辑生成临时读写集;
将所述交易请求中的余额作为主键,将所述交易请求中的花费作为数据值,将所述充值链码作为命名空间,将所述主键、数据值、命名空间放入所临时读写集,形成所述读写集。
在本发明实施例的一些优选的方案中,将所述用户的证书和所述交易请求中的余额作为主键。
具体而言,在交易的读写集(临时读写集)正常生成以后,利用chaincodeName判断链码是否为系统链码或者是充值链码,如果不是这两者,则是常规的用户链码,首先解析出交易发起者的证书(英文:cert),证书作为键值数据库(英文:leveldb)中用户余额的主键(英文:key),获得用户余额,判断用户余额状态,如果为零(英文:nil)或者错误(英文:false),则说明该用户不需要流量管理,然后获得用户条用链码的参数键值(英文:keyvalue),获取其len,这既是本次花费。将证书和用户余额形成key,本次花费作为value,“balance”作为命名空间(namespace),放入交易读写集。
证书和用户余额作为key,花费作为value,是为了解决并发问题,即在出块时间内,一个用户发起了多个交易不出错,必须传输花费数据,传输用户余额是为了追溯时方便检查。
根据本发明的具体实施例,所述链码容器调取背书节点中的处理逻辑,生成读写集,包括:
通过在读写集中添加一特定区域(英文:map),用于存储所述命名空间(英文:namespace)为充值链码(英文:balance)的主键和数据值,以在多个交易并发的情况下对主键和数据值进行更新。
根据本发明的具体实施例,所述背书节点通过验证所述读写集,对所述交易请求进行背书,包括:
背书节点判断所述读写集的链码类型,所述链码的类型包括:系统链码、充值链码和用户链码;
背书节点若是用户链码,则调取相应的数据处理逻辑解析所述数据集中的主键和数据值;
通过验证所述主键和数据值的大小关系,确定是否对所述交易请求进行背书。
具体而言,在收到(链码容器发送的)链码的执行响应后,进入checkBalance方法,首先判断是否为系统链码或者是充值链码,如果不是这两者,则是常规的用户链码,解析链码模拟执行结果获得读写集中插入的key value,解析key获得用户余额,判断余额与花费value的大小关系,如果花费大于余额,抛出异常终止交易,如果正常则继续执行,即背书。
根据本发明的具体实施例,所述链码容器调取背书节点中的处理逻辑,生成读写集,还包括:通过在每个节点中添加一共享的特定区域(map),用于存储所述命名空间为充值链码的主键和数据值,以在在区块写链后,多个交易并发的情况下对读写集中主键和数据值进行更新。
具体而言,增加了一个map用以存储所有的namespace为balance的key和value,每当现有逻辑验证完一个交易,就会根据在第四部写入的读写集内容,去更新map和交易真实的读写集的key value,让其成为实时余额,这样就解决了交易并发问题。
根据本发明的具体实施例,所述客户端将一个或多个背书结果封装成交易信封后发送给区块链并广播至区块链的每个节点,包括:
客户端将一个或多个背书结果封装成交易信封后发送给区块链的排序节点;
排序节点将背书结果对应的区块排序后发送给主节点,通过主节点将排序后的区块广播至区块链的节点中。
根据本发明的具体实施例,所述每个节点对所述区块进行验证,并在验证通过后将区块写入区块链中,包括:
解析所述交易信封,获取读写集;
判断所述读写集的链码类型,所述链码的类型包括:系统链码、充值链码和用户链码;
背书节点若是用户链码,则调取相应的数据处理逻辑解析所述数据集中的主键和数据值;
基于主键和数据值,在区块链中更新主键和数据值。
具体而言,在代码解码获得读写集(txRWSet),并验证txRWSet不为空之后,进入processCertBalance代码,遍历txRwSet是否存在namespace等于”balance”,如果存在则开始解析该namespace的RWset,处理获得当前用户证书、余额和花费,如果余额为空,则说明该交易为充值交易,返回nil,否则将继续处理,利用证书获得temBalance,获得temBalance减去花费的新余额,将新余额更新进allCertBalance中,并且也更新该写链的key和value。
基于同样的思路,本申请的一些实施例还提供了上述方法对应的设备和非易失性计算机存储介质。
图2为本说明书实施例提供的设备框架示意图,防止区块链数据膨胀的设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
通过背书节点接收用户发送的交易请求,并对所述交易请求进行验证,验证成功后,将封装的数据发送至链码容器;
链码容器调取背书节点中的处理逻辑,生成读写集,其中,所述读写集中包括交易请求中包括充值链码,交易请求中的花费和余额;
背书节点通过验证所述读写集,对所述交易请求进行背书,并将背书结果发送至客户端,以使客户端将一个或多个背书结果封装成交易信封后发送给区块链并广播至区块链的每个节点;
所述每个节点对所述区块进行验证,并在验证通过后将区块写入区块链中。
本申请的一些实施例提供的对应于图1的一种防止区块链数据膨胀的非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
通过背书节点接收用户发送的交易请求,并对所述交易请求进行验证,验证成功后,将封装的数据发送至链码容器;
链码容器调取背书节点中的处理逻辑,生成读写集,其中,所述读写集中包括交易请求中包括充值链码,交易请求中的花费和余额;
背书节点通过验证所述读写集,对所述交易请求进行背书,并将背书结果发送至客户端,以使客户端将一个或多个背书结果封装成交易信封后发送给区块链并广播至区块链的每个节点;
所述每个节点对所述区块进行验证,并在验证通过后将区块写入区块链中。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例提供的设备和介质与方法是一一对应的,因此,设备和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述设备和介质的有益技术效果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种防止区块链数据膨胀的方法,其特征在于,包括:
通过背书节点接收用户发送的交易请求,并对所述交易请求进行验证,验证成功后,将封装的数据发送至链码容器;
链码容器调取背书节点中的处理逻辑,生成读写集,其中,所述读写集中包括交易请求中包括充值链码,交易请求中的花费和余额;
背书节点通过验证所述读写集,对所述交易请求进行背书,并将背书结果发送至客户端,以使客户端将一个或多个背书结果封装成交易信封后发送给区块链并广播至区块链的每个节点;
所述每个节点对所述区块进行验证,并在验证通过后将区块写入区块链中。
2.根据权利要求1所述的方法,其特征在于,所述链码容器调取背书节点中的处理逻辑,生成读写集,包括:
通过所述背书节点的处理逻辑生成临时读写集;
将所述交易请求中的余额作为主键,将所述交易请求中的花费作为数据值,将所述充值链码作为命名空间,将所述主键、数据值、命名空间放入所临时读写集,形成所述读写集。
3.根据权利要求1所述的方法,其特征在于,所述将所述交易请求中的余额作为主键,包括:
将所述用户的证书和所述交易请求中的余额作为主键。
4.根据权利要求4所述的方法,其特征在于,所述链码容器调取背书节点中的处理逻辑,生成读写集,还包括:
通过在每个节点中添加一共享的特定区域,用于存储所述命名空间为充值链码的主键和数据值,以在在区块写链后,多个交易并发的情况下对读写集中主键和数据值进行更新。
5.根据权利要求1所述的方法,其特征在于,所述背书节点通过验证所述读写集,对所述交易请求进行背书,包括:
背书节点调取相应的数据处理逻辑解析所述数据集中的主键和数据值;
背书节点通过验证所述主键和数据值的大小关系,确定是否对所述交易请求进行背书。
6.根据权利要求1所述的方法,其特征在于,所述背书节点通过验证所述读写集,对所述交易请求进行背书,包括:
背书节点判断所述读写集的链码类型,所述链码的类型包括:系统链码、充值链码和用户链码;
背书节点若是用户链码,则调取相应的数据处理逻辑解析所述数据集中的主键和数据值;
通过验证所述主键和数据值的大小关系,确定是否对所述交易请求进行背书。
7.根据权利要求1所述的方法,其特征在于,所述每个节点对所述区块进行验证,并在验证通过后将区块写入区块链中,包括:
解析所述交易信封,获取读写集;
判断所述读写集的链码类型,所述链码的类型包括:系统链码、充值链码和用户链码;
背书节点若是用户链码,则调取相应的数据处理逻辑解析所述数据集中的主键和数据值;
基于主键和数据值,在区块链中更新主键和数据值。
8.根据权利要求1所述的方法,其特征在于,所述客户端将一个或多个背书结果封装成交易信封后发送给区块链并广播至区块链的每个节点,包括:
客户端将一个或多个背书结果封装成交易信封后发送给区块链的排序节点;
排序节点将背书结果对应的区块排序后发送给主节点,通过主节点将排序后的区块广播至区块链的节点中。
9.一种基于防止区块链数据膨胀的设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
通过背书节点接收用户发送的交易请求,并对所述交易请求进行验证,验证成功后,将封装的数据发送至链码容器;
链码容器调取背书节点中的处理逻辑,生成读写集,其中,所述读写集中包括交易请求中包括充值链码,交易请求中的花费和余额;
背书节点通过验证所述读写集,对所述交易请求进行背书,并将背书结果发送至客户端,以使客户端将一个或多个背书结果封装成交易信封后发送给区块链并广播至区块链的每个节点;
所述每个节点对所述区块进行验证,并在验证通过后将区块写入区块链中。
10.一种防止区块链数据膨胀的非易失性计算机存储介质,存储有计算机可执行指令,其特征在于,所述计算机可执行指令设置为:
通过背书节点接收用户发送的交易请求,并对所述交易请求进行验证,验证成功后,将封装的数据发送至链码容器;
链码容器调取背书节点中的处理逻辑,生成读写集,其中,所述读写集中包括交易请求中包括充值链码,交易请求中的花费和余额;
背书节点通过验证所述读写集,对所述交易请求进行背书,并将背书结果发送至客户端,以使客户端将一个或多个背书结果封装成交易信封后发送给区块链并广播至区块链的每个节点;
所述每个节点对所述区块进行验证,并在验证通过后将区块写入区块链中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010610000.9A CN111899096A (zh) | 2020-06-30 | 2020-06-30 | 一种防止区块链数据膨胀的方法、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010610000.9A CN111899096A (zh) | 2020-06-30 | 2020-06-30 | 一种防止区块链数据膨胀的方法、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111899096A true CN111899096A (zh) | 2020-11-06 |
Family
ID=73208006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010610000.9A Withdrawn CN111899096A (zh) | 2020-06-30 | 2020-06-30 | 一种防止区块链数据膨胀的方法、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111899096A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113327167A (zh) * | 2021-06-24 | 2021-08-31 | 深圳前海微众银行股份有限公司 | 一种区块链数据处理方法 |
CN113342850A (zh) * | 2021-05-28 | 2021-09-03 | 昆明理工大学 | 一种基于区块图的联盟网络模型及其应用 |
-
2020
- 2020-06-30 CN CN202010610000.9A patent/CN111899096A/zh not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342850A (zh) * | 2021-05-28 | 2021-09-03 | 昆明理工大学 | 一种基于区块图的联盟网络模型及其应用 |
CN113342850B (zh) * | 2021-05-28 | 2024-03-19 | 昆明理工大学 | 一种基于区块图的联盟网络模型及其应用 |
CN113327167A (zh) * | 2021-06-24 | 2021-08-31 | 深圳前海微众银行股份有限公司 | 一种区块链数据处理方法 |
CN113327167B (zh) * | 2021-06-24 | 2024-03-22 | 深圳前海微众银行股份有限公司 | 一种区块链数据处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11336589B2 (en) | Allocating virtual resource based on blockchain | |
CN111898139B (zh) | 数据读写方法及装置、电子设备 | |
CN108985742B (zh) | 交易处理方法、装置及区块链系统 | |
CN110032598B (zh) | 字段更新方法及装置、电子设备 | |
CN106897342B (zh) | 一种数据校验方法和设备 | |
KR20170097132A (ko) | 데이터베이스에서의 계좌와 관련된 거래 요청의 효율적인 처리를 위한 시스템 | |
CN111899096A (zh) | 一种防止区块链数据膨胀的方法、设备及介质 | |
CN110930578A (zh) | 一种基于区块链的投票方法及设备、介质 | |
CN109033365B (zh) | 一种数据处理方法及相关设备 | |
CN110264332A (zh) | 账户出账的方法、装置和电子设备 | |
CN106878365B (zh) | 一种数据同步方法和设备 | |
CN106445933A (zh) | 一种数据处理方法和系统 | |
CN113923268A (zh) | 一种针对多版本通信规约的解析方法、设备及存储介质 | |
CN111737351A (zh) | 分布式管理系统事务管理方法及装置 | |
CN111756803A (zh) | 一种基于区块链技术的服务器端推送方法及设备、介质 | |
CN110879900A (zh) | 一种基于区块链系统的数据处理方法及装置 | |
CN111125802A (zh) | 一种基于区块链管理非物质文化遗产信息的方法、设备及介质 | |
CN110888723A (zh) | 定时任务处理方法及装置 | |
CN115293243A (zh) | 数据资产智能匹配的实现方法、装置及设备 | |
CN109934015B (zh) | 区块数据增信方法、区块链节点及存储介质 | |
CN111242624A (zh) | 一种基于区块链的拆迁补偿方法、设备及介质 | |
CN111444201A (zh) | 一种基于区块链的证券交易流程优化方法、设备及介质 | |
CN110766546A (zh) | 一种银行账户管理方法 | |
CN116993519A (zh) | 账单生成方法及装置 | |
CN112950378B (zh) | 在区块链中执行智能合约的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20201106 |