一种智能合约执行通知推送方法和系统与流程

文档序号:20884096发布日期:2020-05-26 17:22阅读:227来源:国知局
一种智能合约执行通知推送方法和系统与流程

本发明涉及计算机技术领域,尤其涉及一种智能合约执行通知推送方法和系统。



背景技术:

随着区块链技术的快速发展和在某些领域的颠覆式应用,在区块链上开发dapp(decentralizedapplication,分散式的应用程序)也越来越多地被实现。dapp对用户的友好性决定一个dapp是否被普通用户接受和受众程度。而dapp对用户的友好性的一个指标是能否根据区块链上智能合约中数据的变化及时向用户推送通知,因此利用一个第三方的bot系统给用户推送通知对提高dapp的友好性至关重要。

目前常见的dapp业务比较简单,并且几乎不存在通知推送的机制,导致dapp的受众很小,普及度很低。随着dapp的发展,dapp的涉及的业务及领域会更加复杂,如果无法从区块链的智能合约中读取相关数据推送至dapp,从长远看,将不利于dapp的发展。



技术实现要素:

本发明的目的在于提供一种智能合约执行通知推送方法和系统。

本发明解决其技术问题采用的技术方案是:提供一种智能合约执行通知推送方法,包括以下步骤:

将智能合约部署至区块链上;

dapp与所述智能合约进行交互;

检测所述智能合约的状态,当所述智能合约的状态满足触发条件时,将与所述触发条件对应的推送通知推送至所述dapp。

在本发明提供的智能合约执行通知推送方法中,将智能合约部署至区块链上的所述步骤之前还包括:

在所述区块链上创建合约部署者账户;

通过所述合约部署者账户将所述智能合约部署至所述区块链网络中的某一节点,并广播至所述区块链网络中的所有节点。

在本发明提供的智能合约执行通知推送方法中,dapp与所述智能合约进行交互的所述步骤包括:

在区块链网络中选择一个api节点作为所述dapp访问所述区块链网络的节点;

所述dapp与所述智能合约通过http协议进行交互。

在本发明提供的智能合约执行通知推送方法中,检测所述智能合约的状态,当所述智能合约的状态满足触发条件时,将与所述触发条件对应的推送通知推送至所述dapp的所述步骤包括:

采集所述dapp的推送通知,所述推送通知包括所述dapp默认的推送通知和用户设置的推送通知,每个推送通知对应于所述智能合约中满足触发条件的特定状态;

通过轮询策略对所述智能合约的状态进行监测,将满足触发条件的推送通知推送至所述dapp。

在本发明提供的智能合约执行通知推送方法中,还包括:

对所述智能合约的状态定制对应的推送通知内容。

在本发明提供的智能合约执行通知推送方法中,通过访问所述区块链中的api节点对所述智能合约的状态进行监测。

相应地,本发明还提供一种智能合约执行通知推送系统,包括:

状态检测模块,用于检测部署在区块链上的智能合约的状态,所述智能合约与dapp进行交互;

推送模块,用于当所述智能合约的状态满足触发条件时,将与所述触发条件对应的推送通知推送至所述dapp。

在本发明提供的智能合约执行通知推送系统中,还包括:

采集模块,用于采集所述dapp的推送通知,所述推送通知包括所述dapp默认的推送通知和用户设置的推送通知,每个推送通知对应于所述智能合约中满足触发条件的特定状态。

在本发明提供的智能合约执行通知推送系统中,还包括:

状态定制模块,用于对所述智能合约的状态定制对应的推送通知内容。

在本发明提供的智能合约执行通知推送系统中,所述状态检测模块通过访问所述区块链中的api节点对所述智能合约的状态进行监测。

本发明的智能合约执行通知推送方法和系统具有以下有益效果:本发明提供的智能合约执行通知推送方法和系统,采用轮询策略,不停地获取区块链上智能合约中的状态,在数据区块链上的智能合约中的状态满足触发条件时,立刻推送对应的通知至dapp,可以提高dapp对用户的友好性,从而大大提高dapp的普及程度。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的智能合约执行通知推送方法的整体结构示意图;

