本發(fā)明涉及區(qū)塊鏈技術(shù)領(lǐng)域,更具體的,涉及一種區(qū)塊鏈的跨鏈操作方法及區(qū)塊鏈管理系統(tǒng)。
背景技術(shù):
區(qū)塊鏈?zhǔn)且环N使用共識機制的分布式數(shù)據(jù)存儲技術(shù),具有去中心化,不可篡改,可以運行智能合約等特性。區(qū)塊鏈技術(shù)的出現(xiàn)為數(shù)據(jù)存儲提供了新的解決方案。
為了保護機構(gòu)內(nèi)部數(shù)據(jù)和避免數(shù)據(jù)泄漏,很多機構(gòu)都運行著自己的區(qū)塊鏈。而對于跨機構(gòu)的區(qū)塊鏈操作,傳統(tǒng)的方法是在所有參與機構(gòu)間部署聯(lián)盟鏈(或者私有鏈)。這樣雖然可以解決多機構(gòu)間的數(shù)據(jù)操作的問題,但是由于機構(gòu)間的業(yè)務(wù)邏輯不同,數(shù)據(jù)格式的差異等,替換機構(gòu)各自的區(qū)塊鏈而部署新的聯(lián)盟鏈的實施代價大。由于區(qū)塊鏈的數(shù)據(jù)存在于系統(tǒng)中的每個節(jié)點中,一些對于數(shù)據(jù)隱私要求高,且對安全敏感的機構(gòu)并不愿意把數(shù)據(jù)部署在聯(lián)盟鏈上,這些機構(gòu)使用的還是各自的私有鏈。私有鏈的孤立性阻礙了不同區(qū)塊鏈之間的協(xié)同操作,所以區(qū)塊鏈之間的跨鏈協(xié)作問題成為了區(qū)塊鏈技術(shù)發(fā)展面臨的一個主要問題。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明提供了一種區(qū)塊鏈的跨鏈操作方法及區(qū)塊鏈管理系統(tǒng),通過將參與跨鏈操作的各個機構(gòu)提供的各自區(qū)塊鏈的資源鎖操作、原始操作和逆操作進行封裝,保證了跨鏈操作的原子性(atomicity),一致性(consistency),隔離性(isolation)和持久性(durability),即:acid,使得各個機構(gòu)在保留原有區(qū)塊鏈系統(tǒng)的情況下就能實現(xiàn)跨鏈操作。區(qū)塊鏈管理系統(tǒng)可以通過所述的跨鏈操作對區(qū)塊鏈進行管理和控制。
具體技術(shù)方案如下:
一種區(qū)塊鏈的跨鏈操作方法,應(yīng)用于區(qū)塊鏈管理系統(tǒng),所述方法包括:
獲取參與跨鏈操作的各個機構(gòu)提供的各自區(qū)塊鏈的操作信息,所述操作信息包括:資源鎖操作、原始操作,以及與所述原始操作對應(yīng)的逆操作;
按照所述跨鏈操作的業(yè)務(wù)邏輯,確定各個所述操作信息中的多個原始操作的執(zhí)行順序;
執(zhí)行各個所述資源鎖操作,對參與所述跨鏈操作的各個機構(gòu)的資源進行鎖定;
按照所述跨鏈操作中的各個所述原始操作的執(zhí)行順序,依次執(zhí)行各個所述原始操作,在各個所述原始操作的執(zhí)行過程中判斷是否滿足跨鏈操作失敗條件;
若滿足,執(zhí)行與已執(zhí)行的所述原始操作相對應(yīng)的逆操作,當(dāng)所有的逆操作都執(zhí)行完畢時,執(zhí)行解鎖操作釋放已鎖定的資源;
若不滿足,當(dāng)所述跨鏈操作中的所有原始操作都執(zhí)行完畢時,執(zhí)行解鎖操作釋放已鎖定的資源。
優(yōu)選的,所述資源鎖操作包括資源鎖定范圍,所述資源鎖定范圍為參與所述跨鏈操作的機構(gòu)中的交易方所擁有的所有資源,或參與所述跨鏈操作的機構(gòu)中的交易方中只涉及所述跨鏈操作的資源。
可選的,所述資源鎖操作包括資源鎖定時效;
所述跨鏈操作失敗條件為當(dāng)前執(zhí)行跨鏈操作的時間大于各個所述機構(gòu)中任一機構(gòu)的資源鎖定時效。
可選的,所述跨鏈操作失敗條件為接收到各個所述機構(gòu)中任一機構(gòu)的操作失敗信息。
優(yōu)選的,所述執(zhí)行與已執(zhí)行的原始操作相對應(yīng)的逆操作,包括:
當(dāng)所述已執(zhí)行的原始操作的數(shù)量為1時,直接執(zhí)行與已執(zhí)行的原始操作相對應(yīng)的逆操作;
當(dāng)所述已執(zhí)行的原始操作的數(shù)量大于1時,獲取已執(zhí)行的各個原始操作的執(zhí)行順序的倒序,并按照所述倒序依次執(zhí)行與各個所述原始操作相對應(yīng)的逆操作。
優(yōu)選的,所述方法還包括:
按照所述跨鏈操作的各個所述資源鎖操作、所述原始操作和/或與所述原始操作相對應(yīng)的逆操作的執(zhí)行順序,將所述跨鏈操作的各個所述資源鎖操作、所述原始操作和/或與所述原始操作相對應(yīng)的逆操作,以及各個操作的執(zhí)行狀態(tài)記錄在日志鏈中,所述執(zhí)行狀態(tài)包括:執(zhí)行成功和執(zhí)行失敗。
優(yōu)選的,所述日志鏈為一個區(qū)塊鏈系統(tǒng)。
優(yōu)選的,所述獲取已執(zhí)行的各個原始操作的執(zhí)行順序的倒序,并按照所述倒序依次執(zhí)行與各個所述原始操作相對應(yīng)的逆操作,包括:
從所述日志鏈中獲取已執(zhí)行的各個所述原始操作的執(zhí)行順序和執(zhí)行狀態(tài);
根據(jù)已執(zhí)行的各個所述原始操作的執(zhí)行順序確定已執(zhí)行的各個所述原始操作的倒序;
按照已執(zhí)行的各個所述原始操作的倒序,依次執(zhí)行與各個所述原始操作相對應(yīng)的逆操作。
優(yōu)選的,所述方法還包括:
接收用戶對日志鏈的查詢請求,根據(jù)所述用戶的權(quán)限和所述查詢請求在所述日志鏈中對已執(zhí)行的跨鏈操作進行查詢,并將查詢結(jié)果發(fā)送至所述用戶。
一種區(qū)塊鏈管理系統(tǒng),包括:
獲取單元,用于獲取參與跨鏈操作的各個機構(gòu)提供的各自區(qū)塊鏈的操作信息,所述操作信息包括:資源鎖操作、原始操作,以及與所述原始操作對應(yīng)的逆操作;
確定單元,用于按照所述跨鏈操作的業(yè)務(wù)邏輯,確定各個所述操作信息中的多個原始操作的執(zhí)行順序;
鎖定單元,用于執(zhí)行各個所述資源鎖操作,對參與所述跨鏈操作的各個機構(gòu)所需的資源進行鎖定;
第一執(zhí)行單元,用于按照所述跨鏈操作中的各個所述原始操作的執(zhí)行順序,依次執(zhí)行各個所述原始操作,在各個所述原始操作的執(zhí)行過程中判斷是否滿足跨鏈操作失敗條件;若滿足,觸發(fā)第二執(zhí)行單元;若不滿足,觸發(fā)第三執(zhí)行單元;
所述第二執(zhí)行單元,用于執(zhí)行與已執(zhí)行的所述原始操作相對應(yīng)的逆操作,當(dāng)所有的逆操作都執(zhí)行完畢時,執(zhí)行解鎖操作釋放已鎖定的資源;
所述第三執(zhí)行單元,用于當(dāng)所述跨鏈操作中的所有原始操作都執(zhí)行完畢時,執(zhí)行解鎖操作釋放已鎖定的資源。
優(yōu)選的,所述區(qū)塊鏈管理系統(tǒng)還包括:
記錄單元,用于按照所述跨鏈操作的各個所述資源鎖操作、所述原始操作和/或與所述原始操作相對應(yīng)的逆操作的執(zhí)行順序,將所述跨鏈操作的各個所述資源鎖操作、所述原始操作和/或與所述原始操作相對應(yīng)的逆操作,以及各個操作的執(zhí)行狀態(tài)記錄在日志鏈中,所述執(zhí)行狀態(tài)包括:執(zhí)行成功和執(zhí)行失敗。
優(yōu)選的,所述區(qū)塊鏈管理系統(tǒng)還包括:
查詢單元,用于接收用戶對日志鏈的查詢請求,根據(jù)所述用戶的權(quán)限和所述查詢請求在所述日志鏈中對已執(zhí)行的跨鏈操作進行查詢,并將查詢結(jié)果發(fā)送至所述用戶。
相對于現(xiàn)有技術(shù),本發(fā)明的有益效果如下:
本發(fā)明提供的區(qū)塊鏈的跨鏈操作方法及區(qū)塊鏈管理系統(tǒng),參與跨鏈操作的機構(gòu)只需提供各自區(qū)塊鏈的資源鎖操作、原始操作和逆操作,使得各個機構(gòu)在保持原有區(qū)塊鏈系統(tǒng)的情況下就能實現(xiàn)跨鏈操作,最小化了參與機構(gòu)在實現(xiàn)跨鏈操作需要付出的代價,增強了本發(fā)明的實用性,且參與機構(gòu)的現(xiàn)有的業(yè)務(wù)邏輯和數(shù)據(jù)結(jié)構(gòu)無需變動,從而保證了參與機構(gòu)數(shù)據(jù)的獨立性。
本發(fā)明通過執(zhí)行資源鎖操作,對參與跨鏈操作的各個機構(gòu)的資源進行鎖定,有效的防止了資源競爭問題。
本發(fā)明在各個原始操作的執(zhí)行過程中,若滿足跨鏈操作失敗條件,執(zhí)行與已執(zhí)行的所述原始操作相對應(yīng)的逆操作,并按照所述資源鎖定范圍執(zhí)行解鎖操作釋放已鎖定的資源,以“復(fù)原”已消耗的資源,使得參與跨鏈操作的相關(guān)資源可以“回滾”到執(zhí)行跨鏈操作之前的狀態(tài),從而保證了跨鏈操作的原子性、一致性、獨立性和持久性。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實施例一公開的一種區(qū)塊鏈的跨鏈操作方法流程圖;
圖2為本發(fā)明實施例三公開的一種區(qū)塊鏈管理系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
實施例一
請參閱圖1,本實施例公開了一種區(qū)塊鏈的跨鏈操作方法,應(yīng)用于區(qū)塊鏈管理系統(tǒng),具體包括以下步驟:
s101:獲取參與跨鏈操作的各個機構(gòu)提供的各自區(qū)塊鏈的操作信息,所述操作信息包括:資源鎖操作、原始操作,以及與所述原始操作對應(yīng)的逆操作;
跨鏈操作是指在多個區(qū)塊鏈之間進行的操作,跨鏈操作是將分散著的區(qū)塊鏈孤島連接起來的橋梁,常見的跨鏈操作是不同區(qū)塊鏈之間的資源訪問和資源轉(zhuǎn)移等操作,本實施例提供的區(qū)塊鏈的跨鏈操作方法適用于所有區(qū)塊鏈,包括同構(gòu)或異構(gòu)區(qū)塊鏈、私有鏈、聯(lián)盟鏈和公有鏈等。
跨鏈操作可能涉及多個參與機構(gòu),每個參與機構(gòu)都有各自的區(qū)塊鏈??珂湶僮骺赡苌婕岸鄠€原始操作,在一個跨鏈操作中,每個參與機構(gòu)都可能涉及若干個原始操作。
各個機構(gòu)提供的各自區(qū)塊鏈的操作信息包括:資源鎖操作、原始操作,以及與所述原始操作對應(yīng)的逆操作。其中,逆操作是相對于原始操作來說的,例如,跨鏈操作可能涉及交易和查詢等操作,以從a鏈的a賬戶轉(zhuǎn)移數(shù)量50到b鏈的b賬戶為例,即:froma.atob.bamount50,其中,大寫的a表示鏈名,小寫的a表示交易方。在鏈a上,原始操作等價于將a賬戶的賬本減少50,與原始操作相對應(yīng)的逆操作則為a賬戶增加50;同理,在鏈b上,原始操作為對b賬戶的賬本增加50,逆操作則為b賬戶減少50。當(dāng)原始操作為不改變數(shù)據(jù)的操作的時候(例如:查詢操作)是沒有對應(yīng)的逆操作的。
參與跨鏈操作的機構(gòu)只需提供各自區(qū)塊鏈的資源鎖操作、原始操作,以及與所述原始操作對應(yīng)的逆操作,使各個機構(gòu)在保持原有區(qū)塊鏈系統(tǒng)的情況下就能實現(xiàn)跨鏈操作,最小化了參與機構(gòu)在實現(xiàn)跨鏈操作需要付出的代價,增強了本發(fā)明的實用性。
s102:按照所述跨鏈操作的業(yè)務(wù)邏輯,確定各個所述操作信息中的多個原始操作的執(zhí)行順序;
按照所述業(yè)務(wù)邏輯,可以將跨鏈操作分解為有順序的多個原始操作。
s103:執(zhí)行各個所述資源鎖操作,對參與所述跨鏈操作的各個機構(gòu)的資源進行鎖定;
跨鏈操作可能涉及多種資源,在執(zhí)行跨鏈操作時將跨鏈操作涉及的各種資源鎖定在所述跨鏈操作中,保證跨鏈操作涉及的各種資源只在跨鏈操作中使用,防止資源競爭問題。
優(yōu)選的,所述資源鎖操作包括資源鎖定范圍。
所述資源鎖定范圍為參與所述跨鏈操作的機構(gòu)中的交易方所擁有的所有資源,或參與所述跨鏈操作的機構(gòu)中的交易方中只涉及所述跨鏈操作的資源。
為了對所述資源鎖定范圍做進一步說明,現(xiàn)舉例說明如下:
參與跨鏈操作的機構(gòu)包括a、b、c,每個參與機構(gòu)中可以包括多個交易方,其中,參與機構(gòu)a中在所述跨鏈操作中的交易方a所擁有的全部資源為1000,所述跨鏈操作中交易方a涉及的資源為50。根據(jù)參與機構(gòu)的需要,參與機構(gòu)a在提供資源鎖定范圍時,資源鎖定范圍可以為交易方a所擁有的全部資源為1000,也可以為所述跨鏈操作中交易方a涉及的資源為50。
若資源鎖定范圍為參與所述跨鏈操作的機構(gòu)中交易方所擁有的所有資源,這種鎖定資源的方式實現(xiàn)最為簡單,但是由于交易方的資源全部被鎖定,參與所述跨鏈操作的機構(gòu)必須等待跨鏈操作結(jié)束,資源被釋放后才能再次使用相關(guān)資源。
若資源鎖定范圍為參與所述跨鏈操作的機構(gòu)中的交易方中只涉及所述跨鏈操作的資源,相對于上述鎖定資源的方式,這種鎖定資源的方式需要先構(gòu)建相關(guān)資源(如上述例子中的50),再對資源進行鎖定,實現(xiàn)較為復(fù)雜,但是參與所述跨鏈操作的機構(gòu)能使用跨鏈操作涉及的資源外的其他資源進行其他操作,使資源使用更加靈活。
當(dāng)然,下面資源解鎖的范圍是根據(jù)資源鎖定范圍而定的。
s104:按照所述跨鏈操作中的各個所述原始操作的執(zhí)行順序,依次執(zhí)行各個所述原始操作,在各個所述原始操作的執(zhí)行過程中判斷是否滿足跨鏈操作失敗條件;若是,執(zhí)行s105;若否,執(zhí)行s106;
本實施例中,導(dǎo)致操作失敗有兩種條件,其中一種跨鏈操作失敗條件為接收到各個所述機構(gòu)中任一機構(gòu)的操作失敗信息。跨鏈操作涉及多個參與機構(gòu),雖然每個機構(gòu)可以確定自己操作成功或失敗,但是卻無法知道其他機構(gòu)的操作成功或失敗,但是只要各個參與機構(gòu)中任一機構(gòu)的任一原始操作失敗,跨鏈操作就操作失敗,所以本實施例引入二階段提交算法(doublecommit),以區(qū)塊鏈管理系統(tǒng)為第三方充當(dāng)“協(xié)調(diào)者”的角色,參與機構(gòu)充當(dāng)“參與者”的角色,區(qū)塊鏈管理系統(tǒng)可以根據(jù)參與機構(gòu)的原始操作的成功和失敗信息,指導(dǎo)跨鏈操作。
可選的,s101中各個機構(gòu)提供的各自區(qū)塊鏈的資源鎖操作還包括資源鎖定時效,資源鎖定時效是參與機構(gòu)允許資源被鎖定的最大時間,資源鎖定時效由跨鏈操作的原始操作來決定,可以理解的是,當(dāng)跨鏈操作包括的原始操作數(shù)量較多且操作復(fù)雜時,需要的資源鎖定時效可能較長。因此,參與機構(gòu)可以根據(jù)跨鏈操作的業(yè)務(wù)邏輯自行確定資源鎖定時效,并將確定的資源鎖定時效提供給區(qū)塊鏈管理系統(tǒng)。
在操作信息包括資源鎖定時效的基礎(chǔ)上,另外一種跨鏈操作失敗條件為當(dāng)前執(zhí)行跨鏈操作的時間大于各個所述機構(gòu)中任一機構(gòu)的資源鎖定時效。也就是說,區(qū)塊鏈管理系統(tǒng)會實時對當(dāng)前執(zhí)行跨鏈操作的時間進行檢測,當(dāng)前執(zhí)行跨鏈操作的時間只要大于參與機構(gòu)中任一機構(gòu)提供的資源鎖定時效時,跨鏈操作失敗。
s105:執(zhí)行與已執(zhí)行的所述原始操作相對應(yīng)的逆操作,當(dāng)所有的逆操作都執(zhí)行完畢時,執(zhí)行解鎖操作釋放已鎖定的資源;
需要說明的是,當(dāng)所述已執(zhí)行的原始操作的數(shù)量為1時,直接執(zhí)行與已執(zhí)行的原始操作相對應(yīng)的逆操作;
當(dāng)所述已執(zhí)行的原始操作的數(shù)量大于1時,獲取已執(zhí)行的各個原始操作的倒序,并按照所述倒序依次執(zhí)行與各個所述原始操作相對應(yīng)的逆操作。
當(dāng)所有的逆操作都執(zhí)行完畢時,執(zhí)行解鎖操作釋放已鎖定的資源。
可以理解的是,在各個原始操作的執(zhí)行過程中,若滿足跨鏈操作失敗條件,執(zhí)行與已執(zhí)行的所述原始操作相對應(yīng)的逆操作,并執(zhí)行解鎖操作釋放已鎖定的資源,以“復(fù)原”已消耗的資源,使得跨鏈操作中所涉及的資源可以“回滾”到執(zhí)行跨鏈操作之前的狀態(tài),從而保證了跨鏈操作的原子性。
s106:當(dāng)所述跨鏈操作中的所有原始操作都執(zhí)行完畢時,執(zhí)行解鎖操作釋放已鎖定的資源。
需要說明的是,在實現(xiàn)跨鏈操作時,各個參與機構(gòu)現(xiàn)有的區(qū)塊鏈系統(tǒng)還可以正常運行,參與機構(gòu)在訪問自己區(qū)塊鏈執(zhí)行操作時,完全獨立于其他參與機構(gòu)的區(qū)塊鏈系統(tǒng),只有少數(shù)被鎖定的資源會受到限制,但是同時參與跨鏈操作的機構(gòu)可以自行定義資源鎖定的時效和范圍,這種機制最大程度的保證了資源使用的靈活性,而其余資源并不會受到跨鏈操作或者其他參與機構(gòu)的影響,從而保證了多個區(qū)塊鏈系統(tǒng)之間業(yè)務(wù)的獨立性。
本實施例提供的區(qū)塊鏈的跨鏈操作方法,參與跨鏈操作的機構(gòu)只需提供各自區(qū)塊鏈的資源鎖操作、原始操作和逆操作,使得各個機構(gòu)在保持原有區(qū)塊鏈系統(tǒng)的情況下就能實現(xiàn)跨鏈操作,最小化了參與機構(gòu)在實現(xiàn)跨鏈操作需要付出的代價,增強了本發(fā)明的實用性,且參與機構(gòu)的所有業(yè)務(wù)邏輯和數(shù)據(jù)結(jié)構(gòu)都無需變動,從根本上保證了參與機構(gòu)數(shù)據(jù)的獨立性。
本實施例按照參與跨鏈操作的機構(gòu)提供的資源鎖操作,對參與跨鏈操作的各個機構(gòu)的資源進行鎖定,有效的防止了資源競爭問題;在各個原始操作的執(zhí)行過程中,若滿足跨鏈操作失敗條件,執(zhí)行與已執(zhí)行的所述原始操作相對應(yīng)的逆操作,然后執(zhí)行解鎖操作釋放已鎖定的資源,以“復(fù)原”已消耗的資源,使得跨鏈操作所涉及的資源可以“回滾”到執(zhí)行跨鏈操作之前的狀態(tài),從而保證了跨鏈操作的原子性。
實施例二
在實施例一的基礎(chǔ)上,本實施例公開的區(qū)塊鏈的跨鏈操作方法還包括:
按照所述跨鏈操作的各個所述資源鎖操作、所述原始操作和/或與所述原始操作相對應(yīng)的逆操作的執(zhí)行順序,將所述跨鏈操作的各個所述資源鎖操作、所述原始操作和/或與所述原始操作相對應(yīng)的逆操作,以及各個操作的執(zhí)行狀態(tài)記錄在日志鏈中,所述執(zhí)行狀態(tài)包括:執(zhí)行成功和執(zhí)行失敗。
需要說明的是,日志鏈?zhǔn)且粋€區(qū)塊鏈系統(tǒng),日志鏈中只記錄跨鏈操作中的各個所述資源鎖資源、所述原始操作和/或與所述原始操作相對應(yīng)的逆操作的執(zhí)行順序,各個所述原始操作和/或與所述原始操作相對應(yīng)的逆操作,以及各個操作的執(zhí)行狀態(tài),而具體數(shù)據(jù)記錄在參與機構(gòu)的區(qū)塊鏈上,即,日志鏈只記錄操作和狀態(tài),而參與跨鏈操作的機構(gòu)的區(qū)塊鏈記錄結(jié)果。所以不能從日志鏈中獲取或改動參與機構(gòu)的任何數(shù)據(jù),從而保證了參與機構(gòu)的區(qū)塊鏈在根本上是隔離的,不會存在數(shù)據(jù)泄露的問題,保證了數(shù)據(jù)的安全性和隱私性。
基于上述的日志鏈記錄操作,實施例一中,“獲取已執(zhí)行的各個原始操作的倒序,并按照所述倒序依次執(zhí)行與各個所述原始操作相對應(yīng)的逆操作”,包括:
從所述日志鏈中獲取已執(zhí)行的各個所述原始操作的執(zhí)行順序和執(zhí)行狀態(tài);
根據(jù)已執(zhí)行的各個所述原始操作的執(zhí)行順序確定已執(zhí)行的各個所述原始操作的倒序;
按照已執(zhí)行的各個所述原始操作的倒序,依次執(zhí)行與各個所述原始操作相對應(yīng)的逆操作。
還需要說明的是,基于上述日志鏈記錄操作,本實施例公開的區(qū)塊鏈的跨鏈操作方法還包括:
接收用戶對日志鏈的查詢請求,根據(jù)所述用戶的權(quán)限和所述查詢請求在所述日志鏈中對已執(zhí)行的跨鏈操作進行查詢,并將查詢結(jié)果發(fā)送至所述用戶。
這里的用戶可以是參與機構(gòu)中的人員,參與機構(gòu)可以通過日志鏈查詢跨鏈操作中涉及到參與機構(gòu)的操作。而非直接參與跨鏈操作的機構(gòu)或用戶訪問日志鏈的權(quán)限是由參與跨鏈操作的參與機構(gòu)共同決定的。
實施例三
基于上述實施例公開的區(qū)塊鏈的跨鏈操作方法,請參閱圖2,本實施例對應(yīng)公開一種區(qū)塊鏈管理系統(tǒng),包括:
獲取單元101,用于獲取參與跨鏈操作的各個機構(gòu)提供的各自區(qū)塊鏈的操作信息,所述操作信息包括:資源鎖操作、原始操作,以及與所述原始操作對應(yīng)的逆操作;
確定單元102,用于按照所述跨鏈操作的業(yè)務(wù)邏輯,確定各個所述操作信息中的多個原始操作的執(zhí)行順序;
鎖定單元103,用于執(zhí)行各個所述資源鎖操作,對參與所述跨鏈操作的各個機構(gòu)所需的資源進行鎖定;
第一執(zhí)行單元104,用于按照所述跨鏈操作中的各個所述原始操作的執(zhí)行順序,依次執(zhí)行各個所述原始操作,在各個所述原始操作的執(zhí)行過程中判斷是否滿足跨鏈操作失敗條件;若滿足,觸發(fā)第二執(zhí)行單元105;若不滿足,觸發(fā)第三執(zhí)行單元106;
所述第二執(zhí)行單元105,用于執(zhí)行與已執(zhí)行的所述原始操作相對應(yīng)的逆操作,當(dāng)所有的逆操作都執(zhí)行完畢時,執(zhí)行解鎖操作釋放已鎖定的資源;
所述第三執(zhí)行單元106,用于當(dāng)所述跨鏈操作中的所有原始操作都執(zhí)行完畢時,執(zhí)行解鎖操作釋放已鎖定的資源。
優(yōu)選的,所述區(qū)塊鏈管理系統(tǒng)還包括:
記錄單元,用于按照所述跨鏈操作的各個所述資源鎖操作、所述原始操作和/或與所述原始操作相對應(yīng)的逆操作的執(zhí)行順序,將所述跨鏈操作的各個所述資源鎖操作、所述原始操作和/或與所述原始操作相對應(yīng)的逆操作,以及各個操作的執(zhí)行狀態(tài)記錄在日志鏈中,所述執(zhí)行狀態(tài)包括:執(zhí)行成功和執(zhí)行失敗。
查詢單元,用于接收用戶對日志鏈的查詢請求,根據(jù)所述用戶的權(quán)限和所述查詢請求在所述日志鏈中對已執(zhí)行的跨鏈操作進行查詢,并將查詢結(jié)果發(fā)送至所述用戶。
本實施例提供的區(qū)塊鏈管理系統(tǒng),參與跨鏈操作的機構(gòu)只需提供各自區(qū)塊鏈的資源鎖操作、原始操作和逆操作,使得各個機構(gòu)在保持原有區(qū)塊鏈系統(tǒng)的情況下就能實現(xiàn)跨鏈操作,最小化了參與機構(gòu)在實現(xiàn)跨鏈操作需要付出的代價,增強了本發(fā)明的實用性,且參與機構(gòu)的現(xiàn)有業(yè)務(wù)邏輯和數(shù)據(jù)結(jié)構(gòu)無需變動,從而保證參與機構(gòu)數(shù)據(jù)的獨立性。
本實施例按照參與跨鏈操作的機構(gòu)提供的資源鎖操作,對參與跨鏈操作的各個機構(gòu)的資源進行鎖定,有效的防止了資源競爭問題;在各個原始操作的執(zhí)行過程中,若滿足跨鏈操作失敗條件,執(zhí)行與已執(zhí)行的所述原始操作相對應(yīng)的逆操作,然后執(zhí)行解鎖操作釋放已鎖定的資源,以“復(fù)原”已消耗的資源,使得跨鏈操作中所涉及的資源可以“回滾”到執(zhí)行跨鏈操作之前的狀態(tài),從而保證了跨鏈操作的原子性。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。