本發(fā)明涉及區(qū)塊鏈技術(shù)領(lǐng)域,具體來說是一種區(qū)塊鏈智能合約定時任務(wù)調(diào)度方法。
背景技術(shù):
區(qū)塊鏈是一種按照時間順序?qū)?shù)據(jù)區(qū)塊以順序相連的方式組合成的一種鏈式數(shù)據(jù)結(jié)構(gòu),其是以密碼學方式保證的不可篡改和不可偽造,實現(xiàn)去中心化的分布式賬本。在區(qū)塊鏈技術(shù)領(lǐng)域,由于其分布式、共享數(shù)據(jù)區(qū)塊、密碼學加密、及其他安全性策略等特點,智能合約層面只提供了有限的程序定制功能,在某些業(yè)務(wù)場景下,如數(shù)據(jù)定期處理、價值定期交換、委托代付等業(yè)務(wù)處理上,區(qū)塊鏈技術(shù)應(yīng)用遇上到很大的困難。
為了解決這些困難,當前主流的解決方案是設(shè)計一個中心化的應(yīng)用程序,通過輪循調(diào)用智能合約掃描鏈上的數(shù)據(jù),并對符合條件的數(shù)據(jù)進行處理,該方案不僅時間延時較大,不能實現(xiàn)精準的時間控制,并且還增加了系統(tǒng)實現(xiàn)的復雜度,加大了開發(fā)成本。
技術(shù)實現(xiàn)要素:
本發(fā)明是針對上述的區(qū)塊鏈中任務(wù)調(diào)度的難點,提出了一種能解決周期性及指定時間點執(zhí)行智能合約的區(qū)塊鏈智能合約定時任務(wù)調(diào)度方法。
為了解決上述技術(shù)問題,本發(fā)明采用了如下的技術(shù)方案:
一種區(qū)塊鏈智能合約定時任務(wù)調(diào)度方法,所述的調(diào)度方法包括以下步驟:
A1.外部請求在區(qū)域鏈中添加定時任務(wù),配置定時任務(wù)的執(zhí)行要求,并將定時任務(wù)提交至區(qū)塊鏈處理節(jié)點;
A2.對定時任務(wù)進行分類處理,并添加到任務(wù)處理隊列;
A3.根據(jù)區(qū)塊鏈的共識機制選出區(qū)塊鏈的共識節(jié)點,共識節(jié)點獲取共識權(quán)限;
A4.當定時任務(wù)達到執(zhí)行要求時,共識節(jié)點對定時任務(wù)進行任務(wù)處理;
A5.任務(wù)處理完成后將定時任務(wù)的狀態(tài)同步到其他節(jié)點,其他節(jié)點獲取共識權(quán)限后根據(jù)定時任務(wù)的狀態(tài)對未執(zhí)行的定時任務(wù)進行下一步的任務(wù)處理。
進一步地,在所述的定時任務(wù)的調(diào)度過程中,定時任務(wù)及任務(wù)處理隊列打包到區(qū)塊中,使得定時任務(wù)、任務(wù)處理隊列及定時任務(wù)的狀態(tài)能實時同步到區(qū)域鏈中的各個節(jié)點。
進一步地,所述的任務(wù)處理的具體步驟為:
B1.刪除過期的定時任務(wù):對指定時間已經(jīng)執(zhí)行過的定時任務(wù)或指定時間已過的定時任務(wù)進行清除;
B2.提取可用的定時任務(wù):當定時任務(wù)達到執(zhí)行要求,且該定時任務(wù)在其他節(jié)點沒有被執(zhí)行過,即從任務(wù)處理隊列中提取定時任務(wù);
B3.執(zhí)行定時任務(wù):獲取可用的定時任務(wù)后,對智能合約的地址及接口的合法性進行校驗,填充執(zhí)行參數(shù),執(zhí)行定時任務(wù)指定的智能合約的函數(shù);
B4.更新定時任務(wù):根據(jù)不同定時任務(wù)執(zhí)行完后的狀態(tài)更新定時任務(wù)。
進一步地,所述的定時任務(wù)添加后,按照定時任務(wù)的時間戳大小進行排序,并按照定時任務(wù)的時間、調(diào)用類型、周期級別進行分類,生成不同優(yōu)先級的任務(wù)處理隊列。
進一步地,所述的定時任務(wù)提交到任務(wù)處理隊列后,任務(wù)處理隊列信息存儲至當前區(qū)塊所在節(jié)點,定時任務(wù)及任務(wù)處理隊列信息打包到同步區(qū)塊中,配合區(qū)塊鏈本身的塊同步機制廣播到區(qū)域鏈中的各節(jié)點。
進一步地,當節(jié)點選為共識節(jié)點時,共識節(jié)點的事件監(jiān)聽器負責對任務(wù)處理隊列中的定時任務(wù)進行任務(wù)處理,對定時任務(wù)進行事件監(jiān)測及超時監(jiān)測。
進一步地,在更新定時任務(wù)時:對于周期性的定時任務(wù),需設(shè)置定時任務(wù)的執(zhí)行狀態(tài)和執(zhí)行時間;對于有次數(shù)要求的定時任務(wù),需減少定時任務(wù)的次數(shù),并更新定時任務(wù)在任務(wù)處理隊列中的任務(wù)信息;對于一次性的定時任務(wù),直接刪除定時任務(wù)。
進一步地,所述的共識節(jié)點根據(jù)區(qū)塊鏈的共識機制選出,所述的共識機制為Pow或Pos或DPos或Pool或Raft。
在上述的一種區(qū)塊鏈智能合約定時任務(wù)調(diào)度方法中,所述的定時任務(wù)配置為每分鐘或每小時或每天或每周或每月或每年的指定周期或指定時間點或指定時間間隔或指定次數(shù)的執(zhí)行要求。
本發(fā)明由于采用以上技術(shù)方案,使之與現(xiàn)有技術(shù)相比,具有以下的優(yōu)點和積極效果:
1.定時任務(wù)可配置為周期執(zhí)行或更精確地某個時刻處理,還可配置任務(wù)一定時間間隔執(zhí)行,或指定執(zhí)行次數(shù),定時任務(wù)調(diào)度的靈活度、精確度更高,能實現(xiàn)精準的時間控制;
2.定時任務(wù)添加后,可按照定時任務(wù)的時間、調(diào)用類型、周期級別進行排序分類,從而生成不同優(yōu)先級的任務(wù)處理隊列,提高了后續(xù)任務(wù)處理的效率,實現(xiàn)了準確、高效的任務(wù)處理;
3.定時任務(wù)及任務(wù)處理隊列、定時任務(wù)狀態(tài)能實時同步到其他節(jié)點上,保證各個節(jié)點上都有機會觸發(fā)定時任務(wù),使得所有節(jié)點都能平等地具備定時任務(wù)的任務(wù)處理能力;
4.定時任務(wù)能夠在任意一個節(jié)點中執(zhí)行,不限定于定時任務(wù)的發(fā)布節(jié)點,在區(qū)塊鏈各個節(jié)點相互競爭獲取共識權(quán)限后即可對定時任務(wù)進行處理,各節(jié)點之間沒有優(yōu)先級別區(qū)分,使得節(jié)點處理定時任務(wù)時具有任意性的特點;
5.定時任務(wù)的一次任務(wù)處理只能在區(qū)塊鏈的某一個節(jié)點中,不能一次處理任務(wù)對應(yīng)的一個時間點或一個時間周期內(nèi)處理多次,定時任務(wù)處理過程具有排他性;
6.能對定時任務(wù)進行添加、刪除、提取、執(zhí)行等任務(wù)處理,定時任務(wù)具有執(zhí)行狀態(tài),在每次定時任務(wù)完成后,針對不同類型的定時任務(wù)更新定時任務(wù)的狀態(tài),使得能夠通過定時任務(wù)的狀態(tài)確定是否定時任務(wù)處理過。
附圖說明
圖1為本發(fā)明的調(diào)度流程示意圖;
圖2為本發(fā)明中的定時任務(wù)添加、分類、同步的過程示意圖;
圖3為本發(fā)明中任務(wù)處理的流程示意圖。
具體實施方式
以下結(jié)合附圖和具體實施例對本發(fā)明提出的技術(shù)方案進一步詳細說明。根據(jù)下面說明和權(quán)利要求書,本發(fā)明的優(yōu)點和特征將更清楚。需說明的是,附圖均采用非常簡化的形式且均使用非精準的比率,僅用于方便、明晰地輔助說明本發(fā)明實施例的目的。
本發(fā)明是針對區(qū)域鏈的定時業(yè)務(wù)調(diào)度問題,如多樣化的應(yīng)用場景下的代付、資產(chǎn)委托、定期核算等業(yè)務(wù),在當前主流的區(qū)塊鏈技術(shù)中,缺乏一種定期、定時觸發(fā)智能合約的任務(wù)調(diào)度方法,因此,本發(fā)明設(shè)計了區(qū)塊鏈智能合約定時任務(wù)調(diào)度方法,解決了區(qū)塊鏈智能合約定期、定時觸發(fā)的問題。在本發(fā)明中對外以智能合約的形式提供管理接口,同時提供完善的時間調(diào)度策略,定時任務(wù)可配置為周期執(zhí)行或更精確地某個時刻處理,還可配置任務(wù)一定時間間隔執(zhí)行,或指定執(zhí)行次數(shù),定時任務(wù)調(diào)度的靈活度、精確度更高,能實現(xiàn)精準的時間控制,現(xiàn)配合說明書附圖對本發(fā)明的工作流程進行進一步陳述。
實施例1
參見圖1,本調(diào)度方法主要能實現(xiàn):外部請求通過使用智能合約管理接口添加定時任務(wù),定時任務(wù)可配置為每分鐘或每小時或每天或每周或每月或每年的指定周期或指定時間點或指定時間間隔或指定次數(shù)的執(zhí)行要求;任務(wù)進行分類處理,并放置到定時任務(wù)處理隊列;在調(diào)度的過程中,節(jié)點將定時任務(wù)打包在新的區(qū)塊中,通過區(qū)塊節(jié)點之間的同步機制廣播到區(qū)塊鏈其它節(jié)點,使得所有節(jié)點都能平等地具備定時任務(wù)的任務(wù)處理能力;事件監(jiān)聽器執(zhí)行事件監(jiān)測、超時監(jiān)測,并對符合條件的任務(wù)進行處理,然后更新任務(wù)狀態(tài),具體包括以下步驟:
1.外部請求在區(qū)域鏈中添加定時任務(wù),配置定時任務(wù)的執(zhí)行要求,并將定時任務(wù)提交至區(qū)塊鏈處理節(jié)點;
2.對定時任務(wù)進行分類處理,并生成任務(wù)處理隊列;
3.根據(jù)區(qū)塊鏈的共識機制選出區(qū)塊鏈的共識節(jié)點,共識節(jié)點獲取共識權(quán)限;
4.當定時任務(wù)達到執(zhí)行要求時,即滿足觸發(fā)提交條件時,共識節(jié)點對定時任務(wù)進行任務(wù)處理;
5.任務(wù)處理完成后將定時任務(wù)的狀態(tài)同步到其他節(jié)點,其他節(jié)點獲取共識權(quán)限后根據(jù)定時任務(wù)的狀態(tài),對未執(zhí)行的定時任務(wù)進行下一步的任務(wù)處理。
現(xiàn)針對不同的處理步驟進行具體陳述,本發(fā)明中的調(diào)度方法大致分為任務(wù)提交過程及任務(wù)調(diào)度處理過程:
任務(wù)提交過程參見圖2,其主要包括添加定時任務(wù)、對定時任務(wù)進行分類及對定時任務(wù)進行同步。
添加定時任務(wù):外部調(diào)用請求通過管理接口在區(qū)域鏈中添加定時任務(wù),在區(qū)域鏈中,管理接口多以智能合約形式提供,以便外部能通過在智能合約中調(diào)用并使用這些管理接口,一般由類似solidity內(nèi)置函數(shù)提供,之后將定時任務(wù)提交至區(qū)塊鏈處理節(jié)點,并配置定時任務(wù)的執(zhí)行要求,如每分鐘對任務(wù)處理兩次等。
對定時任務(wù)進行分類:定時任務(wù)添加進來后,按定時任務(wù)的時間戳大小進行排序,并且按照定時任務(wù)的調(diào)用類型、周期級別進行任務(wù)分類,從而生成不同優(yōu)先級的任務(wù)處理隊列,保證調(diào)取定時任務(wù)的過程能高效執(zhí)行。
定時任務(wù)同步:區(qū)塊鏈作為一個P2P網(wǎng)絡(luò)構(gòu)成的系統(tǒng),此時區(qū)塊鏈的其他節(jié)點不包含任務(wù)處理隊列,不具備智能任務(wù)執(zhí)行基本條件,為了使得所有的節(jié)點都能夠平等地具備定時任務(wù)的執(zhí)行能力,任務(wù)處理隊列信息需要進行同步,單個處理節(jié)點需將定時任務(wù)、任務(wù)處理隊列及定時任務(wù)狀態(tài)同步到各個節(jié)點,保證各個節(jié)點上都有機會觸發(fā)定時任務(wù),使得所有節(jié)點都能平等地具備定時任務(wù)的任務(wù)處理能力。定時任務(wù)提交到任務(wù)處理隊列后,任務(wù)處理隊列信息存儲至當前區(qū)塊所在節(jié)點,并將定時任務(wù)、任務(wù)信息及交易信息等打包到同步區(qū)塊中,并配合區(qū)塊鏈本身的塊同步機制廣播到其他節(jié)點,保證任務(wù)處理隊列及定時任務(wù)同步到各個節(jié)點,以達到執(zhí)行節(jié)點的任意性目的、同步性。
在任務(wù)提交完成之后,需對定時任務(wù)進行調(diào)度及處理,其處理流程請參見圖3,具體為:
選出共識節(jié)點:在實時更新各節(jié)點的定時任務(wù)過程中,節(jié)點處理定時任務(wù)時具有任意性,即定時任務(wù)能夠在任意一個節(jié)點中執(zhí)行,不限定于定時任務(wù)的發(fā)布節(jié)點,但區(qū)塊鏈中的各個節(jié)點需相互競爭獲取共識權(quán)限后才可對定時任務(wù)進行處理。共識節(jié)點的選出是根據(jù)區(qū)塊鏈的共識機制。由于點對點網(wǎng)絡(luò)下存在較高的網(wǎng)絡(luò)延遲,各個節(jié)點所觀察到的事務(wù)先后順序不可能完全一致。因此區(qū)塊鏈采用共識機制對一個時間窗口內(nèi)的事務(wù)的先后順序達成共識的。共識機制多采用Pow或Pos或DPos或Pool或Raft,當然,共識機制的選定是根據(jù)具體應(yīng)用模式及應(yīng)用范圍進行選擇,在本實施例中不做具體限定。
當節(jié)點選為共識節(jié)點后,共識節(jié)點的事件監(jiān)聽器負責對任務(wù)處理隊列中的定時任務(wù)進行任務(wù)處理,對定時任務(wù)進行事件監(jiān)測及超時監(jiān)測,如負責隊列中清除過期的任務(wù)(如果有),提取可用定時任務(wù),執(zhí)行定時任務(wù),更新定時任務(wù)或刪除定時任務(wù)。由于聯(lián)盟鏈的共識節(jié)點不存在并行記賬,所以定時任務(wù)不會同時執(zhí)行多次。
任務(wù)處理的具體步驟為:
1)刪除過期的定時任務(wù):節(jié)點獲取到共識權(quán)限后,對指定時間已經(jīng)執(zhí)行過的定時任務(wù)或指定時間已過的定時任務(wù)進行優(yōu)先清除,保留有效的定時任務(wù),以盡量保證任務(wù)處理的高效性;
2)提取可用的定時任務(wù):當定時任務(wù)達到執(zhí)行要求,即達到配置定時任務(wù)的執(zhí)行時間或執(zhí)行次數(shù),且該定時任務(wù)在其他節(jié)點沒有被執(zhí)行過,即從任務(wù)處理隊列中提取定時任務(wù);
3)執(zhí)行定時任務(wù):獲取可用的定時任務(wù)后,對智能合約的地址及接口的合法性進行校驗,填充執(zhí)行參數(shù),執(zhí)行任務(wù)指定的智能合約的函數(shù);
4)更新定時任務(wù):根據(jù)不同定時任務(wù)執(zhí)行完后的狀態(tài)更新定時任務(wù),如:對于周期性的定時任務(wù),需設(shè)置定時任務(wù)的執(zhí)行狀態(tài)和執(zhí)行時間;對于有次數(shù)要求的定時任務(wù),需減少定時任務(wù)的次數(shù),并更新定時任務(wù)在任務(wù)處理隊列中的任務(wù)信息;對于一次性的定時任務(wù),直接刪除定時任務(wù)。
顯然,本領(lǐng)域的技術(shù)人員可以對發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。