图2为本发明一实施例提供的智能合约执行通知推送方法的流程示意图;

图3为本发明一实施例提供的智能合约执行通知推送系统的原理图。

具体实施方式

为了使本技术领域的技术人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

以下结合附图和实施例对本发明做进一步的解释说明。

参见图1,是本发明实施例所提供的智能合约执行通知推送方法的整体结构示意图。如图1所示,智能合约20部署至区块链10上;安装在客户端30上的dapp通过http协议与智能合约交互;智能合约执行通知推送系统40检测智能合约中的状态是否满足触发条件,如果满足,立刻向客户端30推送通知。具体地,在本发明中,智能合约执行通知推送系统40为bot系统。bot系统采用轮询策略,不停地获取区块链上智能合约中的状态,在数据区块链上的智能合约中的状态满足触发条件时,立刻推送对应的通知至dapp,可以提高dapp对用户的友好性,从而大大提高dapp的普及程度。

参见图2,是本发明实施例提供的智能合约执行通知推送方法的流程图,如图2所示,该方法包括:

s1、将智能合约部署至区块链上;

s2、dapp与所述智能合约进行交互;

s3、检测所述智能合约的状态,当所述智能合约的状态满足触发条件时,将与所述触发条件对应的推送通知推送至所述dapp。

具体地,在步骤s1中,在部署智能合约至区块链的过程中,具体包括三个部分:用区块链工具对合约源代码进行编译,生成相应的编译文件;在区块链测试环境进行测试,无误后,再在区块链正式环境进行部署;通过shell终端连接到区块链正式环境中的任意一个节点,部署智能合约。

进一步地,在将智能合约部署至区块链之前,还包括:

s01、在所述区块链上创建合约部署者账户;

s02、通过所述合约部署者账户将所述智能合约部署至所述区块链网络中的节点,并广播至所述区块链网络中的所有节点。

具体地,在步骤s01中,在所述区块链上创建合约部署者账户,并且为其购买必要的内存、带宽、cup等资源,以保证该账户能够长时间运行智能合约。

具体地,在步骤s02中,通过合约部署者账户部署所述合约至区块链网络中某一节点,并且进行广播至区块链网络中所有节点。

需要说明的是,在区块链正式环境中创建账户前,首先要创建2组密钥对公钥和私钥;其中一组密钥对对应于所述账户的owner权限,另外一组密钥对用于所述账户的active权限。调用智能合约时一般情况下需要所述用户的active权限;把两组密钥中的公钥导入到所述账户中,对应的私钥需要自己保存好。

进一步地,dapp是通过api节点访问区块链,因此,步骤s2包括:

s21、在区块链网络中选择一个api节点作为所述dapp访问所述区块链网络的节点;

s22、所述dapp与所述智能合约通过http协议进行交互。

具体地,在步骤s21中,在区块链网络中选择一个api节点作为dapp访问区块链网络的节点,其中,api节点是区块链中的非候选节点和非生产者节点以外的任何一节点。

具体地,在步骤s22中,使用http协议,dapp与区块链上的智能合约进行交互。需要说明的是,dapp与区块链上智能合约进行交互包括两部分:调用智能合约中的action,action是一个操作,用于改变智能合约中的状态,比如:修改、删除、添加等操作;二:获取智能合约中的状态数据。

进一步地,步骤s3包括:

s31、采集所述dapp的推送通知,所述推送通知包括所述dapp默认的推送通知和用户设置的推送通知,每个推送通知对应于所述智能合约中满足触发条件的特定状态;

s32、通过轮询策略对所述智能合约的状态进行监测,将满足触发条件的推送通知推送至所述dapp。

具体地,在步骤s32中,bot系统实行轮询策略,具体如下:

在t时刻,bot系统读取区块链上的智能合约中的所述状态,判断所述状态是否满足触发条件;如果满足触发条件,则推送相应的通知至dapp;如果不满足,则等待t+1时刻。

需要说明的是,智能合约中的状态有很多个,并不局限于一个,并且触发条件因dapp的业务而异。

