基于智能合约的RAM资源分配方法及装置与流程

文档序号:18463982发布日期:2019-08-17 02:17阅读:176来源:国知局
本发明涉及区块链领域,具体涉及基于智能合约的ram资源分配方法及装置、智能合约的执行方法及装置。
背景技术
::智能合约是一段代码和数据的集合,也叫“可编程合约”,即通过程序编码定义合约,预设执行条件,当触发执行条件时执行行为。由于智能合约的公开透明性、无法随意篡改的特性,而且天然具备功能稳定性和中立性的特点,智能合约的业务场景中已有越来越多的实际应用。在eos智能合约执行过程中,需要消耗eos节点的cpu和内存资源,ram为eos软件平台上的内存数据库资源,数据库记录需要消耗ram。为了保持超级节点的高效运行,如果要保持区块链数据可以随时存储、修改,就需要这部分数据存储在内存中。现有技术中ram资源需要向系统合约购买,消耗时需要得到用户的授权,删除数据时返回ram资源给所有者;在执行智能合约的过程中需要发起方的授权,ram资源的消耗需要得到所有者的授权,造成业务逻辑在实现过程中,非常不方便;或者智能合约账户承担所有的ram资源消耗,ram资源由dapp项目方为用户分配,解决了授权的不方便,但是导致大幅提高dapp的运营成本。因此,现有技术中ram分配方法不仅增加了项目方运营成本,而且还存在被恶意攻击的风险,导致项目方ram资源耗尽,服务不可用。技术实现要素:本发明所要解决的技术问题是:如何减少项目方ram运营成本,及如何降低被恶意消耗ram导致服务不可用的风险。为了解决上述技术问题,本发明提供一种基于智能合约的ram资源分配方法,所述方法包括:获取用户的ram资源;根据业务类型调用智能合约中预设的分配接口;确定数据格式及预设空间,分配所述ram资源获得预设ram资源。在一个实施例中,所述“分配所述ram资源获得预设ram资源”方法包括:根据所述数据格式及预设空间创建内容为空的预存数据;通过multi-index表将所述预存数据存储为预设ram资源。在一个实施例中,所述方法还包括:所述预设ram资源中的预存数据的数据字节大小不变。本发明还提供一种智能合约的执行方法,所述方法包括:获取用户的挂单信息;将所述挂单信息写入如上述任意一实施例所述的基于智能合约的ram资源分配方法中预设ram资源的预存数据。在一个实施例中,所述方法还包括:当预存数据中的挂单信息交易成功时,删除所述挂单信息,保存空的预存数据。在一个实施例中,所述方法还包括:当用户建立的挂单信息的数据量超出所述预设ram资源的存储空间时,获取用户授权,增加预设ram资源的分配。作为本发明的又一方面,还提供一种基于智能合约的ram资源分配装置,所述装置包括:第一获取模块,用于获取用户的ram资源;调用模块,用于根据业务类型调用智能合约中预设的分配接口;分配模块,用于确定数据格式及预设空间,分配预设ram资源。作为本发明的另一方面,还提供一种智能合约的执行装置,所述装置包括:第二获取模块,用于获取用户的挂单信息;编辑模块:用于将所述挂单信息写入上述实施例中所述的基于智能合约的ram资源分配装置中由分配模块获得的预设ram资源。作为本发明的另一方面,还提供一种智能合约管理设备,其特征在于,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上述实施例中所述的基于智能合约的ram资源分配方法,和/或如上述实施例中所述的一种智能合约的执行方法。作为本发明的另一方面,还提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中任一项所述的基于智能合约的ram资源分配方法,和/或如上述实施例中一项所述的一种智能合约的执行方法。本发明的有益效果在于:本发明基于智能合约,为用户预先分配业务所需要的ram资源,智能合约在使用用户预先分配的ram资源时,采取填充、使用、用完回收的方式,能够重复使用用户预先分配的资源;在执行智能合约中的方法时,根据业务逻辑更新数据状态,保持数据大小不变即可,减少项目方ram运营成本,且降低被恶意消耗ram导致服务不可用的风险。附图说明图1为本发明实施例ram资源分配方法流程图;图2为本发明实施例智能合约执行方法流程图;图3为本发明实施例ram资源分配装置示意图;图4为本发明实施例智能合约执行装置示意图。具体实施方式为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。交易在提交之前需要进行数字签名及哈希运算,当交易被提交到区块链上后,经过多个区块链的确认,被记录在区块链上后,无法篡改;但在用户提交订单,交易还未达成之前,在eth/eos区块链中,支持智能合约,智能合约提供订单编辑及存储的操作方法,例如,在交易所环境中,用户挂单的动作实际上为调用智能合约的操作方法,通过挂单的动作发起交易,交易本身无法篡改,但交易所对应的操作方法可以修改全局状态,其中全局状态数据存储在ram资源中;具体地,在交易所的设计中,需要先挂单,然后由撮合引擎撮合,再完成资金交割,其中的挂单信息存储于ram;常见做法是用户提交挂单信息后,智能合约提供ram空间存储挂单信息,这样ram空间的使用必须根据用户每次挂单信息的变更而产生购买、授权、分配等操作,增加了项目方ram运营成本,且存在被恶意消耗ram导致服务不可用的风险。本发明实施例提供了一种基于智能合约的ram资源分配方法,如图1所示,所述方法包括:s101获取用户的ram资源;s102根据业务类型调用智能合约中预设的分配接口;s103确定数据格式及预设空间,分配所述ram资源获得预设ram资源。在本实施例中,s101中,用户的ram资源需要用eos购买,某种意义上说,ram代表现金,用户购买ram资源后,ram资源即属于用户,在本步骤中通过获取用户的ram资源后,对用户的ram资源进行分配,避免了智能合约账户承担所有的ram资源消耗,造成的运行成本增加问题;在s102中,分配接口为智能合约根据业务类型提供,其中的业务类型包括交易所的不同的交易类型、博彩的交易类型等,例如:交易所的挂单业务,智能合约可以提供一个如openaccount(intreserved)方法,用户调用该方法会消耗用户的ram资源;在s103中,获取智能合约中预先存储的不同业务类型对应的订单数据模型,每个订单所占用的ram空间为订单数据模型中各个字段所占用的空间之和,再根据用户的需要在用户的ram资源中分配预设空间从而确定预设ram资源。其中,订单数据模型可以如表1。表1订单数据模型样例itemtypedescriptioniduint64_tidcreatoruint64_t创建者账户pair_iduint32_t交易对idtypeuint8_t订单类型created_timetime创建时间updated-timetime更新时间initialasset初始数字资产remainasset剩余数字资产pricefloat64价格dealasset已成交数字资产在一个实施例中,所述“分配所述ram资源获得预设ram资源”方法包括:根据所述数据格式及预设空间创建内容为空的预存数据;通过multi-index表将所述预存数据存储为预设ram资源。在本实施例中,采用的方法是用户预先分配自己需要的ram,由于此时还没有挂单动作,所以通过创建空单预先消耗的用户ram空间作为预设ram资源。其中,所述空单为按照所述数据格式存储的内容为空的挂单记录,挂单记录以multi-index表格式进行存储。在一个实施例中,所述方法还包括:所述预设ram资源中的预存数据的数据字节大小不变。在本实施例中,分配所述ram资源获得预设ram资源,其中预设ram资源只要空间保持不变即可重复使用,其中,保持数据字节大小不变的方法可以为设置空单的数据格式与有效单的数据格式一致,例如:一个挂单需要1k的ram,这条挂单记录无论是有效的还是空的,都固定消耗1k的ram空间,具体地,挂单记录预设格式只包含(orderidint,pricefloat,amountfloat),有效单为(1,0.100,100),空单是(0,0,0),其中分别存储有效单与空单时,消耗的ram空间是一样的,因此在清除交易成功的挂单信息后,将预设数据保存一个空单,即可保持数据字节大小不变。本实施例减少了用户的频繁授权,固化了已分配的ram资源,避免了由于增加空间的反复授权,由于减少空间直接释放预分配的ram给带来的频繁去调用预留ram空间的不便,从而提高了用户的体验。本发明还提供一种智能合约的执行方法,如图2所示,所述方法包括:s201获取用户的挂单信息;s202将所述挂单信息写入预设ram资源的预存数据。在本实施例中,预设ram资源为根据上述基于智能合约的ram资源分配方法中获得的ram资源;当用户输入挂单信息时,智能合约从用户预设ram资源中获得未使用的空挂单,用来保存用户的挂单信息,从而发起实际的交易。在实际挂单交易撮合时,需要根据匹配结果修改买卖双方的挂单;当预设ram资源空间已被占满,用户又输入新的挂单记录时,记录所占空间增加,则需要获取原来空间所有者的授权。在一个实施例中,用户购买的全部ram资源空间为20k,a业务类型调用智能合约预先分配2k为预设ram资源,则用户可自由利用的ram资源变成18k,资源分配之后,用户发起a业务类型挂单动作,会将a业务类型对应的挂单信息存储在2k的预设ram资源中,但该挂单信息交易成功,会重新设定,清除2k的预设ram资源中的交易成功的挂单信息,并保存占用空间大小相同的空的挂单信息,但是并不会释放到用户可用ram资源,整个过程中用户账户可用ram资源为18k,预设ram资源为2k,再次挂单时重用预设ram资源。当预留ram资源为2k时,一个挂单固定消耗1k的ram,则最多下2个单子,如果这2个单子被撮合成功,则可以直接重用,不需要再次去调用预留的方法分配ram。在一个实施例中,所述方法还包括:当预存数据中的挂单信息交易成功时,删除所述挂单信息,保存空的预存数据。如果交易成功,挂单交易提交到区块链上,则需要删除ram资源中对应的挂单记录,所占空间减少,则会释放之前分配的空间;在本实施例中,删除所述挂单信息的同时,按照预设格式保存相应的空单,而有效单与空单在通过multi-indextable存储时,消耗相同空间;即本实施方法能够使预设ram资源空间保持不变,避免了空间变化导致的增加空间需要授权,减少空间会直接释放预分配的ram的问题,从而提升了用户体验,不需要频繁去调用预留ram空间的方法。在一个实施例中,所述方法还包括:当用户建立的挂单信息的数据量超出所述预设ram资源的存储空间时,获取用户授权,增加预设ram资源的分配。在本实施例中,可以扩充用户的预设ram资源,当用户建立的挂单信息的数据量超出初始预设ram资源空间时,再次输入挂单信息,则发出增加预设ram资源的分配的授权请求,如果获得用户授权,则调用智能合约增扩预设ram资源空间的接口,具体的增扩方法与初始分配预设ram资源的方式一致,其中的数据格式及预设空间也根据业务类型的不同而不相同。基于同一发明构思,本发明实施例还提供了一种基于智能合约的ram资源分配装置,由于该装置所解决问题的原理与前述实施例的一种基于智能合约的ram资源分配方法相似,因此该装置的实施可以参见前述实施例的方法的实施,重复之处不再赘述。作为本发明的又一方面,还提供一种基于智能合约的ram资源分配装置,如图3所示,所述装置包括:第一获取模块11,用于获取用户的ram资源;调用模块12,用于根据业务类型调用智能合约中预设的分配接口;分配模块13,用于确定数据格式及预设空间,分配预设ram资源。基于同一发明构思,本发明实施例还提供了一种智能合约的执行装置,由于该装置所解决问题的原理与前述实施例的一种智能合约的执行方法相似,因此该装置的实施可以参见前述实施例的方法的实施,重复之处不再赘述。作为本发明的另一方面,还提供一种智能合约的执行装置,如图4所示,所述装置包括:第二获取模块21,用于获取用户的挂单信息;编辑模块22:用于将所述挂单信息写入上述实施例中所述的基于智能合约的ram资源分配装置中由分配模块获得的预设ram资源。作为本发明的另一方面,还提供一种智能合约管理设备,其特征在于,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上述实施例中所述的基于智能合约的ram资源分配方法,和/或如上述实施例中所述的一种智能合约的执行方法。作为本发明的另一方面,还提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中任一项所述的基于智能合约的ram资源分配方法,和/或如上述实施例中一项所述的一种智能合约的执行方法。本发明实施例适用于任何公有链eos中需要ram资源的场景,包括但不限于交易所、博彩、竞猜类智能合约。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1