CN111738721B - 一种区块链交易监听方法以及相关装置 - Google Patents
一种区块链交易监听方法以及相关装置 Download PDFInfo
- Publication number
- CN111738721B CN111738721B CN202010579111.8A CN202010579111A CN111738721B CN 111738721 B CN111738721 B CN 111738721B CN 202010579111 A CN202010579111 A CN 202010579111A CN 111738721 B CN111738721 B CN 111738721B
- Authority
- CN
- China
- Prior art keywords
- transaction
- monitoring
- result
- chain
- result module
- 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.)
- Active
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 215
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000012806 monitoring device Methods 0.000 claims abstract description 41
- 230000002457 bidirectional effect Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 5
- 238000004806 packaging method and process Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000026676 system process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001550 time effect Effects 0.000 description 1
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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Databases & Information Systems (AREA)
- General Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Economics (AREA)
- Marketing (AREA)
- Development Economics (AREA)
- Technology Law (AREA)
- Data Mining & Analysis (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种区块链交易监听方法以及相关装置,应用于区块链节点与应用客户端之间的监听装置,监听装置包括监听交易结果模块和监听链上结果模块,用于实现对区块链交易结果的监听,并能较为实时地返回区块链的交易结果。本申请方法包括:监听交易结果模块接收应用客户端发送的交易请求,并通过给每一个交易请求创建一个对应的信息接收通道来监听其交易结果,监听链上结果模块将该交易请求发送至区块链节点,并通过网络实时监听区块链节点的交易结果,当监听链上结果模块监听到对应交易请求的交易结果后将通过信息接收通道发送给监听交易结果模块,以使得监听交易结果模块将该交易结果发送给对应发起交易请求的应用客户端。
Description
技术领域
本申请属于区块链技术领域,特别涉及一种区块链交易监听方法以及相关装置。
背景技术
区块链(blockchain)从本质上讲,是一个分布式的数据库,存储于该数据库中的数据,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。基于这些特征,区块链技术奠定了坚实的“信任”基础,创造了可靠的“合作”机制,具有广阔的运用前景。
现有技术中,由于区块链分布式的特点,在通过区块链节点进行交易的过程就涉及到很多区块链节点的通讯共识出块,由于需要达成通讯共识的区块链节点较多,耗费时间较长,区块链系统在处理应用客户端发出的交易请求时都是采用先接收交易请求,在区块链系统处理完成该交易请求之后,区块链系统再通过异步调用的方式给应用客户端返回对应的交易结果,所谓异步调用的方式是指区块链系统在接收应用客户端发送的交易请求之后不会立即处理该交易请求,而是会给发送交易请求的应用客户端回复交易请求发送成功的信息,然后再继续接收其他交易请求,在接收到预设周期内的一批交易请求,再批量对某一周期内接收的一批交易请求进行一起处理,得到最终区块链上的交易结果集。这过程中,应用客户端需要在向区块链系统发送交易请求之后不断查询区块链节点中的交易结果,进而才可能第一时间获取到该交易请求的交易结果,这种区块链交易结果的获得方式时效较低,对能源消耗大,用户体验差。
发明内容
本申请实施例提供了一种区块链交易监听方法以及相关装置,用于实现对区块链交易结果的监听,并能较为实时地获取区块链的交易结果,然后将对应的交易结果返回应用客户端,缓解了应用客户端获得区块链交易结果的时效较差问题。
本申请第一方面提供一种区块链交易监听方法,应用于区块链节点与应用客户端之间的监听装置,所述监听装置包括监听交易结果模块和监听链上结果模块,所述方法包括:
所述监听交易结果模块接收所述应用客户端发送的交易请求,对所述交易请求进行封装,生成对应的交易ID;
所述监听交易结果模块创建消息发送通道和所述交易ID相对应的消息接收通道;
所述监听交易结果模块通过所述消息发送通道向所述监听链上结果模块发送所述交易请求,并监听所述交易请求对应的所述消息接收通道是否获取到交易结果;
所述监听链上结果模块获取所述消息发送通道中的所述交易请求,并将所述交易请求发送到区块链节点;
所述监听链上结果模块监听是否获取到所述区块链节点发送的交易结果集;
当所述监听链上结果模块监听获取到所述区块链节点的交易结果集时,对所述结果集进行解析,得到多个单笔交易结果;
所述监听链上结果模块根据所述交易结果的交易ID,将交易结果通过对应的消息接收通道发送给所述监听交易结果模块;
当所述监听交易结果模块监听到所述消息接收通道获取到所述交易请求对应的交易结果时,从所述消息接收通道中取出所述交易结果,并发送到所述应用客户端。
可选地,所述监听交易结果模块创建消息发送通道和所述交易ID相对应的消息接收通道包括:
所述监听交易结果模块创建一个发送chan通道;
所述监听交易结果模块创建map、接收chan通道;
所述监听交易结果模块以所述交易ID为所述map的key,将所述接收chan通道保存至所述map;
所述监听链上结果模块根据所述交易结果的交易ID,将交易结果通过对应的消息接收通道发送给所述监听交易结果模块包括:
所述监听链上结果模块根据所述交易结果的交易ID从所述map中取出对应的接收chan通道;
所述监听链上结果模块将所述交易结果放入所述接收chan通道。
可选地,所述监听链上结果模块将所述交易请求发送到区块链节点之前,所述方法还包括:
所述监听链上结果模块创建与区块链节点通信的grpc双向流;
所述监听链上结果模块将所述交易请求发送到区块链节点包括:
所述监听链上结果模块通过所述grpc双向流将所述交易请求发送到区块链节点;
所述监听链上结果模块监听是否获取到所述区块链节点发送的交易结果集包括:
所述监听链上结果模块通过所述grpc双向流监听是否获取到所述区块链节点发送的交易结果集。
可选地,在所述监听交易结果模块从所述消息接收通道中取出所述交易结果,并发送到所述应用客户端之后,所述方法还包括:
所述监听交易结果模块销毁所述交易结果的所述交易ID对应的所述消息接收通道。
可选地,所述监听链上结果模块将所述交易请求发送到区块链节点之前,所述方法还包括:
所述监听链上结果模块创建访问连接池,所述访问连接池存放对所述区块链节点的访问连接;
所述监听链上结果模块将所述交易请求发送到区块链节点包括:
所述监听链上结果模块使用所述访问连接将所述交易请求发送到区块链节点。
可选地,所述监听链上结果模块创建访问连接池包括:
创建空白的连接池;
对所述连接池进行初始化,得到初始化后连接池;
对所述初始化后连接池设置最大空闲连接数;
根据所述最大空闲连接数在所述初始化后连接池中建立对所述区块链节点的访问连接,得到所述访问连接池。
可选地,所述监听链上结果模块使用所述访问连接将所述交易请求发送到区块链节点包括:
判断所述访问连接池是否存在空闲的访问连接;
若存在,则允许使用所述访问连接将所述交易请求发送到区块链节点;
若不存在,则等待所述空闲的访问连接,当出现所述空闲的访问连接时,允许使用所述访问连接将所述交易请求发送到区块链节点;
当使用所述访问连接将所述交易请求发送到区块链节点之后,释放所述访问连接回所述访问连接池,以使得所述访问连接变回所述空闲的访问连接。
可选地,所述监听链上结果模块使用所述访问连接将所述交易请求发送到区块链节点包括:
判断所述连接池是否存在空闲的访问连接;
若存在,则允许使用所述访问连接将所述交易请求发送到区块链节点;
若不存在,则创建新的对所述区块链节点的访问连接,允许使用所述访问连接将所述交易请求发送到区块链节点;
当使用所述访问连接将所述交易请求发送到区块链节点之后,释放所述访问连接回所述访问连接池,以使得所述访问连接变回所述空闲的访问连接。
本申请第二方面提供一种区块链交易监听装置,应用于区块链节点与应用客户端之间,所述监听装置包括监听交易结果模块和监听链上结果模块,其中:
所述监听交易结果模块,用于接收所述应用客户端发送的交易请求,对所述交易请求进行封装,生成对应的交易ID;
用于创建消息发送通道和所述交易ID相对应的消息接收通道;
用于通过所述消息发送通道向所述监听链上结果模块发送所述交易请求,并监听所述交易请求对应的所述消息接收通道是否获取到交易结果;
所述监听链上结果模块,用于获取所述消息发送通道中的所述交易请求,并将所述交易请求发送到区块链节点;
用于监听是否获取到所述区块链节点发送的交易结果集;
用于当监听获取到所述区块链节点的交易结果集时,对所述结果集进行解析,得到多个单笔交易结果;
用于根据所述交易结果的交易ID,将交易结果通过对应的消息接收通道发送给所述监听交易结果模块;
所述监听交易结果模块,还用于当监听到所述消息接收通道获取到所述交易请求对应的交易结果时,从所述消息接收通道中取出所述交易结果,并发送到所述应用客户端。
可选地,所述监听交易结果模块在创建消息发送通道和所述交易ID相对应的消息接收通道时,具体用于:
创建一个发送chan通道;
创建map、接收chan通道;
以所述交易ID为所述map的key,将所述接收chan通道保存至所述map;
所述监听链上结果模块根据所述交易结果的交易ID,将交易结果通过对应的消息接收通道发送给所述监听交易结果模块时,具体包括:
根据所述交易结果的交易ID从所述map中取出对应的接收chan通道;
将所述交易结果放入所述接收chan通道。
可选地,所述监听链上结果模块还用于:
所述监听链上结果模块创建与区块链节点通信的grpc双向流;
所述监听链上结果模块在将所述交易请求发送到区块链节点时,具体用于:
所述监听链上结果模块通过所述grpc双向流将所述交易请求发送到区块链节点;
所述监听链上结果模块在监听是否获取到所述区块链节点发送的交易结果集时,具体用于:
所述监听链上结果模块通过所述grpc双向流监听是否获取到所述区块链节点发送的交易结果集。
可选地,在所述监听交易结果模块还用于:
销毁所述交易结果的所述交易ID对应的所述消息接收通道。
可选地,所述监听链上结果模块还用于:
创建访问连接池,所述访问连接池存放对所述区块链节点的访问连接;
所述监听链上结果模块在将所述交易请求发送到区块链节点时,具体用于:
使用所述访问连接将所述交易请求发送到区块链节点。
可选地,所述监听链上结果模块创建访问连接池时,具体用于:
创建空白的连接池;
对所述连接池进行初始化,得到初始化后连接池;
对所述初始化后连接池设置最大空闲连接数;
根据所述最大空闲连接数在所述初始化后连接池中建立对所述区块链节点的访问连接,得到所述访问连接池。
可选地,所述监听链上结果模块使用所述访问连接将所述交易请求发送到区块链节点时,具体包括:
判断所述访问连接池是否存在空闲的访问连接;
若存在,则允许使用所述访问连接将所述交易请求发送到区块链节点;
若不存在,则等待所述空闲的访问连接,当出现所述空闲的访问连接时,允许使用所述访问连接将所述交易请求发送到区块链节点;
当使用所述访问连接将所述交易请求发送到区块链节点之后,释放所述访问连接回所述访问连接池,以使得所述访问连接变回所述空闲的访问连接。
可选地,所述监听链上结果模块使用所述访问连接将所述交易请求发送到区块链节点时,具体用于:
判断所述连接池是否存在空闲的访问连接;
若存在,则允许使用所述访问连接将所述交易请求发送到区块链节点;
若不存在,则创建新的对所述区块链节点的访问连接,允许使用所述访问连接将所述交易请求发送到区块链节点;
当使用所述访问连接将所述交易请求发送到区块链节点之后,释放所述访问连接回所述访问连接池,以使得所述访问连接变回所述空闲的访问连接。
本申请第三方面提供一种计算设备,包括:
处理器和存储器;
所述存储器存储有计算机程序;
所述处理器执行所述计算机程序时实现如前述第一方面中任一项所述的方法。
本申请第四方面提供一种计算机存储介质,所述计算机存储介质中存储有指令,所述指令在计算机上执行时,使得所述计算机执行如前述第一方面中任一项所述的方法。
本申请第五方面提供一种计算机程序产品,所述计算机程序产品在计算机上执行时,使得所述计算机执行如前述第一方面中任一项所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请中监听装置的监听交易结果模块通过将从应用客户端接收到的交易请求进行封装,得到唯一的交易ID,再给该交易ID创建对应的消息接收通道;可以通过使用不同的消息接收通道监听对应不同交易请求的交易结果;本申请中监听交易结果模块将所有进入监听装置的交易请求经过信息发送通道到达监听链上结果模块,监听链上结果模块再将交易请求发送至区块链节点。当监听链上结果模块监听并获取到交易请求对应的交易结果集时,解析该交易结果集得到大量的单笔交易结果,根据每一个交易结果的交易ID即可以找到对应的消息接收通道,监听链上结果模块将该交易结果放入对应的消息接收通道,即可触发监听交易结果模块监听到消息接收通道获取到交易结果,从而从该消息接收通道中取出该交易结果,通过交易结果的交易ID得知对应的交易请求,将该交易结果发送至对应交易请求的应用客户端,即可通过应用客户端向用户展示该交易请求对应的交易结果。可见,通过不同的消息接收通道可以实现对不同的交易请求的交易结果监听,进而使用本申请的技术方案可以实现更快地向应用客户端返回交易结果,即在监听装置将交易请求向区块链节点发送之后,就会一直监听该交易请求的交易结果,这样对该交易请求的交易结果的获取更加及时,而且不需要应用客户端不断地向区块链节点查新交易结果,起到对应用客户端能源节省的作用,又能缓解了应用客户端获得区块链交易结果的时效较差问题。
附图说明
图1为本申请区块链交易监听方法的一个实施例流程示意图;
图2为本申请区块链交易监听方法的另一个实施例流程示意图;
图3为本申请区块链交易监听方法的连接池创建与使用的一个流程示意图;
图4为本申请区块链交易监听装置的一个实施例结构示意图;
图5为本申请一种计算机设备的一个实施例结构示意图。
具体实施方式
本申请实施例提供了一种区块链交易监听方法以及相关装置,用于实现对区块链交易结果的监听,并能较为实时地获取区块链的交易结果,然后将对应的交易结果及时返回应用客户端,缓解了应用客户端获得区块链交易结果的时效较差问题。
请参阅图1,本申请区块链交易监听方法的一个实施例,应用于区块链节点与应用客户端之间的监听装置,所述监听装置包括监听交易结果模块和监听链上结果模块,包括:
101、监听交易结果模块接收应用客户端发送的交易请求,对交易请求进行封装,生成对应的交易ID。
所谓应用客户端是一个非区块链节点的终端,其主要用于给用户交易提供人机交互界面,具体用于接收用户发起的区块链交易请求和通过互联网向监听装置发送该交易请求,以及用于接收监听装置发送的交易结果和将交易结果对用户进行告知。作为监听装置的监听方法,首先需要可以接收应用客户端发送的交易请求,具体为监听装置中的监听交易结果模块接收应用客户端通过互联网通信发送的交易请求,该交易请求可以为一个或多个。本申请中的监听交易结果模块、监听链上结果模块等均可以通过使用软件开发工具包客户端(software development kit,SDK)进行创建。监听交易结果模块对接收到的交易请求进行封装,形成唯一的交易ID,该交易ID就相当于该笔交易请求的身份证,用于后续步骤通过该交易ID可以寻找到该笔交易请求。当监听交易结果模块接收到的是多个交易请求时,需要对每一个交易请求都分别进行封装,分别生成每一个交易请求对应的唯一的交易ID。
102、监听交易结果模块创建消息发送通道和交易ID相对应的消息接收通道。
监听交易结果模块创建用来与监听链上结果模块进行通讯交互的消息发送通道和消息接收通道,所谓信息发送通道即为用于对交易请求进行发送的通道,所谓信息接收通道即为用于对交易请求的交易结果进行接收的通道。其中消息接收通道需要与交易请求的交易ID具有对应关系,即一个交易ID对应一个消息接收通道。
103、监听交易结果模块通过信息发送通道向链上结果模块发送交易请求。
监听交易结果模块通过步骤102中创建的消息发送通道向链上结果模块发送该交易请求。
104、监听交易结果模块监听交易请求对应的消息接收通道是否获取到交易结果,若是,则执行步骤109。
监听交易结果模块利用步骤102中创建的消息接收通道一对一地对每一个交易请求的交易结果进行监听,当监听交易结果模块的某一个消息接收通道监听到交易请求对应交易结果时,则执行步骤109;若监听交易结果模块的信息接收通道均未监听到交易请求对应的交易结果,则继续监听。
105、监听链上结果模块获取消息发送通道中的交易请求,并将交易请求发送至区块链节点。
监听链上结果模块从步骤103中的消息发送通道中获取交易请求,然后通过网络将交易请求发送至区块链节点。
106、监听链上结果模块监听是否获取到区块链节点发送的交易结果集,若是,则执行步骤107。
需要理解的是,区块链系统需要处理各个区块链节点发送的交易请求,数据量非常庞大,目前采用的处理方式是,周期性接收批量处理的方式处理交易请求。也就是说,区块链系统是获取一个时间周期内的所有交易请求,然后对这些交易请求进行处理,使得区块链节点对这些交易请求形成共识,即给各个区块链节点均返回交易请求对应的交易结果之后,这些交易结果往往是多个交易请求对应的,称为交易结果集,再处理下一个周期内的区块链交易请求。监听链上结果模块通过网络实时监听区块链节点的交易结果集,当监听链上结果模块监听到区块链节点形成有交易结果集之后,立即获取该交易结果集。
107、监听链上结果模块对交易结果集进行解析,得到多个单笔交易结果。
对步骤106中获取到的交易结果集进行解析,使得交易结果集转化成多个单笔的交易结果。
108、监听链上结果模块根据交易结果的交易ID,将交易结果通过对应的消息接收通道发送给监听交易结果模块。
监听链上结果模块读取步骤107中每一笔交易结果的交易ID,然后根据该交易ID找到步骤102中的与交易ID具有对应关系的信息接收通道,然后将该交易结果通过该信息接收通道发给监听交易结果模块。
109、当监听交易结果模块监听到信息接收通道获取到交易请求对应的交易结果时,从消息接收通道中取出交易结果,并发送到应用客户端。
当步骤108中监听链上结果模块将交易结果通过对应的信息接收通道发送给监听交易结果模块时,即触发了步骤104中监听交易结果模块监听获取到对应交易请求的交易结果,由于一个交易请求对应一个消息接收通道,当该信息接收通道接收到交易结果,就意味着该交易请求得到了交易结果,就可以向该交易请求对应的应用客户端发送该交易结果,以使得用户可以通过该应用客户端了解交易请求对应的交易结果。
从上述实施例中可以得知,申请中监听装置的监听交易结果模块通过将从应用客户端接收到的交易请求进行封装,得到唯一的交易ID,再给该交易ID创建对应的消息接收通道;可以通过使用不同的消息接收通道监听对应不同交易请求的交易结果;本申请中监听交易结果模块将所有进入监听装置的交易请求经过信息发送通道到达监听链上结果模块,监听链上结果模块再将交易请求发送至区块链节点。当监听链上结果模块监听并获取到交易请求对应的交易结果集时,解析该结果集得到大量的单笔交易结果,根据每一个交易结果的交易ID即可以找到对应的消息接收通道,监听链上结果模块将该交易结果放入对应的消息接收通道,即可触发监听交易结果模块监听到消息接收通道获取到交易结果,从而从该消息接收通道中取出该交易结果,通过交易结果的交易ID得知对应的交易请求,将该交易结果发送至对应交易请求的应用客户端,即可通过应用客户端向用户展示该交易请求对应的交易结果。可见,通过不同的消息接收通道可以实现对不同的交易请求的交易结果监听,进而使用本申请的技术方案可以实现更快地向应用客户端返回交易结果,即在监听装置将交易请求向区块链节点发送之后,就会一直监听该交易请求的交易结果,这样对该交易请求的交易结果的获取更加及时,而且不需要应用客户端不断地向区块链节点查新交易结果,起到对应用客户端能源节省的作用,又能缓解了应用客户端获得区块链交易结果的时效较差问题。
请参阅图2,本申请区块链交易监听方法的另一个实施例,应用于区块链节点与应用客户端之间的监听装置,所述监听装置包括监听交易结果模块和监听链上结果模块,包括:
201、监听交易结果模块接收应用客户端发送的交易请求。
所谓应用客户端是一个非区块链节点的终端,其主要用于给用户交易提供人机交互界面,具体用于接收用户发起的区块链交易请求和通过互联网向监听装置发送该交易请求,以及用于接收监听装置发送的交易结果和将交易结果对用户进行告知。作为监听装置的监听方法,首先需要可以接收应用客户端发送的交易请求,具体为监听装置中的监听交易结果模块接收应用客户端通过互联网通信发送的交易请求,该交易请求可以为一个或多个。本申请中的监听交易结果模块、监听链上结果模块等均可以通过使用软件开发工具包客户端(software development kit,SDK)进行创建。
202、监听交易结果模块将交易请求进行封装,生成交易ID。
监听交易结果模块对接收到的交易请求进行封装,形成唯一的交易ID,该交易ID就相当于该笔交易请求的身份证,用于后续步骤通过该交易ID可以寻找到该笔交易请求。当监听交易结果模块接收到的是多个交易请求时,需要对每一个交易请求都分别进行封装,分别生成每一个交易请求对应的唯一的交易ID。
203、监听交易结果模块创建map、接收chan通道、发送chan通道。
本申请实施例中对信息发送通道和信息接收通道进行举例说明,比如chan通道类型的信息发送通道,以及chan通道类型的信息接收通道。本申请还对信息接收通道与交易请求的交易ID对应关系的建立进行举例说明,比如通过map键值对建立。
所谓map是一种键-值对(key-value)集合,map集合中的每一个元素都包含一个键对象key和一个值对象value,用于保存具有映射关系的数据,通过键对象key可以找到值对象value。本步骤创建一个map用于保存每一个交易请求与对应的接收chan通道之间的映射关系。
所谓chan通道(channel)是指Go语言程序中的一种类型,每一个chan通道其具有先进先出(first in first out)并发执行的规则特性,先进先出的特性可以用于保证收发数据的顺序,而并发执行的特性可以用于“同时”监听多个交易请求对应的交易结果。本步骤主要利用chan通道的并发执行特性,创建一个或多个用于接收的chan通道,称为接收chan通道。接收chan通道的数量应与接收到的交易请求数量一致,具体来说是每一个交易ID对应一个接收chan通道。
本申请实施例中仅创建一个用于发送的chan通道,称为发送chan通道。需要说明的是,发送chan通道、接收chan通道、以及map的创建可以通过软件开发工具包客户端在启动或创建监听交易结果模块时同步创建;发送chan通道可以是在有交易请求需要向监听链上交易结果模块发送前建立即可,具体的创建时间在此不做具体限定;当在第一次使用刚创建的发送chan通道时需要进行初始化,以确保创建的发送chan通道的正常使用。
204、监听交易结果模块以交易ID为map的key,将接收chan通道保存至map。
将步骤202中一个交易请求被封装生成的交易ID作为步骤203中map的键对像key,将步骤203中的一个接收chan通道作为该map的值对象保存,这样就可以实现通过交易ID在map中快速寻找到对应的接收chan通道,从而实现对大量的接收chan通道的管理。
205、监听交易模块向监听链上结果模块共享map和交易请求。
监听交易结果模块与监听链上结果模块均为监听装置的一部分,它们之间存在数据共享,只是分工不同。监听交易结果模块对map主要是存入不同交易ID与不同接收chan通道的映射关系,而监听链上结果模块对map主要是使用其中的交易ID来寻找对应的接收chan通道;监听交易结果模块对交易请求主要是接收和封装,而监听链上接收模块主要对封装之后的交易请求向区块链节点发送。基于以上的理解,监听交易结果模块会实时主动与监听链上结果模块共享map,并实时更新map中的映射关系;且实时将封装后的交易请求通过唯一的发送chan通道与监听链上结果模块共享,通过唯一的具备先进先出(first infirst out)的规则特性的发送chan通道,确保了若存在多个交易请求也能按照实际的交易先后顺序向监听链上结果模块共享,避免因为网络延迟或者故障时出现交易请求顺序混乱的问题。
206、监听交易结果模块监听接收chan通道是否获取到交易请求对应的交易结果,若监听到,则执行步骤215;若未监听到,则继续执行本步骤。
在步骤205中监听交易结果模块向监听链上结果模块共享了某个交易请求之后,监听交易结果模块就会通过与该交易请求的交易ID在map中对应保存的接收chan通道监听该交易请求对应的交易结果,由于接收chan通道具备并发执行的特性,通过不同的交易请求对应着不同的接收chan通道,实现同时通过多接收chan通道的方式监听多交易请求的交易结果,即可实现“同时”监听区块链节点大量并发的交易结果。
207、监听链上结果模块创建访问连接池,存放对区块链节点的访问连接。
监听链上结果模块的主要功能是将封装的交易请求及时向区块链节点进行发出,以便区块链系统对该交易请求进行处理,以及监听并获取区块链节点形成的交易共识,所谓的交易共识即为批量交易请求的交易结果集。可以理解的是,在监听链上结果模块通过发送chan通道得到交易请求时,需要先通过网络访问区块链节点的网络地址,该网络地址即为区块链节点的统一资源定位符(uniform resource locator,URL),然后向该网络地址去投递该交易请求。然而,当网络状况不好就会出现对该区块链节点访问出错的情况,此时交易请求不能被投递,会导致交易请求被堵塞与积压。鉴于此,本申请引入连接池的技术方案,通过创建一个保存有对区块链节点的访问连接的访问连接池,可以有效缓解网络状况不好时,监听链上结果模块不能及时发送该交易请求而导致交易请求被堵塞和积压的问题。
该访问连接池的创建与使用过程可以参考图3,主要包括:
(301)、首先创建一个空白的连接池;
(302)、对该连接池进行初始化,得到初始化后连接池;
即对连接池的初始化可以将连接池中的访问连接置零;
(303)、在对该初始化后连接池设置最大空闲连接数;
所谓最大空闲连接数为该初始化后连接池用于存储访问连接的最大数量;
(304)、根据最大空闲连接数在该初始化后连接池中建立对该区块链节点的访问连接,形成了访问连接池;
该访问连接即为对区块链节点的URL的访问,在该访问连接池中的区块链节点的访问连接会一直处于被访问状态;
(305)、接收访问连接请求;
当监听链上结果模块在需要对区块链节点发送交易请求时,可以先向访问连接池发送访问连接请求,尝试获取访问连接池中对区块链节点的访问连接;
(306)、判断访问连接池是否存在空闲的访问连接,若存在,则执行步骤307,若不存在,则执行步骤308;
当监听链上结果模块对访问连接池进行访问时,判断该访问连接池是否存在空闲的访问连接,所谓空闲的访问连接是指未被使用的对区块链节点的访问连接。可以理解的是,由于监听链上结果模块与区块链节点之间通信为流式处理,数据交互量庞大,可能存在访问连接池中多个(甚至全部)的访问连接都被使用去投递相应的交易请求的情况,所以需要先确定该访问连接池中存在空闲的访问连接;
(307)、允许使用访问连接通过grpc双向流通信向区块链节点发送交易请求;
当步骤306中确定存在空闲的访问连接时,允许使用该访问连接通过grpc双向流通信向所述区块链节点发送对应的交易请求,以节省创建区块链节点连接的时间,进一步提高向区块链节点发送交易请求的速度;
(308)、等待或创建空闲的访问连接;
当确定该访问连接池中不存在空闲的访问连接,即该访问连接池的访问连接已全部正被使用时,监听链上结果模块可以等待访问连接池中正在被访问的访问连接释放变为空闲的访问连接,当访问连接池出现空闲的访问连接时,再使用该访问连接通过grpc双向流通信向区块链节点发送交易请求,或,监听链上结果模块还可以通过改变访问连接池的最大空闲连接数,从而创建新的对区块链节点的访问连接,再使用该访问连接通过grpc双向流通信向区块链节点发送交易请求;
(309)、释放访问连接回访问连接池,以使访问连接变回空闲的访问连接。
当使用访问连接池的访问连接向区块链节点发送完毕交易请求之后,应释放访问连接回该访问连接池,以使得该访问连接变回访问连接池的空闲的访问连接,以便下一个交易请求的发送使用。
208、监听链上结果模块创建与区块链节点通信的grpc双向流。
所谓grpc双向流是一个由google开源的高性能、开源、跨多种编程语言和通用的远程过程调用协议(remote procedure call,RPC)框架,用于客户端和服务器端之间的通信。本申请中将监听链上结果模块作为一个客户端,而区块链节点作为一个服务器端来创建监听链上结果模块与区块链节点的grpc双向流通信,进而实现监听链上结果模块对交易请求向区块链节点的流式发送,对区块链节点的交易结果的流式响应,方便快捷,时延少。监听链上结果模块与区块链节点之间的grpc双向流通信创建时间可以是在启动并初始化监听链上结果模块时就创建,只要是在需要对交易请求进行发送之前创建即可,具体在此不做限定。在创建完成之后,监听链上结果模块与区块链节点之间的通信都可以一直通过grpc双向流来连接。
209、监听链上结果模块向区块链节点发送交易请求。
在步骤205中监听链上结果模块会逐个得到需要向区块链节点发送的交易请求,为能及时的向区块链节点发送该交易请求,本申请的技术方案中监听链上结果模块通过使用步骤208中创建的与区块链节点通信的grpc双向流向区块链节点发送交易请求,利用流式处理的通讯方式,可以实现快速的信息发送,减少时延。
可以理解的是,本申请实施例中监听链上结果模块向区块链节点发送交易请求的方式有多种。还包括比如,监听链上结果模块可以创建与区块链节点的地址连接,当通过该地址连接可以成功访问该区块链节点之后,向所述区块链节点投递该交易请求;或,通过步骤208中创建的grpc双向流通信创建与区块链节点的地址连接,当通过该地址连接可以成功访问该区块链节点之后,向所述区块链节点投递该交易请求;或者,还可以使用步骤207创建的访问连接池中的访问连接,该访问连接的使用过程请参考对上述步骤207中对图3的过程描述。直接获取访问连接池中的访问连接进行交易请求的投递,有效缓解网络状况不好时,监听链上结果模块不能及时发送该交易请求而导致交易请求被堵塞和积压的问题。
210、监听链上结果模块通过grpc双向流监听是否获取到区块链节点的交易结果集,若是,则执行步骤215,若否,则继续执行本步骤。
在步骤209中监听链上结果模块将监听交易结果模块共享的某个交易请求发送到区块链节点之后,监听链上结果模块可以通过grpc双向流监听并获取区块链节点形成共识的交易结果集。鉴于此,本申请采用grpc流式监控区块链节点形成共识的交易结果集,可以实现较为实时的获取交易结果集。
211、监听链上结果模块获取区块链节点的交易结果集。
在步骤210中监听链上结果模块对区块链节点进行了实时监听,每当区块链节点有达成共识的交易结果集形成,第一时间获取到该交易结果集。
212、监听链上结果模块对交易结果集进行解析,得到多个单笔交易结果。
在步骤211中监听链上结果模块确定获取到区块链节点的交易结果集之后,由于监听链上结果模块从区块链节点获取到的交易结果集包含多个交易请求的交易结果,所以需要对交易结果进行解析,将其拆分为多个单笔交易结果。
213、监听链上结果模块根据交易结果的交易ID从map中取出对应的接收chan通道。
监听链上结果模块先从单笔交易结果中得到该笔交易结果的交易ID,然后从监听交易结果模块共享的map中以该交易ID为键对象key查询得到具有映射关系的接收chan通道,将该接收chan通道从map中取出。
214、监听链上结果模块将交易结果放入接收chan通道。
由于监听交易结果模块是通过接收chan通道来监听特定交易请求的交易结果,当监听链上结果模块将交易结果放入接收chan通道之后,监听交易结果模块中对应的接收chan通道就会监听到其接收chan通道获取到对应的交易请求的对应交易结果。
215、监听交易结果模块从接收chan通道中取出交易结果。
当一个接收chan通道监听到与其对应的交易请求有了交易结果之后,其监听的任务就完成了,此时监听交易结果模块会从接收chan通道中取出交易结果。
216、监听交易结果模块向应用客户端发送该交易结果。
在步骤215中监听交易结果模块得知有交易请求对应的交易结果时,应给发起该交易请求的用户反馈该交易结果,可以理解为向发起交易请求的应用客户端反馈该交易结果,以使得用户通过该应用客户端及时得知该交易请求的交易结果。
217、监听交易结果模块销毁交易结果对应的接收chan通道。
接收chan通道在本申请中作为交易请求对其交易结果进行监听的一种方式,在其得到相应的交易结果之后,其使命完成,可以将其销毁,以减少系统资源的开销。
从上述实施例可以看出,本申请中监听装置的监听交易结果模块通过将从应用客户端接收到的交易请求进行封装,得到唯一的交易ID,再给该交易请求创建一个接收chan通道,以该唯一的交易ID作为map的key,将接收chan通道保存至该map,实现一个交易请求对应一个接收chan通道的设置,不同的交易请求对应着不同的接收chan通道;并设置有map对不同的交易ID和不同的接收chan通道进行集合管理;不同的接收chan通道之间具有可以并发执行的特性,可以通过不同的接收chan通道实现同时监听不同交易请求的交易结果;本申请中仅有一个发送chan通道,所有进入监听装置的交易请求都需要经过该发送chan通道到达监听链上结果模块,再发送至区块链节点,仅有一个发送chan通道可以充分发挥chan通道的先进先出特性,实现对存在交易先后顺序的交易请求的公平。本申请中监听装置的监听链上结果模块通过双向流来与区块链节点通信,利用双向流的流式快速发送和接收功能,实现与区块链节点接近实时的信息共享,实现了实时监听到区块链系统在区块链节点达成共识的交易结果集;当监听链上结果模块监听并获取到该交易结果集时,解析该结果集得到大量的单笔交易结果,根据每一个交易结果的交易ID即可以从map中找到对应的接收chan通道,监听链上结果模块将该交易结果放入该接收chan通道,即可触发监听交易结果模块监听到接收chan通道存在交易结果,从而从该接收chan通道中取出该交易结果,通过交易结果的交易ID得知对应的交易请求,将该交易结果发送至对应交易请求的应用客户端,即可通过应用客户端向用户展示该交易请求对应的交易结果。可见,通过不同的接收chan通道可以实现并发式的交易结果监听,通过一个发送chan通道可以实现对交易请求的公平性排序,通过双向流可以实现对区块链节点的结果集的实时监听,进而使用本申请的技术方案以实现同步返回交易结果,即在监听装置将交易请求向区块链节点发送之后,就会一直监听该交易请求的交易结果,当区块链上得到达成共识的交易结果并生成区块后再返回交易结果给应用客户端,这样对该交易请求的交易结果的获取更加及时,而且不需要应用客户端不断地向区块链节点查新交易结果,起到对应用客户端能源节省的作用,又能缓解了应用客户端获得区块链交易结果的时效较差问题,用户体验效果更佳。当然本申请的区块链节点中也可以设置有相应的超时机制,即若针对某一交易请求在预设时间内区块链系统未能达成共识,则区块链节点先给对应的应用客户端发送通知,以便让应用客户端的用户从该通知中知道该交易请求已发送成功,用户体验更佳。值得注意的是,在联盟链场景下区块链交易规模已达到几万甚至数十上百万吞吐量(transactions persecond,TPS),本申请的技术方案能实现同步将交易请求上传区块链并返回结果的机制,能极大提高用户体验,更加实用化。
上边主要讲述了本申请区块链交易监听方法的实施例,请参阅图4,下面讲述本申请区块链交易监听装置的实施例,一种区块链交易监听装置,应用于区块链节点与应用客户端之间,所述监听装置包括监听交易结果模块和监听链上结果模块,其中:
所述监听交易结果模块401,用于接收所述应用客户端发送的交易请求,对所述交易请求进行封装,生成对应的交易ID;
用于创建消息发送通道和所述交易ID相对应的消息接收通道;
用于通过所述消息发送通道向所述监听链上结果模块发送所述交易请求,并监听所述交易请求对应的所述消息接收通道是否获取到交易结果;
所述监听链上结果模块402,用于获取所述消息发送通道中的所述交易请求,并将所述交易请求发送到区块链节点;
用于监听是否获取到所述区块链节点发送的交易结果集;
用于当监听获取到所述区块链节点的交易结果集时,对所述结果集进行解析,得到多个单笔交易结果;
用于根据所述交易结果的交易ID,将交易结果通过对应的消息接收通道发送给所述监听交易结果模块;
所述监听交易结果模块401,还用于当监听到所述消息接收通道获取到所述交易请求对应的交易结果时,从所述消息接收通道中取出所述交易结果,并发送到所述应用客户端。
可选地,所述监听交易结果模块401在创建消息发送通道和所述交易ID相对应的消息接收通道时,具体用于:
创建一个发送chan通道;
创建map、接收chan通道;
以所述交易ID为所述map的key,将所述接收chan通道保存至所述map;
所述监听链上结果模块402根据所述交易结果的交易ID,将交易结果通过对应的消息接收通道发送给所述监听交易结果模块时,具体包括:
根据所述交易结果的交易ID从所述map中取出对应的接收chan通道;
将所述交易结果放入所述接收chan通道。
可选地,所述监听链上结果模块402还用于:
所述监听链上结果模块402创建与区块链节点通信的grpc双向流;
所述监听链上结果模块402在将所述交易请求发送到区块链节点时,具体用于:
所述监听链上结果模块402通过所述grpc双向流将所述交易请求发送到区块链节点;
所述监听链上结果模块402在监听是否获取到所述区块链节点发送的交易结果集时,具体用于:
所述监听链上结果模块402通过所述grpc双向流监听是否获取到所述区块链节点发送的交易结果集。
可选地,在所述监听交易结果模块401还用于:
销毁所述交易结果的所述交易ID对应的所述消息接收通道。
可选地,所述监听链上结果模块402还用于:
创建访问连接池,所述访问连接池存放对所述区块链节点的访问连接;
所述监听链上结果模块在将所述交易请求发送到区块链节点时,具体用于:
使用所述访问连接将所述交易请求发送到区块链节点。
可选地,所述监听链上结果模块402创建访问连接池时,具体用于:
创建空白的连接池;
对所述连接池进行初始化,得到初始化后连接池;
对所述初始化后连接池设置最大空闲连接数;
根据所述最大空闲连接数在所述初始化后连接池中建立对所述区块链节点的访问连接,得到所述访问连接池。
可选地,所述监听链上结果模块402使用所述访问连接将所述交易请求发送到区块链节点时,具体包括:
判断所述访问连接池是否存在空闲的访问连接;
若存在,则允许使用所述访问连接将所述交易请求发送到区块链节点;
若不存在,则等待所述空闲的访问连接,当出现所述空闲的访问连接时,允许使用所述访问连接将所述交易请求发送到区块链节点;
当使用所述访问连接将所述交易请求发送到区块链节点之后,释放所述访问连接回所述访问连接池,以使得所述访问连接变回所述空闲的访问连接。
可选地,所述监听链上结果模块402使用所述访问连接将所述交易请求发送到区块链节点时,具体用于:
判断所述连接池是否存在空闲的访问连接;
若存在,则允许使用所述访问连接将所述交易请求发送到区块链节点;
若不存在,则创建新的对所述区块链节点的访问连接,允许使用所述访问连接将所述交易请求发送到区块链节点;
当使用所述访问连接将所述交易请求发送到区块链节点之后,释放所述访问连接回所述访问连接池,以使得所述访问连接变回所述空闲的访问连接。
本申请实施例中,区块链交易监听装置,应用于区块链节点与应用客户端之间的实施例所执行的操作与前述图1或图2中所执行的操作类似,在此不再进行赘述。
本申请中监听装置的监听交易结果模块通过将从应用客户端接收到的交易请求进行封装,得到唯一的交易ID,再给该交易请求创建一个接收chan通道,以该唯一的交易ID作为map的key,将接收chan通道保存至该map,实现一个交易请求对应一个接收chan通道的设置,不同的交易请求对应着不同的接收chan通道;并设置有map对不同的交易ID和不同的接收chan通道进行集合管理;不同的接收chan通道之间具有可以并发执行的特性,可以通过不同的接收chan通道实现同时监听不同交易请求的交易结果;本申请中仅有一个发送chan通道,所有进入监听装置的交易请求都需要经过该发送chan通道到达监听链上结果模块,再发送至区块链节点,仅有一个发送chan通道可以充分发挥chan通道的先进先出特性,实现对存在交易先后顺序的交易请求的公平。本申请中监听装置的监听链上结果模块通过双向流来与区块链节点通信,利用双向流的流式快速发送和接收功能,实现与区块链节点接近实时的信息共享,实现了实时监听到区块链系统在区块链节点达成共识的交易结果集;当监听链上结果模块监听并获取到该交易结果集时,解析该结果集得到大量的单笔交易结果,根据每一个交易结果的交易ID即可以从map中找到对应的接收chan通道,监听链上结果模块将该交易结果放入该接收chan通道,即可触发监听交易结果模块监听到接收chan通道存在交易结果,从而从该接收chan通道中取出该交易结果,通过交易结果的交易ID得知对应的交易请求,将该交易结果发送至对应交易请求的应用客户端,即可通过应用客户端向用户展示该交易请求对应的交易结果。可见,本申请的技术方案中以实现同步返回交易结果,即在监听装置将交易请求向区块链节点发送之后,就会一直监听该交易请求的交易结果,当区块链上得到达成共识的交易结果并生成区块后再返回交易结果给应用客户端,这样对该交易请求的交易结果的获取更加及时,而且不需要应用客户端不断地向区块链节点查新交易结果,起到对应用客户端能源节省的作用,又能缓解了应用客户端获得区块链交易结果的时效较差问题,用户体验效果更佳。当然本申请的区块链节点中也可以设置有相应的超时机制,即若针对某一交易请求在预设时间内区块链系统未能达成共识,则区块链节点先给对应的应用客户端发送通知,以便让应用客户端的用户从该通知中知道该交易请求已发送成功,用户体验更佳。值得注意的是,在联盟链场景下区块链交易规模已达到几万甚至数十上百万吞吐量(transactions per second,TPS),本申请的技术方案能实现同步将交易请求上传区块链并返回结果的机制,能极大提高用户体验,更加实用化。
下面对本申请关于区块链节点与应用客户端之间的一种计算机设备的一个实施例进行描述,请参考图5,包括:
该计算机设备500可以包括一个或一个以上中央处理器(central processingunits,CPU)501和存储器502,该存储器502中存储有一个或一个以上的应用程序或数据。其中,存储器502可以是易失性存储或持久存储。存储在存储器502的程序可以包括一个或一个以上模块,每个模块可以包括对计算机设备中的一系列指令操作。更进一步地,中央处理器501可以设置为与存储器502通信,在计算机设备500上执行存储器502中的一系列指令操作。该中央处理器501可以执行前述图1或图2所示实施例中的操作,具体此处不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-onlymemory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (11)
1.一种区块链交易监听方法,应用于区块链节点与应用客户端之间的监听装置,其特征在于,所述监听装置包括监听交易结果模块和监听链上结果模块,所述方法包括:
所述监听交易结果模块接收所述应用客户端发送的交易请求,对所述交易请求进行封装,生成对应的交易ID;
所述监听交易结果模块创建消息发送通道和所述交易ID相对应的消息接收通道;
所述监听交易结果模块通过所述消息发送通道向所述监听链上结果模块发送所述交易请求,并监听所述交易请求对应的所述消息接收通道是否获取到交易结果;
所述监听链上结果模块获取所述消息发送通道中的所述交易请求,并将所述交易请求发送到区块链节点;
所述监听链上结果模块监听是否获取到所述区块链节点发送的交易结果集;
当所述监听链上结果模块监听获取到所述区块链节点的交易结果集时,对所述结果集进行解析,得到多个单笔交易结果;
所述监听链上结果模块根据所述交易结果的交易ID,将交易结果通过对应的消息接收通道发送给所述监听交易结果模块;
当所述监听交易结果模块监听到所述消息接收通道获取到所述交易请求对应的交易结果时,从所述消息接收通道中取出所述交易结果,并发送到所述应用客户端。
2.根据权利要求1所述的区块链交易监听方法,其特征在于,所述监听交易结果模块创建消息发送通道和所述交易ID相对应的消息接收通道包括:
所述监听交易结果模块创建一个发送chan通道;
所述监听交易结果模块创建map、接收chan通道;
所述监听交易结果模块以所述交易ID为所述map的key,将所述接收chan通道保存至所述map;
所述监听链上结果模块根据所述交易结果的交易ID,将交易结果通过对应的消息接收通道发送给所述监听交易结果模块包括:
所述监听链上结果模块根据所述交易结果的交易ID从所述map中取出对应的接收chan通道;
所述监听链上结果模块将所述交易结果放入所述接收chan通道。
3.根据权利要求1所述的区块链交易监听方法,其特征在于,所述监听链上结果模块将所述交易请求发送到区块链节点之前,所述方法还包括:
所述监听链上结果模块创建与区块链节点通信的grpc双向流;
所述监听链上结果模块将所述交易请求发送到区块链节点包括:
所述监听链上结果模块通过所述grpc双向流将所述交易请求发送到区块链节点;
所述监听链上结果模块监听是否获取到所述区块链节点发送的交易结果集包括:
所述监听链上结果模块通过所述grpc双向流监听是否获取到所述区块链节点发送的交易结果集。
4.根据权利要求1所述的区块链交易监听方法,其特征在于,在所述监听交易结果模块从所述消息接收通道中取出所述交易结果,并发送到所述应用客户端之后,所述方法还包括:
所述监听交易结果模块销毁所述交易结果的所述交易ID对应的所述消息接收通道。
5.根据权利要求1所述的区块链交易监听方法,其特征在于,所述监听链上结果模块将所述交易请求发送到区块链节点之前,所述方法还包括:
所述监听链上结果模块创建访问连接池,所述访问连接池存放对所述区块链节点的访问连接;
所述监听链上结果模块将所述交易请求发送到区块链节点包括:
所述监听链上结果模块使用所述访问连接将所述交易请求发送到区块链节点。
6.根据权利要求5所述的区块链交易监听方法,其特征在于,所述监听链上结果模块创建访问连接池包括:
创建空白的连接池;
对所述连接池进行初始化,得到初始化后连接池;
对所述初始化后连接池设置最大空闲连接数;
根据所述最大空闲连接数在所述初始化后连接池中建立对所述区块链节点的访问连接,得到所述访问连接池。
7.据权利要求6所述的区块链交易监听方法,其特征在于,所述监听链上结果模块使用所述访问连接将所述交易请求发送到区块链节点包括:
判断所述访问连接池是否存在空闲的访问连接;
若存在,则允许使用所述访问连接将所述交易请求发送到区块链节点;
若不存在,则等待所述空闲的访问连接,当出现所述空闲的访问连接时,允许使用所述访问连接将所述交易请求发送到区块链节点;
当使用所述访问连接将所述交易请求发送到区块链节点之后,释放所述访问连接回所述访问连接池,以使得所述访问连接变回所述空闲的访问连接。
8.据权利要求6所述的区块链交易监听方法,其特征在于,所述监听链上结果模块使用所述访问连接将所述交易请求发送到区块链节点包括:
判断所述连接池是否存在空闲的访问连接;
若存在,则允许使用所述访问连接将所述交易请求发送到区块链节点;
若不存在,则创建新的对所述区块链节点的访问连接,允许使用所述访问连接将所述交易请求发送到区块链节点;
当使用所述访问连接将所述交易请求发送到区块链节点之后,释放所述访问连接回所述访问连接池,以使得所述访问连接变回所述空闲的访问连接。
9.一种区块链交易监听装置,应用于区块链节点与应用客户端之间,其特征在于,所述监听装置包括监听交易结果模块和监听链上结果模块,其中:
所述监听交易结果模块,用于接收所述应用客户端发送的交易请求,对所述交易请求进行封装,生成对应的交易ID;
用于创建消息发送通道和所述交易ID相对应的消息接收通道;
用于通过所述消息发送通道向所述监听链上结果模块发送所述交易请求,并监听所述交易请求对应的所述消息接收通道是否获取到交易结果;
所述监听链上结果模块,用于获取所述消息发送通道中的所述交易请求,并将所述交易请求发送到区块链节点;
用于监听是否获取到所述区块链节点发送的交易结果集;
用于当监听获取到所述区块链节点的交易结果集时,对所述结果集进行解析,得到多个单笔交易结果;
用于根据所述交易结果的交易ID,将交易结果通过对应的消息接收通道发送给所述监听交易结果模块;
所述监听交易结果模块,还用于当监听到所述消息接收通道获取到所述交易请求对应的交易结果时,从所述消息接收通道中取出所述交易结果,并发送到所述应用客户端。
10.一种计算机设备,其特征在于,包括:
处理器和存储器;
所述存储器存储有计算机程序;
所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法。
11.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有指令,所述指令在计算机上执行时,使得所述计算机执行如权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010579111.8A CN111738721B (zh) | 2020-06-23 | 2020-06-23 | 一种区块链交易监听方法以及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010579111.8A CN111738721B (zh) | 2020-06-23 | 2020-06-23 | 一种区块链交易监听方法以及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111738721A CN111738721A (zh) | 2020-10-02 |
CN111738721B true CN111738721B (zh) | 2024-07-23 |
Family
ID=72650584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010579111.8A Active CN111738721B (zh) | 2020-06-23 | 2020-06-23 | 一种区块链交易监听方法以及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111738721B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113032302A (zh) * | 2021-04-07 | 2021-06-25 | 杭州共有科技有限公司 | 一种提高链式数据仲裁性能的方法 |
CN113542231B (zh) * | 2021-06-23 | 2023-03-24 | 深圳市华海同创科技有限公司 | 通信方法、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101877100A (zh) * | 2010-03-23 | 2010-11-03 | 苏州德融嘉信信用管理技术有限公司 | 基于银行前置业务平台的多渠道接入模块及其接入方法 |
CN107358417A (zh) * | 2017-06-23 | 2017-11-17 | 现在(北京)支付股份有限公司 | 基于区块链技术的可监管的支付方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106530083B (zh) * | 2016-10-27 | 2018-06-29 | 深圳壹账通智能科技有限公司 | 基于区块链的多链管理方法及系统 |
CN107358422B (zh) * | 2017-06-23 | 2021-12-10 | 苏州缓流科技有限公司 | 基于区块链技术的支付系统 |
CN107491948B (zh) * | 2017-08-04 | 2021-12-10 | 苏州缓流科技有限公司 | 基于区块链技术的转账支付方法 |
CN107423973B (zh) * | 2017-08-04 | 2021-12-10 | 苏州缓流科技有限公司 | 基于区块链技术的用户移动终端上被动扫码的支付方法 |
CN108985757B (zh) * | 2017-11-27 | 2021-03-30 | 京东数字科技控股有限公司 | 信息处理方法、装置及系统、存储介质、电子设备 |
CN108399572A (zh) * | 2018-03-22 | 2018-08-14 | 深圳市网心科技有限公司 | 区块链交易处理方法、装置及存储介质 |
CN108924175A (zh) * | 2018-05-02 | 2018-11-30 | 北京链链信息技术有限公司 | 一种区块链间的通信方法和装置 |
CN108805704A (zh) * | 2018-05-16 | 2018-11-13 | 深圳市网心科技有限公司 | 区块链业务实现方法、监听设备、存储介质及系统 |
CN109753418B (zh) * | 2018-12-28 | 2022-07-12 | 金蝶软件(中国)有限公司 | 性能测试方法、装置、计算机设备和存储介质 |
CN110246039B (zh) * | 2019-05-15 | 2021-06-29 | 北京瑞卓喜投科技发展有限公司 | 基于联盟链的交易监测方法、装置及电子设备 |
CN110310205B (zh) * | 2019-06-28 | 2022-02-25 | 百度在线网络技术(北京)有限公司 | 一种区块链数据监控方法、装置、设备和介质 |
CN111181968B (zh) * | 2019-12-30 | 2021-09-21 | 北京金山云网络技术有限公司 | 跨区块链通信方法、装置、跨链服务系统及跨链交易系统 |
-
2020
- 2020-06-23 CN CN202010579111.8A patent/CN111738721B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101877100A (zh) * | 2010-03-23 | 2010-11-03 | 苏州德融嘉信信用管理技术有限公司 | 基于银行前置业务平台的多渠道接入模块及其接入方法 |
CN107358417A (zh) * | 2017-06-23 | 2017-11-17 | 现在(北京)支付股份有限公司 | 基于区块链技术的可监管的支付方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111738721A (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111580995B (zh) | 基于mqtt异步通信场景下的分布式云平台与物联网智能终端的同步通信方法与系统 | |
CN111738721B (zh) | 一种区块链交易监听方法以及相关装置 | |
CN108833950A (zh) | 一种弹幕消息下发方法、服务器、系统和存储介质 | |
WO2015192582A1 (zh) | 虚拟桌面登录验证方法和装置 | |
CN113676372B (zh) | 通信性能的测试方法、装置和存储介质 | |
CN109889454A (zh) | 一种微服务架构的消息推送装置及方法 | |
CN105786592A (zh) | 一种分布式事务的处理方法及装置 | |
CN101808051A (zh) | 应用整合网关及其控制方法 | |
Hou et al. | Design and implementation of application programming interface for Internet of things cloud | |
CN113342503B (zh) | 实时进度反馈方法、装置、设备及存储介质 | |
CN104468594A (zh) | 一种数据请求的方法、装置及系统 | |
CN110597783B (zh) | 数据库管理方法、装置、设备及存储介质 | |
CN111831513A (zh) | 日志查询方法、装置、电子设备、及存储介质 | |
CN111212117A (zh) | 一种远程交互的方法和装置 | |
CN109088918B (zh) | 一种交互方法、客户端设备及服务端设备 | |
CN108156253A (zh) | 一种数据传输方法、装置及系统 | |
US9614916B2 (en) | Permanent connection oriented communication using parallel single connection circuits | |
CN110932879B (zh) | 网络性能测试方法、数据处理设备和存储介质 | |
CN112104747B (zh) | 一种基于链式处理的请求响应系统 | |
CN107633069A (zh) | 一种快捷高效的数据同步方法 | |
CN108347471A (zh) | 获取第三方用户信息的方法、装置及系统 | |
CN111490997B (zh) | 任务处理方法、代理系统、服务系统和电子设备 | |
US10904357B1 (en) | Optimizing request dispatching between services | |
US10623523B2 (en) | Distributed communication and task handling to facilitate operations of application system | |
US9213735B1 (en) | Flow control in very large query result sets using a release message to confirm that a client computer is ready to receive the data associated with a data collection operation |
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 | ||
TG01 | Patent term adjustment |