例如:某商品竞拍情景。

该竞拍从t时刻开始,以p价格作为起步价进行竞拍,假设t时刻的价格为p(t),并且p(t+y+1)>p(t+y)+1,0<y<d;竞拍持续d时间长度,那么在时刻t+d结束。假设由用户u1,u2,u3……参与竞拍。假设最终用户un以p+x的价格取得成交价。

bot系统不停地从区块链上的智能合约中读取所述状态t+d(这里的状态指时间),当bot系统的时间t>t+d时,满足触发条件,此时调用获取对应的推送通知内容推送该通知至参与竞拍的用户u1,u2,u3……的dapp。

进一步地,所述方法还包括对所述智能合约的状态定制对应的推送通知内容。通过开发者定制满足触发条件时对应的推送通知内容,可以进一步可以提高dapp对用户的友好性。

进一步地,bot系统作为一个第三方的服务不停地监测区块链上智能合约中的所述状态,当所述状态满足条件触发条件时,立刻推送通知至dapp,其是通过访问所述区块链中的api节点对所述智能合约的状态进行监测的,并利用http请求获取区块链中api节点中的所述状态。

需要说明的是,区块链中的api节点一般是该区块链网络中专门用来处理dapp访问的节点。该节点的数据是跟区块链网络中其他节点的数据是保持一致的。之所以要把api节点从区块链网络中独立出来,是为了减少区块链遭受攻击,最大程度地正常运行。

本发明实施例能够利用区块链去中心化、不可篡改的机制,并且结合bot系统进行通知推送,在满足用户之间信任的基础上,增加了dapp对用户的友好性,从而提高用户粘度和扩大dapp的受众群体。

参见图3,图3为本发明一实施例提供的智能合约执行通知推送系统的原理图。如图3所示,本发明提供的智能合约执行通知推送系统包括:

状态检测模块310,用于检测部署在区块链上的智能合约的状态,所述智能合约与dapp进行交互;

推送模块320,用于当所述智能合约的状态满足触发条件时,将与所述触发条件对应的推送通知推送至所述dapp。

具体地,所述状态检测模块310通过访问所述区块链中的api节点对所述智能合约的状态进行监测,其中,api节点是区块链中的非候选节点和非生产者节点以外的任何一节点。

具体地,推送模块320根据所述的客户端进行分类。在ios系统中使用apns2进行推送。在android系统中分为国内和国外两种,国内使用极光推送,国外使用fcm推送。

具体地,智能合约执行通知推送系统实行轮询策略。状态检测模块310对所述智能合约的状态进行监测,在t时刻,通过访问所述区块链中的api节点获取所述智能合约的状态,判断所述状态是否满足触发条件;如果满足触发条件,则有推送模块320推送相应的通知至dapp;如果不满足,则等待t+1时刻。

进一步地,在本发明一实施例中,智能合约执行通知推送系统还包括采集模块330,用于采集所述dapp的推送通知,所述推送通知包括所述dapp默认的推送通知和用户设置的推送通知,每个推送通知对应于所述智能合约中满足触发条件的特定状态。需要说明的是,智能合约中的状态有很多个,并不局限于一个,并且触发条件因dapp的业务而异。

进一步地,在本发明一实施例中,智能合约执行通知推送系统还包括状态定制模块340,用于对所述智能合约的状态定制对应的推送通知内容。通过开发者定制状态满足触发条件时对应的推送通知内容,可以进一步提高dapp对用户的友好性。

实施本发明提供的智能合约执行通知推送系统,具有以下优势:

1、bot系统采用轮询策略,不停地获取区块链上智能合约中所述状态;判断所述状态是否满足触发条件,如果满足,则推送通知至dapp;如果不满足,则进入下一个时刻。

2、bot系统可以采集dapp默认的推送通知和用户设置的推送通知。

3、开发者定制状态满足触发条件时对应的推送通知内容;在数据区块链上的智能合约中的所述状态满足触发条件时,立刻推送对应的通知至dapp,可以提高dapp对用户的友好性,从而大大提高dapp的普及程度。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,其中,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1