发明内容
针对现有技术中存在的上述缺陷,本发明提供一种区块链资源的计量方法、方法、电子设备及可读介质。
具体地,在本申请的第一方面提供了一种调用区块链资源的可计量方法,包括:
获取所述区块链资源的资源类型;
在所述资源类型属于即时计量资源的情况下,于使用所述区块链资源的过程中,通过使用所述区块链资源的主节点执行同步的资源被调用计量,并将获取的资源用量于所述主节点所处的区块链中进行共识广播;
通过所述区块链中除所述主节点外的其他节点对所述资源用量进行验证,并在验证结果属于可信统计的情况下将所述资源用量作为所述区块链资源对应的计量用量;和/或,
在所述资源类型属于非即时计量资源的情况下,于使用所述区块链资源前,统计欲使用所述区块链资源对应的计量用量。
在上述第一方面的调用区块链资源的可计量方法,所述区块链资源包括分布式只读寄存器存储资源、传输带宽资源、分布式随机寄存器存储资源以及分布式处理单元处理资源,其中:
所述分布式只读寄存器存储资源dROM的被调用计量用量为存储数据的多少;
所述分布式随机寄存器存储资源dRAM的计量用量为消耗内存空间的大小
所述传输带宽资源的计量用量为传输数据的多少;
所述分布式处理单元处理资源DPU的计量用量为处理数据所花费的时间;
其中,所述分布式只读寄存器存储资源属和所述传输带宽资源属于所述非即时计量资源;所述分布式处理单元处理资源和所述分布式随机寄存器存储资源属于所述即时计量资源。
在上述第一方面的调用区块链资源的可计量方法,在所述区块链资源为所述分布式只读寄存器存储资源dROM的情况下,所述计量用量适用如下公式:
CostdROM=TXSizeStateDB+TXSizeHistoryDB+TXSizeBlockDB
其中,区块链的落盘存储数据包含三个部分:所述存储状态值、所述历史变更信息和所述区块信息,分别对应StateDB、HistoryDB和BlockDB。其中,对应的计费用量包括存储资源的当前存储状态信息,存储资源的历史变更信息以及存储资源对应的区块信息。dROM代表分布式系统中存储资源,一旦落盘后,不可删除与修改,为消耗性资源,不可恢复。
在上述第一方面的调用区块链资源的可计量方法,在所述区块链资源为所述传输带宽资源的情况下,所述计量用量包括通过所述区块链的访问客户端向所述区块链的节点进行传输的数据量和/或通过软件开发工具包向所述区块链的节点进行传输的数据量;以及
在待传输数据使用所述传输带宽资源进行传输前,根据所述待传输数据量的大小确定所述计量用量。Bandwith(即时)代表分布式系统中的即时网络带宽资源,和发送智能合约的数量有关,结合具体场景,可以设置为可恢复和不可恢复。
在上述第一方面的调用区块链资源的可计量方法,在所述主节点执行业务动作,且需要使用的所述区块链资源为所述分布式随机寄存器存储资源的情况下,所述分布式随机寄存器存储资源dRAM的计量适用如下公式:
其中Sizeai计算流程如下:
在智能合约(的操作代码/行为action)被执行之前,获取主节点的所述智能合约虚拟机所占内存大小Sizebegin
在所述智能合约(交易行为action)被执行之时,实时获取智能合约虚拟机的内存消耗情况,获得最大消耗内存量Sizemax
在所述智能合约(的操作代码/行为action)被执行之后,将当前的Sizemax和Sizebegin的差值记为所述Sizeai。
即在所述业务动作执行前,获取所述主节点的智能合约虚拟机所消耗的第一内存资源;在所述业务动作执行过程中,获取所述智能合约虚拟机的实时内存消耗情况,并将所述实时内存消耗情况的最大值作为第二内存资源;在所述业务动作执行完成的情况下,将所述第二内存资源和所述第一内存资源的差值作为所述计量用量。
在上述第一方面的调用区块链资源的可计量方法,在所述主节点执行业务动作,且需要使用的所述区块链资源为所述分布式处理单元处理资源的情况下,设(智能合约中的操作动作action)的执行时间为Tai则一个智能合约的DPU的资源消耗模型如下分布式处理单元处理DPU的计量适用如下公式:
其中,Tai为智能合约(智能合约中的动作action)被执行时间,Tai计算流程如下:
通过系统监控,获取主节点的全部计算资源量,以Hz为单位,计为n;从而得到该轮共识的全网算力的时钟周期1/n,单位为秒,若T的数值为x,则代表了程序执行了x个1/n秒。
在某条智能合约(代码/程序action i)被执行之前,打点记录其开始时间Timebegin。对于该条所述智能合约(对于action i),如果不存在并发执行或异步执行的情况(可通过形式化验证可得知),则记录其结束时间Timeend;如果存在并发或异步情况,则在并发或异步的部分单独插入打点计时的逻辑,计为
最后通过消息机制,将所有T统一相加后,得到
即所述计量用量的获取方式包括:
获取所述业务动作的完整持续时间;
判断在所述业务动作的持续过程中是否存在并发执行操作和/或异步执行操作的情况;
在存在所述并发执行操作和/或所述异步执行操作的情况下,获取每个所述并发执行操作和每个所述异步执行操作的独立持续时间;
将所述完整持续时间和所述独立持续时间之和作为所述计量用量。
在上述第一方面的调用区块链资源的可计量方法,获取所述验证结果包括:
在将获取的所述资源用量于所述主节点所处的区块链中进行所述共识广播的过程中,所述其他节点采用与所述主节点相同的方式对所述资源用量进行计算,生成对应的验证资源用量;
在每个所述其他节点的所述验证资源用量与所述资源用量的差值小于预设阈值的情况下,判断所述验证结果属于可信统计。
本申请的第二方面提供的一种区块链资源的可计量系统,应用于上述第一方面提供的区块链资源的被调用的计量方法中,包括:
获取单元,用于获取所述区块链资源的资源类型;
第一计量单元,用于在所述资源类型属于即时计量资源的情况下,在调用所述区块链资源的过程中,通过使用所述区块链资源的主节点执行同步的资源使用计量,并将获取的资源用量于所述主节点所处的区块链中进行共识广播;
共识单元,用于通过所述区块链中除所述主节点外的其他节点对所述资源用量进行验证,并在验证结果属于可信统计的情况下将所述资源用量作为所述区块链资源对应的计量用量;
第二计量单元,用于在所述资源类型属于非即时计量资源的情况下,在调用所述区块链资源前,统计并生成所述区块链资源对应的计量用量。
本申请的第三方面提供一种电子设备,包括:
存储器,所述存储器用于存储处理程序;
处理器,所述处理器执行所述处理程序时实现前述第一方面所提供的区块链资源的计量方法。
本申请的第四方面提供一种可读介质,所述可读介质上存储有处理程序,所述处理程序被处理器执行时实现前述第一方面所提供的区块链资源的计量方法。
具体地,在本申请的第一方面提供了一种区块链资源的计量方法,具体包括:
获取区块链资源的资源类型;
与现有技术相比,本申请具有如下的有益效果:
通过本申请提出的技术方案,提供了一种适用于区块链系统的资源用量的精确计算方法,于该种计量方法中,提出了基于即时计量资源和非即时计量资源的区块链资源计量体系,可以在不影响区块链系统执行效率的情况下,针对分布式只读寄存器存储资源、传输带宽资源、分布式随机寄存器存储资源以及分布式处理单元处理资源进行针对性的资源使用计量,从而实现用后计量计价以及用中计量计价两种计量模式,简单高效地满足各类区块链资源用量计量场景,具有可推广价值。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
针对现有技术中存在的无法对区块链资源的用量进行精准合理且便捷的计量的问题,本申请提出了一种区块链资源的计量方法及其系统。通过本申请,提出了基于即时计量资源和非即时计量资源的区块链资源计量体系,可以在不影响区块链系统执行效率的情况下,针对分布式只读寄存器存储资源、传输带宽资源、分布式随机寄存器存储资源以及分布式处理单元处理资源进行针对性的资源使用计量,从而实现用后计量计价以及用中计量计价两种计量模式,简单高效地满足各类区块链资源用量计量场景。
具体地,图1根据本申请的一些实施例,示出了在本申请的第一方面提供了一种区块链资源的计量方法,该种区块链资源的计量方法具体包括:
步骤101:获取区块链资源的资源类型。其中,对于区块链资源的资源类型可以划分为即时计量资源与非即时计量资源。
步骤102:判断区块链资源的资源类型是否属于即时计量资源,若属于则转向步骤103,若不属于则转向步骤105。
可以理解的是,对于即时计量资源可以采用使用时计量的方式,要求分布式程序在能够正确执行的同时,完成其执行时消耗资源用量的统计;而对于非即时计量资源可以使用前计量的方式,可以在程序执行之前,就可以根据程序或数据的特征来统计出用量的加量方法,在此需要根据区块链资源的资源类型对其进行区分。
步骤103:于使用区块链资源的过程中,通过使用区块链资源的主节点执行同步的资源使用计量,并将获取的资源用量于主节点所处的区块链中进行共识广播。
步骤104:通过区块链中除主节点外的其他节点对资源用量进行验证,并在验证结果属于可信统计的情况下将资源用量作为区块链资源对应的计量用量。
步骤105:在资源类型属于非即时计量资源的情况下,于使用区块链资源前,统计并生成区块链资源对应的计量用量。
在本申请的一些实施例中,进一步地,区块链资源可以包括分布式只读寄存器dROM存储资源、传输带宽资源、分布式随机寄存器存储资源以及分布式处理单元处理DPU资源。其中:分布式只读寄存器存储资源的计量用量为存储资源的大小;分布式随机寄存器dRAM存储资源的计量用量为消耗内存的大小;传输带宽资源的计量用量为传输资源的大小;分布式处理单元处理DPU资源的计量用量为处理资源的时间。
在本申请的一些实施例中,进一步地,分布式只读寄存器存储资源属于非即时计量资源。可以理解的是,在区块链资源为分布式只读寄存器存储资源的情况下,计量用量包括所述存储状态值、所述历史变更信息和所述区块信息。
在本申请的一些实施例中,进一步地,传输带宽资源属于非即时计量资源。可以理解的是在区块链资源为传输带宽资源的情况下,计量用量包括通过区块链的访问客户端向区块链的节点进行传输的资源量和/或通过软件开发工具包向区块链的节点进行传输的资源量。于上述实施例中,在待传输资源使用传输带宽资源进行传输前,可以根据待传输资源的大小确定计量用量。
在本申请的一些实施例中,进一步地,即时计量资源可以包括分布式随机寄存器存储资源。
于上述实施例中,在主节点执行业务动作,且需要使用的区块链资源为分布式随机寄存器存储资源的情况下,图2示出了一种计量用量的获取方式,具体包括:
步骤201:在业务动作执行前,获取主节点的智能合约虚拟机所消耗的第一内存资源。
步骤202:在业务动作执行过程中,获取智能合约虚拟机的实时内存消耗情况,并将实时内存消耗情况的最大值作为第二内存资源。
步骤203:在业务动作执行完成的情况下,将第二内存资源和第一内存资源的差值作为计量用量。
在本申请的一些实施例中,进一步地,即时计量资源还可以包括分布式处理单元处理DPU资源。
于上述实施例中,在主节点执行业务动作,且需要使用的区块链资源为分布式处理单元处理DPU资源的情况下,图3示出了一种计量用量的获取方式,具体包括:
步骤301:获取业务动作的完整持续时间。
步骤302:判断在业务动作的持续过程中是否存在并发执行操作和/或异步执行操作的情况:若存在则转向步骤303,若不存在则转向步骤304。
步骤303:在存在并发执行操作和/或异步执行操作的情况下,获取每个并发执行操作和每个异步执行操作的独立持续时间。
步骤304:将完整持续时间和独立持续时间之和作为计量用量。
在本申请的一些实施例中,进一步地,获取验证结果包括:
在将获取的资源用量于主节点所处的区块链中进行共识广播的过程中,其他节点采用与主节点相同的方式对资源用量进行计算,生成对应的验证资源用量;
在每个其他节点的验证资源用量与资源用量的差值小于预设阈值的情况下,判断验证结果属于可信统计。
在本申请的一些实施例中,图4公开了一种区块链资源的计量系统,应用于前述实施例提供的区块链资源的计量方法中,具体包括:
获取单元001,用于获取区块链资源的资源类型;
第一计量单元002,用于在资源类型属于即时计量资源的情况下,在使用区块链资源的过程中,通过使用区块链资源的主节点执行同步的资源使用计量,并将获取的资源用量于主节点所处的区块链中进行共识广播;
共识单元003,用于通过区块链中除主节点外的其他节点对资源用量进行验证,并在验证结果属于可信统计的情况下将资源用量作为区块链资源对应的计量用量;
第二计量单元004,用于在资源类型属于非即时计量资源的情况下,在使用区块链资源前,统计并生成区块链资源对应的计量用量。
在本申请的一些实施例中,还提供了一种电子设备。该种电子设备中包含存储器和处理器,其中存储器用于对处理程序进行存储,处理器则根据指令对处理程序进行执行。当处理器对处理程序进行执行时,使得前述实施例中的区块链资源的计量方法得以实现。
在本申请的一些实施例中,还提供了一种可读介质,该可读介质可以为非易失性可读介质,也可以为易失性可读介质。该可读介质中存储有指令,当该指令在计算机上运行时,使得包含该种可读介质的电子设备执行前述的区块链资源的计量方法。
可以理解的是,对于前述区块链资源计量系统中的各个功能模块,如果均以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-only memory,ROM)、随机存取存储器(Random accessmemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
计算机可读介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读介质还可以是可读介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF射频等等,或者上述的任意合适的组合。
具体实施例:
①DPU(分布式处理单元)、②Bandwidth(带宽)、③dRAM(分布式随机寄存器)、④dROM(分布式只读寄存器dROM)等分布式系统资源的提出和使用,开创性的将区块链的用量颗粒度细化,更方便审计与计量,可以灵活的支持更多的商业场景。
资源的消耗分为可恢复和不可恢复,可恢复的资源可以在使用完成后的一定时间内逐渐恢复,不可恢复资源在使用后,将永远占用。资源的计量时机又分为A使用时计量和B使用前计量。
其中:A使用时计量,要求分布式程序在能够正确执行的同时,完成其执行时消耗资源用量的统计,由于在分布式系统中,每个节点在执行相同程序时,有可能出现资源消耗不一致的情况,比如以计算资源DPU为例,是以程序执行的时间作为基础的,每个节点在执行相同程序时所消耗的时间可能各不相同,那么如何合理的计量这类资源呢?我们提出使用时计量的方法,该方法通过分布式系统的共识机制,在主节点执行时进行同步统计,其他节点在共识过程中,执行相同的程序来验证主节点计量的准确性,如果误差在设置的可信范围内,则认为统计正确并接受该统计量。
B使用前计量表示在程序执行之前,就可以根据程序或数据的特征来统计出用量的加量方法。比如BANDWITH带宽资源,只与系统中传输和广播的数据量有关,所以其在程序执行之前,已经可以确定消耗量。
以下分别介绍这四种细分资源:
DPU代表分布式系统中的即时计算处理资源,DPU具有使用时计量的特点,结合具体场景,可以设置为可恢复和不可恢复。设智能合约中的动作(action)的执行时间为Tai则一个智能合约的DPU的资源消耗模型如下:
其中Tai计算流程如下:
通过系统监控,获取主节点的全部计算资源量,以Hz为单位,计为n
从而得到该轮共识的全网算力的时钟周期1/n,单位为秒,若T的数值为x,则代表了程序执行了x个1/n秒
在程序执行之前,打点记录开始时间Timebegin。
对于action i,如果不存在并发执行或异步执行的情况(通过形式化验证可得知),则记录结束时间Timeend
如果存在并发或异步情况,则在并发或异步的部分单独插入打点计时的逻辑,计为
最后通过消息机制,将所有T统一相加后,得到
如图5所示。
dRAM也属于执行时计量的资源,代表每个action执行时,系统所要开辟的供计算资源DPU使用的空间,该资源通过对智能合约虚拟机开辟内存状态的监控,来获得内存使用情况,并对消耗的内存资源的大小进行计量,计量公式如下:
其中Sizeai计算流程如下:
在action执行之前,获取主节点的智能合约虚拟机所占内存大小Sizebegin
在action执行之时,实时获取智能合约虚拟机的内存消耗情况,获得最大消耗内存量Sizemax
在action执行之后,当前的Sizemax即为Sizeai
宽带Bandwith(即时)代表分布式系统中的即时网络带宽资源,和发送智能合约的大小有关,结合具体场景,可以设置为可恢复和不可恢复。
该资源主要与客户端或SDK向节点发送的数据大小相关,在智能合约执行之前,即可先行计量。
dROM(非即时)代表分布式系统中存储资源,一旦落盘后,不可删除与修改,为消耗性资源,不可恢复。计量公式如下:
CostdROM=TXSizeStateDB+TXSizeHistoryDB+TXSizeblockDB
——公式④
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请所公开的技术方案所涉及的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如C语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
综上所述,通过本申请提出的技术方案,提供了一种适用于区块链系统的资源用量的精确计算方法,于该种计量方法中,提出了基于即时计量资源和非即时计量资源的区块链资源计量体系,可以在不影响区块链系统执行效率的情况下,针对分布式只读寄存器存储资源、传输带宽资源、分布式随机寄存器存储资源以及分布式处理单元处理资源进行针对性的资源使用计量,从而实现用后计量计价以及用中计量计价两种计量模式,简单高效地满足各类区块链资源用量计量场景,具有可推广价值。
上面结合附图对本公开的实施方式作了详细说明,但是本公开并不限于上述实施方式。即使对本公开做出各种变化,倘若这些变化属于本公开权利要求及其等同技术的范围之内,则仍落入在本公开的保护范围之中。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。