在本文中,區塊鏈虛擬機,是指每個區塊鏈節點在執行交易時所依賴的執行程式。區塊鏈虛擬機為區塊鏈交易提供了執行環境。
需要說明的是,區塊鏈虛擬機不僅可以是以太坊協議中記載的以太坊虛擬機(Ethereum Virtual Machine,EVM),還可以是除以太坊協議之外的其他區塊鏈協議中所指的虛擬機。
在本文中,智慧合約編譯器,是指用於將使用程式語言(如solidity語言)編寫的智慧合約,編譯成區塊鏈虛擬機可以識別並執行的機器語言(如位元組碼、二進制碼等)的程式。需要說明的是,部署於區塊鏈網路中的智慧合約,一般是指經過智慧合約編譯器編譯後的智慧合約,即位元組碼形式或二進制碼形式的智慧合約。
在以太坊協議或其他類似於以太坊協議的區塊鏈協議中,區塊鏈虛擬機在本地維護了若干組指令與操作之間的映射關係(如下表1所示),並且,區塊鏈虛擬機本地還部署有表1中的每個操作的代碼邏輯。指令1~指令N都是區塊鏈虛擬機所預設支援的指令,指令1~指令N組成了區塊鏈虛擬機的指令集。區塊鏈虛擬機在調用智慧合約時,如果從智慧合約中讀取到表1中的任一指令,就會觸發執行該指令對應的操作的代碼邏輯。需要說明的是,本文所述的指令一般是位元組碼形式或二進制碼形式的。
表1
因此,如果想讓區塊鏈虛擬機執行表1中的任一操作,就需要在區塊鏈虛擬機所要調用智慧合約中,預先寫入該操作對應的指令。這意味著,智慧合約編譯器在預先對該智慧合約進行編譯時,能夠將智慧合約(使用程式語言編寫的)中聲明實現表1中任一操作的內容編譯成對應的指令,以便區塊鏈虛擬機可以識別。這就要求,智慧合約編譯器也需要預設支援表1中的指令1~指令N,指令1~指令N組成了智慧合約編譯器的指令集。
總之,在以太坊協議或其他類似於以太坊協議的區塊鏈協議中,一般是由區塊鏈虛擬機、智慧合約編譯器以及智慧合約協同實現特定的業務需求。
但是,現有的以太坊虛擬機在本地預設支援的操作是有限的,而業務需求是複雜多樣的。例如,現有的以太坊虛擬機與以太坊的智慧合約編譯器並不預設支援如下操作,導致在現有的以太坊架構中,無法實現一些依賴於如下操作的業務需求:
1、基於64個可列印字元(BASE64)的編解碼操作。
2、RSA簽名驗證操作;其中,RSA演算法是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman),RSA演算法也因此得名。
3、對JS物件表示法(JavaScript Object Notation,JSON)資料的處理操作;其中,JSON是一種常見的資料交換格式,JSON資料是具有這種資料交換格式的資料。
4、對可擴展標記語言(eXtensible Markup Language,XML)資料的處理操作;其中,XML是一種常見的資料交換格式,XML資料是具有這種資料交換格式的資料。
5、獲取當前執行的交易的交易雜湊的操作。
6、對於一筆轉帳交易,在不暴露轉帳人的資產餘額與轉帳金額的前提下,判斷轉帳人的資產餘額是否足夠支付這筆轉帳交易的轉帳金額。
由於現有的以太坊虛擬機與以太坊的智慧合約編譯器不預設支援上述操作的問題,因此,在現有技術中,針對上述任一種操作,一般採用將實現該操作的代碼邏輯直接寫入智慧合約的方式,使得以太坊虛擬機在執行交易時,調用智慧合約來執行該操作的代碼邏輯。也就是說,以太坊虛擬機雖然不預設支援上述操作,但是將上述操作的代碼邏輯寫入智慧合約,並讓以太坊虛擬機調用該智慧合約,也可以實現以太坊虛擬機執行上述操作的目的。
但是,實踐中,相比於以太坊虛擬機直接執行本地預先部署的代碼邏輯,以太坊虛擬機執行智慧合約中的代碼邏輯的效率較低。
而本發明的核心思想在於,一方面,對區塊鏈虛擬機的指令集進行擴展,增加上述操作對應的指令,同時在區塊鏈虛擬機本地預先部署上述操作對應的代碼邏輯,使得區塊鏈虛擬機可以預設支援上述操作。另一方面,對智慧合約編譯器的指令集也進行擴展,增加上述操作對應的指令。其中,針對同一操作,為區塊鏈虛擬機的指令集增加的對應於該操作的指令與為智慧合約編譯器的指令集增加的對應於該操作的指令應當一致。如表2所示。
表2
如此,以上述的BASE64編碼操作為例,可以在使用程式語言編寫智慧合約時,在智慧合約中聲明調用BASE64編碼操作,智慧合約編譯器在對智慧合約進行編譯時,將這段聲明編譯成BASE64編碼指令。該智慧合約被部署到區塊鏈網路中之後,用戶在發起業務時,可以在業務發起交易中指定調用該智慧合約,這樣,區塊鏈虛擬機在執行業務發起交易時,就會調用該智慧合約,並當從該智慧合約中讀取到BASE64編碼指令,觸發在本地執行相應的BASE64編碼邏輯,以實現BASE64編碼操作。
為了使本領域技術人員更好地理解本說明書實施例中的技術方案,下面將結合本說明書實施例中的圖式,對本說明書實施例中的技術方案進行詳細地描述,顯然,所描述的實施例僅僅是本說明書的一部分實施例,而不是全部的實施例。基於本說明書中的實施例,本領域普通技術人員所獲得的所有其他實施例,都應當屬於保護的範圍。
以下結合圖式,詳細說明本說明書各實施例提供的技術方案。需要說明的是,由於以下的各實施例所基於的技術思想都是類似的,因此,下文的各實施例可互相參照理解。
實施例一
圖1是本說明書實施例提供的一種基於區塊鏈智慧合約的編碼方法的流程示意圖,包括以下步驟:
S100:區塊鏈網路中的節點獲得業務發起交易並廣播給其他節點。
S102:針對所述區塊鏈網路中的每個節點,該節點在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約。
S104:該節點透過區塊鏈虛擬機,根據所述業務智慧合約中的BASE64編碼指令,觸發執行所述BASE64編碼邏輯,以對待編碼資料進行編碼操作。
在本實施例中,需要針對區塊鏈網路進行預先配置,使得:
1)區塊鏈虛擬機的指令集中包括BASE64編碼指令,並且,區塊鏈虛擬機中部署有對應於所述BASE64編碼指令的BASE64編碼邏輯。
2)智慧合約編譯器的指令集中包括所述BASE64編碼指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述BASE64編碼指令。
3)區塊鏈網路中部署有所述業務智慧合約。
所述業務智慧合約是需要調用BASE64編碼功能的業務所對應的智慧合約。
在本說明的各實施例中,區塊鏈網路包括多個節點。其中,從軟體層面上看,節點是指用於實現區塊鏈功能的區塊鏈程式;從硬體層面上看,節點是指安裝有區塊鏈程式的用戶設備。在實際應用中,每個節點可以對接至少一個客戶端(或稱錢包),區塊鏈中的交易通常是客戶端構建的。
在本說明的各實施例中所描述的交易(transaction),是指用戶透過區塊鏈的客戶端創建,並需要最終發佈至區塊鏈的分布式資料庫中的一筆資料。交易是區塊鏈協議中所約定的一種資料結構,一筆資料要存入區塊鏈,就需要被封裝成交易。
區塊鏈中的交易,存在狹義的交易以及廣義的交易之分。狹義的交易是指用戶向區塊鏈發佈的一筆價值轉移;例如,在傳統的比特幣區塊鏈網路中,交易可以是用戶在區塊鏈中發起的一筆轉帳。而廣義的交易是指用戶向區塊鏈發佈的一筆具有業務意圖的業務資料;例如,營運方可以基於實際的業務需求搭建一個聯盟鏈,依托於聯盟鏈部署一些與價值轉移無關的其它類型的線上業務(比如,租房業務、車輛調度業務、保險理賠業務、信用服務、醫療服務等),而在這類聯盟鏈中,交易可以是用戶在聯盟鏈中發佈的一筆具有業務意圖的業務消息或者業務請求。
在區塊鏈網路中,用戶通常以交易的形式發起業務。具體地,節點需要獲得業務發起交易如果上述的業務智慧合約不是區塊鏈網路中部署的唯一的智慧合約,業務發起交易中還會註明所述業務智慧合約的合約標識,以明確交易執行時所需要調用的智慧合約。
其中,業務發起交易通常是用戶透過客戶端構建並發送給節點的。一般而言,區塊鏈網路對接的客戶端與各用戶一一對應。
節點在將業務發起交易廣播給其他節點之後,針對每個節點,該節點在接收到所述業務發起交易之後,需要透過區塊鏈虛擬機調用所述業務智慧合約來執行該業務發起交易。此處需要說明的是,在區塊鏈網路中,每個節點上都部署有區塊鏈虛擬機,節點執行交易時,實際上是節點上部署的區塊鏈虛擬機在執行交易。
在實施例一中,區塊鏈虛擬機調用所述業務智慧合約之後,會讀取所述業務智慧合約中的位元組碼或二進制碼並執行,當讀取到所述業務智慧合約中的BASE64編碼指令時,相當於明確了此時需要進行BASE64編碼操作,因此,區塊鏈虛擬機此時會觸發執行預先部署於本地的BASE64編碼邏輯,以對待編碼資料進行編碼操作。
在實際應用中,視具體的業務需求的不同,待編碼資料可以是包含於所述業務發起交易中的,也可以包含於所述業務智慧合約中的,還可以是區塊鏈虛擬機在執行所述業務發起交易時產生的。
此外,各節點除了透過區塊鏈虛擬機執行業務發起交易之外,還需要基於共識機制,將所述業務發起交易寫入區塊鏈。
另外需要說明的是,區塊鏈虛擬機如果根據所述業務智慧合約中的BASE64編碼指令觸發執行BASE64編碼邏輯,那麽,在執行過程中所採用的資料傳遞方式通常是堆疊傳遞(即一般會將BASE64編碼後的資料寫入堆疊中),但是,對於經過BASE64編碼後的資料而言,其資料長度是不固定的,如果採用堆疊傳遞的方式,就要求針對各種可能當資料長度都預先設置相應的BASE64編碼指令,實現起來較為複雜。
為此,以下的實施例二提供了另一種基於區塊鏈智慧合約的編碼方法。
實施例二
圖2是本說明書實施例提供的另一種基於區塊鏈智慧合約的編碼方法的流程示意圖,包括以下步驟:
S200:區塊鏈網路中的節點獲得業務發起交易並廣播給其他節點。
S202:針對所述區塊鏈網路中的每個節點,該節點在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約。
S204:該節點透過區塊鏈虛擬機,根據所述業務智慧合約中的所述BASE64編碼智慧合約的合約標識,調用所述BASE64編碼智慧合約。
S206:該節點透過區塊鏈虛擬機,根據所述BASE64編碼智慧合約中的,BASE64編碼指令,觸發執行所述BASE64編碼邏輯,以對待編碼資料進行編碼操作。
在本實施例中,需要針對區塊鏈網路進行預先配置,使得:
1)區塊鏈虛擬機的指令集中包括BASE64編碼指令,並且,區塊鏈虛擬機中部署有對應於所述BASE64編碼指令的BASE64編碼邏輯。
2)智慧合約編譯器的指令集中包括所述BASE64編碼指令,經所述智慧合約編譯器編譯的業務智慧合約中包含BASE64編碼智慧合約的合約標識,所述BASE64編碼智慧合約是預先部署於所述區塊鏈網路中的智慧合約。
3)區塊鏈網路中部署有所述業務智慧合約。
實施例二與實施例一的區別主要在於,在實施例二中,區塊鏈虛擬機調用所述業務智慧合約之後,當讀取到所述BASE64編碼智慧合約的合約標識時,相當於明確了此時需要進一步調用所述BASE64編碼智慧合約。區塊鏈虛擬機調用所述BASE64編碼智慧合約,也會讀取所述BASE64編碼智慧合約中的位元組碼或二進制碼,當讀取到所述BASE64編碼指令時,相當於明確了此時需要執行BASE64編碼操作,因此,區塊鏈虛擬機此時會觸發執行預先部署於本地的BASE64編碼邏輯,以對待編碼資料進行編碼操作。
也就是說,在實施例二中,智慧合約編譯器在編譯業務智慧合約時,如果發現業務智慧合約中聲明調用BASE64編碼操作,則不會將這段聲明編譯BASE64編碼指令,而是編譯成所述BASE64編碼智慧合約的合約標識。這樣,區塊鏈虛擬機在調用業務智慧合約時,會進一步調用所述BASE64編碼智慧合約。
在區塊鏈技術領域,所述BASE64編碼智慧合約實際上是一種預編譯合約,區塊鏈虛擬機在調用並執行如BASE64編碼智慧合約這樣的預編譯合約時,並不會採用堆疊傳遞的方式進行參數傳遞,而是會採用記憶體傳遞的方式進行參數傳遞(支援不固定長度的資料讀寫)。
實施例三
圖3是本說明書實施例提供的一種基於區塊鏈智慧合約的編碼方法的流程示意圖,包括以下步驟:
S300:區塊鏈網路中的節點獲得業務發起交易並廣播給其他節點。
S302:針對所述區塊鏈網路中的每個節點,該節點在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約。
S304:該節點透過區塊鏈虛擬機,根據所述業務智慧合約中的BASE64解碼指令,觸發執行所述BASE64解碼邏輯,以對待解碼資料進行解碼操作。
在本實施例中,需要針對區塊鏈網路進行預先配置,使得:
1)區塊鏈虛擬機的指令集中包括BASE64解碼指令,並且,區塊鏈虛擬機中部署有對應於所述BASE64解碼指令的BASE64解碼邏輯。
2)智慧合約編譯器的指令集中包括所述BASE64解碼指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述BASE64解碼指令。
3)區塊鏈網路中部署有所述業務智慧合約。
由於BASE64解碼操作與BASE64編碼操作是相對應的一組操作,因此,相關說明參見實施例一即可,不再贅述。
需要說明的是,在實際應用中,視具體的業務需求的不同,待解碼資料可以是包含於所述業務發起交易中的,也可以包含於所述業務智慧合約中的,還可以是區塊鏈虛擬機在執行所述業務發起交易時產生的。
此外,在實施例三中,也存在前文所述的堆疊傳遞實現複雜的問題,為此,以下的實施例四提供了另一種基於區塊鏈智慧合約的解碼方法。
實施例四
圖4是本說明書實施例提供的另一種基於區塊鏈智慧合約的解碼方法的流程示意圖,包括以下步驟:
S200:區塊鏈網路中的節點獲得業務發起交易並廣播給其他節點。
S202:針對所述區塊鏈網路中的每個節點,該節點在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約。
S204:該節點透過區塊鏈虛擬機,根據所述業務智慧合約中的所述BASE64解碼智慧合約的合約標識,調用所述BASE64解碼智慧合約。
S206:該節點透過區塊鏈虛擬機,根據所述BASE64解碼智慧合約中的,BASE64解碼指令,觸發執行所述BASE64解碼邏輯,以對待解碼資料進行解碼操作。
在本實施例中,需要針對區塊鏈網路進行預先配置,使得:
1)區塊鏈虛擬機的指令集中包括BASE64解碼指令,並且,區塊鏈虛擬機中部署有對應於所述BASE64解碼指令的BASE64解碼邏輯。
2)智慧合約編譯器的指令集中包括所述BASE64解碼指令,經所述智慧合約編譯器編譯的業務智慧合約中包含BASE64解碼智慧合約的合約標識,所述BASE64解碼智慧合約是預先部署於所述區塊鏈網路中的智慧合約。
3)區塊鏈網路中部署有所述業務智慧合約。
實施例四與實施例三的區別主要在於,在實施例四中,區塊鏈虛擬機調用所述業務智慧合約之後,當讀取到所述BASE64解碼智慧合約的合約標識時,相當於明確了此時需要進一步調用所述BASE64解碼智慧合約。區塊鏈虛擬機調用所述BASE64解碼智慧合約,也會讀取所述BASE64解碼智慧合約中的位元組碼或二進制碼,當讀取到所述BASE64解碼指令時,相當於明確了此時需要執行BASE64解碼操作,因此,區塊鏈虛擬機此時會觸發執行預先部署於本地的BASE64解碼邏輯,以對待解碼資料進行解碼操作。
圖5a是本說明書實施例提供的對應於實施例一與實施例三的BASE64編解碼操作的部署示意圖。如圖5a所示,其一,為區塊鏈虛擬機的指令集添加BASE64編碼指令和/或BASE64解碼指令,同時,在區塊鏈虛擬機中部署BASE64編碼邏輯和/或BASE64解碼邏輯。其二,為智慧合約編譯器的指令集添加BASE64編碼指令和/或BASE64解碼指令。其三,將經過智慧合約編譯器編譯的業務智慧合約(包含BASE64編碼指令和/或BASE64解碼指令)部署於區塊鏈網路中。
需要說明的是,在為智慧合約編譯器增加功能指令(包括本文中所述的各種指令)時,一般需要相應為智慧合約編譯器增加該功能指令對應的處理邏輯,(如參數/返回值處理邏輯),以便智慧合約編譯器將該功能指令對應的處理邏輯也寫入業務智慧合約。
對於實施例二與實施例四,圖5b是本說明書實施例提供的對應於實施例二與實施例四的BASE64編解碼操作的部署示意圖。如圖5b所示,其一,為區塊鏈虛擬機的指令集添加BASE64編碼指令和/或BASE64解碼指令,同時,在區塊鏈虛擬機中部署BASE64編碼邏輯和/或BASE64解碼邏輯。其二,為智慧合約編譯器的指令集添加BASE64編碼指令和/或BASE64解碼指令。其三,將經過智慧合約編譯器編譯的業務智慧合約(包含BASE64編碼智慧合約的合約標識與BASE64解碼智慧合約的合約標識)部署於區塊鏈網路中。
實施例五
圖6是本說明書實施例提供的一種基於區塊鏈智慧合約的簽名驗證方法的流程示意圖,包括如下步驟:
S600:區塊鏈網路中的節點獲得業務發起交易並廣播給其他節點。
S602:針對所述區塊鏈網路中的每個節點,該節點在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約。
S604:該節點透過區塊鏈虛擬機,根據所述業務智慧合約中的RSA簽名驗證指令,觸發執行所述RSA簽名驗證邏輯,以對業務簽名進行RSA簽名驗證操作。
在本實施例中,需要針對區塊鏈網路進行預先配置,使得:
1)區塊鏈虛擬機的指令集中包括RSA簽名驗證指令,並且,區塊鏈虛擬機中部署有對應於所述RSA簽名驗證指令的RSA簽名驗證邏輯。
2)智慧合約編譯器的指令集中包括所述RSA簽名驗證指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述RSA簽名驗證指令。
3)區塊鏈網路中部署有所述業務智慧合約。
所述業務智慧合約是需要調用RSA簽名驗證功能的業務所對應的智慧合約。
在實施例一中,區塊鏈虛擬機調用所述業務智慧合約之後,會讀取所述業務智慧合約中的位元組碼或二進制碼並執行,當讀取到所述業務智慧合約中的RSA簽名驗證指令時,相當於明確了此時需要進行RSA簽名驗證操作,因此,區塊鏈虛擬機此時會觸發執行預先部署於本地的RSA簽名驗證邏輯,以對業務簽名進行簽名驗證操作。
在實際應用中,視具體的業務需求的不同,存在以下幾種情況:
1)所述業務發起交易包含所述業務簽名、所述業務簽名對應的被簽名資料以及用於驗證所述業務簽名的公鑰。
2)所述業務發起交易包含所述業務簽名、所述業務簽名對應的被簽名資料的摘要以及用於驗證所述業務簽名的公鑰。
3)所述業務發起交易包含所述業務簽名、所述業務簽名對應的被簽名資料,所述業務智慧合約包含用於驗證所述業務簽名的公鑰。
4)所述業務發起交易包含所述業務簽名、所述業務簽名對應的被簽名資料的摘要,所述業務智慧合約包含用於驗證所述業務簽名的公鑰。
需要說明的是,區塊鏈虛擬機如果根據所述業務智慧合約中的RSA簽名驗證指令觸發執行RSA簽名驗證邏輯,那麽,在執行過程中所採用的資料傳遞方式通常是堆疊傳遞。
此外,區塊鏈虛擬機也可以使用記憶體傳遞的方式執行RSA簽名驗證邏輯(預編譯合約的方式),即以下的實施例六。
實施例六
圖7是本說明書實施例提供的一種基於區塊鏈智慧合約的簽名驗證方法的流程示意圖,包括如下步驟:
S700:區塊鏈網路中的節點獲得業務發起交易並廣播給其他節點。
S702:針對所述區塊鏈網路中的每個節點,該節點在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約。
S704:該節點透過區塊鏈虛擬機,根據所述業務智慧合約中的所述RSA簽名驗證智慧合約的合約標識,調用所述RSA簽名驗證智慧合約。
S706:該節點透過區塊鏈虛擬機,根據所述RSA簽名驗證智慧合約中的RSA簽名驗證指令,觸發執行所述RSA簽名驗證邏輯,以對業務簽名進行RSA簽名驗證操作,以對業務簽名進行RSA簽名驗證操作。
在本實施例中,需要針對區塊鏈網路進行預先配置,使得:
1)區塊鏈虛擬機的指令集中包括RSA簽名驗證指令,並且,區塊鏈虛擬機中部署有對應於所述RSA簽名驗證指令的RSA簽名驗證邏輯。
2)智慧合約編譯器的指令集中包括所述RSA簽名驗證指令,經所述智慧合約編譯器編譯的業務智慧合約中包含RSA簽名驗證智慧合約的合約標識,所述RSA簽名驗證智慧合約是預先部署於所述區塊鏈網路中的智慧合約。
3)區塊鏈網路中部署有所述業務智慧合約。
實施例六與實施例五的區別主要在於,在實施例六中,區塊鏈虛擬機調用所述業務智慧合約之後,當讀取到所述RSA簽名驗證智慧合約的合約標識時,相當於明確了此時需要進一步調用所述RSA簽名驗證智慧合約。區塊鏈虛擬機調用所述RSA簽名驗證智慧合約,也會讀取所述RSA簽名驗證智慧合約中的位元組碼或二進制碼,當讀取到所述RSA簽名驗證指令時,相當於明確了此時需要執行RSA簽名驗證操作,因此,區塊鏈虛擬機此時會觸發執行預先部署於本地的RSA簽名驗證邏輯,以對業務簽名進行RSA簽名驗證操作。
也就是說,在實施例六中,智慧合約編譯器在編譯業務智慧合約時,如果發現業務智慧合約中聲明調用RSA簽名驗證操作,則不會將這段聲明編譯為RSA簽名驗證指令,而是編譯成所述RSA簽名驗證智慧合約的合約標識。這樣,區塊鏈虛擬機在調用業務智慧合約時,會進一步調用所述RSA簽名驗證智慧合約。
圖8a是本說明書實施例提供的對應於實施例五的RSA簽名驗證操作的部署示意圖。如圖8a所示,其一,為區塊鏈虛擬機的指令集添加RSA簽名驗證指令,同時,在區塊鏈虛擬機中部署RSA簽名驗證邏輯。其二,為智慧合約編譯器的指令集添加RSA簽名驗證指令。其三,將經過智慧合約編譯器編譯的業務智慧合約(包含RSA簽名驗證指令)部署於區塊鏈網路中。
圖8b是本說明書實施例提供的對應於實施例六的RSA簽名驗證操作的部署示意圖。如圖8b所示,其一,為區塊鏈虛擬機的指令集添加RSA簽名驗證指令,同時,在區塊鏈虛擬機中部署RSA簽名驗證邏輯。其二,為智慧合約編譯器的指令集添加RSA簽名驗證指令。其三,將經過智慧合約編譯器編譯的業務智慧合約(包含RSA簽名驗證智慧合約的合約標識)部署於區塊鏈網路中。
實施例七
圖9是本說明書實施例提供的一種基於區塊鏈智慧合約的資料處理方法的流程示意圖,包括如下步驟:
S900:區塊鏈網路中的節點獲得業務發起交易並廣播給其他節點。
S902:針對所述區塊鏈網路中的每個節點,該節點在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約。
S904:該節點透過區塊鏈虛擬機,根據所述業務智慧合約中的JSON處理指令,觸發執行所述JSON處理邏輯,以對待處理資料進行JSON處理操作。
在本實施例中,需要針對區塊鏈網路進行預先配置,使得:
1)區塊鏈虛擬機的指令集中包括JSON處理指令,並且,區塊鏈虛擬機中部署有對應於所述JSON處理指令的JSON處理邏輯。
2)智慧合約編譯器的指令集中包括所述JSON處理指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述JSON處理指令。
3)區塊鏈網路中部署有所述業務智慧合約。
所述業務智慧合約是需要調用JSON處理功能的業務所對應的智慧合約。JSON處理具體包括JSON資料解析與JSON資料生成。
在實施例七中,區塊鏈虛擬機調用所述業務智慧合約之後,會讀取所述業務智慧合約中的位元組碼或二進制碼並執行,當讀取到所述業務智慧合約中的JSON處理指令時,相當於明確了此時需要進行JSON處理操作,因此,區塊鏈虛擬機此時會觸發執行預先部署於本地的JSON處理邏輯,以對待處理資料進行JSON處理操作。
在實際應用中,視具體的業務需求的不同,所述待處理資料可以包含於所述業務發起交易中,也可以包含於所述業務智慧合約中,還可以是區塊鏈虛擬機執行所述業務發起交易時產生的。
另外需要說明的是,區塊鏈虛擬機如果根據所述業務智慧合約中的JSON處理指令觸發執行JSON處理邏輯,那麽,在執行過程中所採用的資料傳遞方式通常是堆疊傳遞(即一般會將JSON處理出的資料寫入堆疊中),但是,對於JSON處理出的資料而言,其資料長度是不固定的,採用堆疊傳遞的方式往往會導致實現較為複雜。
為此,以下的實施例八提供了另一種基於區塊鏈智慧合約的資料處理方法(預編譯合約的方式)。
實施例八
圖10是本說明書實施例提供的一種基於區塊鏈智慧合約的資料處理方法的流程示意圖,包括如下步驟:
S1000:區塊鏈網路中的節點獲得業務發起交易並廣播給其他節點。
S1002:針對所述區塊鏈網路中的每個節點,該節點在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約。
S1004:該節點透過區塊鏈虛擬機,根據所述業務智慧合約中的所述JSON處理智慧合約的合約標識,調用所述JSON處理智慧合約。
S1006:該節點透過區塊鏈虛擬機,根據所述JSON處理智慧合約中的JSON處理指令,觸發執行所述JSON處理邏輯,以對待處理資料進行JSON處理操作。
在本實施例中,需要針對區塊鏈網路進行預先配置,使得:
1)區塊鏈虛擬機的指令集中包括JSON處理指令,並且,區塊鏈虛擬機中部署有對應於所述JSON處理指令的JSON處理邏輯。
2)智慧合約編譯器的指令集中包括所述JSON處理指令,經所述智慧合約編譯器編譯的業務智慧合約中包含JSON處理智慧合約的合約標識,所述JSON處理智慧合約是預先部署於所述區塊鏈網路中的智慧合約。
3)區塊鏈網路中部署有所述業務智慧合約。
實施例八與實施例七的區別主要在於,在實施例八中,區塊鏈虛擬機調用所述業務智慧合約之後,當讀取到所述JSON處理智慧合約的合約標識時,相當於明確了此時需要進一步調用所述JSON處理智慧合約。區塊鏈虛擬機調用所述JSON處理智慧合約,也會讀取所述JSON處理智慧合約中的位元組碼或二進制碼,當讀取到所述JSON處理指令時,相當於明確了此時需要執行JSON處理操作,因此,區塊鏈虛擬機此時會觸發執行預先部署於本地的JSON處理邏輯,以對待處理資料進行JSON處理操作。
也就是說,在實施例八中,智慧合約編譯器在編譯業務智慧合約時,如果發現業務智慧合約中聲明調用JSON處理操作,則不會將這段聲明編譯為JSON處理指令,而是編譯成所述JSON處理智慧合約的合約標識。這樣,區塊鏈虛擬機在調用業務智慧合約時,會進一步調用所述JSON處理智慧合約。
圖11a是本說明書實施例提供的對應於實施例七的JSON處理操作的部署示意圖。如圖11a所示,其一,為區塊鏈虛擬機的指令集添加JSON處理指令,同時,在區塊鏈虛擬機中部署JSON處理邏輯。其二,為智慧合約編譯器的指令集添加JSON處理指令。其三,將經過智慧合約編譯器編譯的業務智慧合約(包含JSON處理指令)部署於區塊鏈網路中。
圖11b是本說明書實施例提供的對應於實施例八的JSON處理操作的部署示意圖。如圖11b所示,其一,為區塊鏈虛擬機的指令集添加JSON處理指令,同時,在區塊鏈虛擬機中部署JSON處理邏輯。其二,為智慧合約編譯器的指令集添加JSON處理指令。其三,將經過智慧合約編譯器編譯的業務智慧合約(包含JSON處理智慧合約的合約標識)部署於區塊鏈網路中。
實施例九
圖12是本說明書實施例提供的一種基於區塊鏈智慧合約的資料處理方法的流程示意圖,包括如下步驟:
S1200:區塊鏈網路中的節點獲得業務發起交易並廣播給其他節點。
S1202:針對所述區塊鏈網路中的每個節點,該節點在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約。
S1204:該節點透過區塊鏈虛擬機,根據所述業務智慧合約中的XML處理指令,觸發執行所述XML處理邏輯,以對待處理資料進行XML處理操作。
在本實施例中,需要針對區塊鏈網路進行預先配置,使得:
1)區塊鏈虛擬機的指令集中包括XML處理指令,並且,區塊鏈虛擬機中部署有對應於所述XML處理指令的XML處理邏輯。
2)智慧合約編譯器的指令集中包括所述XML處理指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述XML處理指令。
3)區塊鏈網路中部署有所述業務智慧合約。
所述業務智慧合約是需要調用XML處理功能的業務所對應的智慧合約。XML處理具體包括XML資料解析與XML資料生成。
在實施例九中,區塊鏈虛擬機調用所述業務智慧合約之後,會讀取所述業務智慧合約中的位元組碼或二進制碼並執行,當讀取到所述業務智慧合約中的XML處理指令時,相當於明確了此時需要進行XML處理操作,因此,區塊鏈虛擬機此時會觸發執行預先部署於本地的XML處理邏輯,以對待處理資料進行XML處理操作。
在實際應用中,視具體的業務需求的不同,所述待處理資料可以包含於所述業務發起交易中,也可以包含於所述業務智慧合約中,還可以是區塊鏈虛擬機執行所述業務發起交易時產生的。
另外需要說明的是,區塊鏈虛擬機如果根據所述業務智慧合約中的XML處理指令觸發執行XML處理邏輯,那麽,在執行過程中所採用的資料傳遞方式通常是堆疊傳遞(即一般會將XML處理出的資料寫入堆疊中),但是,對於XML處理出的資料而言,其資料長度是不固定的,採用堆疊傳遞的方式往往會導致實現較為複雜。
為此,以下的實施例十提供了另一種基於區塊鏈智慧合約的資料處理方法(預編譯合約的方式)。
實施例十
圖13是本說明書實施例提供的一種基於區塊鏈智慧合約的資料處理方法的流程示意圖,包括如下步驟:
S1300:區塊鏈網路中的節點獲得業務發起交易並廣播給其他節點。
S1302:針對所述區塊鏈網路中的每個節點,該節點在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約。
S1304:該節點透過區塊鏈虛擬機,根據所述業務智慧合約中的所述XML處理智慧合約的合約標識,調用所述XML處理智慧合約。
S1306:該節點透過區塊鏈虛擬機,根據所述XML處理智慧合約中的XML處理指令,觸發執行所述XML處理邏輯,以對待處理資料進行XML處理操作。
在本實施例中,需要針對區塊鏈網路進行預先配置,使得:
1)區塊鏈虛擬機的指令集中包括XML處理指令,並且,區塊鏈虛擬機中部署有對應於所述XML處理指令的XML處理邏輯。
2)智慧合約編譯器的指令集中包括所述XML處理指令,經所述智慧合約編譯器編譯的業務智慧合約中包含XML處理智慧合約的合約標識,所述XML處理智慧合約是預先部署於所述區塊鏈網路中的智慧合約。
3)區塊鏈網路中部署有所述業務智慧合約。
實施例十與實施例九的區別主要在於,在實施例十中,區塊鏈虛擬機調用所述業務智慧合約之後,當讀取到所述XML處理智慧合約的合約標識時,相當於明確了此時需要進一步調用所述XML處理智慧合約。區塊鏈虛擬機調用所述XML處理智慧合約,也會讀取所述XML處理智慧合約中的位元組碼或二進制碼,當讀取到所述XML處理指令時,相當於明確了此時需要執行XML處理操作,因此,區塊鏈虛擬機此時會觸發執行預先部署於本地的XML處理邏輯,以對待處理資料進行XML處理操作。
也就是說,在實施例十中,智慧合約編譯器在編譯業務智慧合約時,如果發現業務智慧合約中聲明調用XML處理操作,則不會將這段聲明編譯為XML處理指令,而是編譯成所述XML處理智慧合約的合約標識。這樣,區塊鏈虛擬機在調用業務智慧合約時,會進一步調用所述XML處理智慧合約。
圖14a是本說明書實施例提供的對應於實施例九的XML處理操作的部署示意圖。如圖14a所示,其一,為區塊鏈虛擬機的指令集添加XML處理指令,同時,在區塊鏈虛擬機中部署XML處理邏輯。其二,為智慧合約編譯器的指令集添加XML處理指令。其三,將經過智慧合約編譯器編譯的業務智慧合約(包含XML處理指令)部署於區塊鏈網路中。
圖14b是本說明書實施例提供的對應於實施例十的XML處理操作的部署示意圖。如圖14b所示,其一,為區塊鏈虛擬機的指令集添加XML處理指令,同時,在區塊鏈虛擬機中部署XML處理邏輯。其二,為智慧合約編譯器的指令集添加XML處理指令。其三,將經過智慧合約編譯器編譯的業務智慧合約(包含XML處理智慧合約的合約標識)部署於區塊鏈網路中。
實施例十一
圖15是本說明書實施例提供的一種基於區塊鏈智慧合約的交易雜湊獲取方法的流程示意圖,包括如下步驟:
S1500:區塊鏈網路中的節點獲得業務發起交易並廣播給其他節點。
S1502:針對所述區塊鏈網路中的每個節點,該節點在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約。
S1504:該節點透過區塊鏈虛擬機,根據所述業務智慧合約中的交易雜湊獲取指令,觸發執行所述交易雜湊獲取邏輯,以獲取所述業務發起交易的交易雜湊。
在本實施例中,需要針對區塊鏈網路進行預先配置,使得:
1)區塊鏈虛擬機的指令集中包括交易雜湊獲取指令,並且,區塊鏈虛擬機中部署有對應於所述交易雜湊獲取指令的交易雜湊獲取邏輯。
2)智慧合約編譯器的指令集中包括所述交易雜湊獲取指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述交易雜湊獲取指令。
3)區塊鏈網路中部署有所述業務智慧合約。
所述業務智慧合約是需要調用交易雜湊獲取功能的業務所對應的智慧合約。
在實施例十一中,區塊鏈虛擬機調用所述業務智慧合約之後,會讀取所述業務智慧合約中的位元組碼或二進制碼並執行,當讀取到所述業務智慧合約中的交易雜湊獲取指令時,相當於明確了此時需要進行交易雜湊獲取操作,因此,區塊鏈虛擬機此時會觸發執行預先部署於本地的交易雜湊獲取邏輯,以對待處理資料進行交易雜湊獲取操作。
在實際應用中,針對所述區塊鏈網路中的每個節點,該節點在調用所述業務智慧合約之前,初始化區塊鏈虛擬機的上下文,並將所述業務發起交易的交易雜湊寫入所述上下文中。
如此,在步驟S1504中,具體地,該節點透過區塊鏈虛擬機,根據所述業務智慧合約中的交易雜湊獲取指令,觸發執行所述交易雜湊獲取邏輯,以從所述上下文中獲取所述業務發起交易的交易雜湊。
另外需要說明的是,區塊鏈虛擬機如果根據所述業務智慧合約中的交易雜湊獲取指令觸發執行交易雜湊獲取邏輯,那麽,在執行過程中所採用的資料傳遞方式通常是堆疊傳遞。以下的實施例十二提供了另一種基於區塊鏈智慧合約的交易雜湊獲取方法(預編譯合約的方式)。
實施例十二
圖16是本說明書實施例提供的一種基於區塊鏈智慧合約的交易雜湊獲取方法的流程示意圖,包括如下步驟:
S1600:區塊鏈網路中的節點獲得業務發起交易並廣播給其他節點。
S1602:針對所述區塊鏈網路中的每個節點,該節點在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約。
S1604:該節點透過區塊鏈虛擬機,根據所述業務智慧合約中的所述交易雜湊獲取智慧合約的合約標識,調用所述交易雜湊獲取智慧合約。
S1606:該節點透過區塊鏈虛擬機,根據所述交易雜湊獲取智慧合約中的交易雜湊獲取指令,觸發執行所述交易雜湊獲取邏輯,以獲取所述業務發起交易的交易雜湊。
在本實施例中,需要針對區塊鏈網路進行預先配置,使得:
1)區塊鏈虛擬機的指令集中包括交易雜湊獲取指令,並且,區塊鏈虛擬機中部署有對應於所述交易雜湊獲取指令的交易雜湊獲取邏輯。
2)智慧合約編譯器的指令集中包括所述交易雜湊獲取指令,經所述智慧合約編譯器編譯的業務智慧合約中包含交易雜湊獲取智慧合約的合約標識,所述交易雜湊獲取智慧合約是預先部署於所述區塊鏈網路中的智慧合約。
3)區塊鏈網路中部署所述業務智慧合約。
實施例十二與實施例十一的區別主要在於,在實施例十二中,區塊鏈虛擬機調用所述業務智慧合約之後,當讀取到所述交易雜湊獲取智慧合約的合約標識時,相當於明確了此時需要進一步調用所述交易雜湊獲取智慧合約。區塊鏈虛擬機調用所述交易雜湊獲取智慧合約,也會讀取所述交易雜湊獲取智慧合約中的位元組碼或二進制碼,當讀取到所述交易雜湊獲取指令時,相當於明確了此時需要執行交易雜湊獲取操作,因此,區塊鏈虛擬機此時會觸發執行預先部署於本地的交易雜湊獲取邏輯,以獲取所述業務發起交易的交易雜湊。
也就是說,在實施例十二中,智慧合約編譯器在編譯業務智慧合約時,如果發現業務智慧合約中聲明調用交易雜湊獲取操作,則不會將這段聲明編譯為交易雜湊獲取指令,而是編譯成所述交易雜湊獲取智慧合約的合約標識。這樣,區塊鏈虛擬機在調用業務智慧合約時,會進一步調用所述交易雜湊獲取智慧合約。
在實際應用中,針對所述區塊鏈網路中的每個節點,該節點在調用所述業務智慧合約之前,初始化區塊鏈虛擬機的上下文,並將所述業務發起交易的交易雜湊寫入所述上下文中。
如此,在步驟S1606中,具體地,該節點透過區塊鏈虛擬機,根據所述交易雜湊獲取智慧合約中的交易雜湊獲取指令,觸發執行所述交易雜湊獲取邏輯,以從所述上下文中獲取所述業務發起交易的交易雜湊。
圖17a是本說明書實施例提供的對應於實施例十一的交易雜湊獲取操作的部署示意圖。如圖17a所示,其一,為區塊鏈虛擬機的指令集添加交易雜湊獲取指令,同時,在區塊鏈虛擬機中部署交易雜湊獲取邏輯。其二,為智慧合約編譯器的指令集添加交易雜湊獲取指令。其三,將經過智慧合約編譯器編譯的業務智慧合約(包含交易雜湊獲取指令)部署於區塊鏈網路中。
圖17b是本說明書實施例提供的對應於實施例十二的交易雜湊獲取操作的部署示意圖。如圖17b所示,其一,為區塊鏈虛擬機的指令集添加交易雜湊獲取指令,同時,在區塊鏈虛擬機中部署交易雜湊獲取邏輯。其二,為智慧合約編譯器的指令集添加交易雜湊獲取指令。其三,將經過智慧合約編譯器編譯的業務智慧合約(包含交易雜湊獲取智慧合約的合約標識)部署於區塊鏈網路中。
實施例十三
圖18是本說明書實施例提供的一種基於區塊鏈智慧合約的轉帳方法的流程示意圖,包括如下步驟:
S1800:區塊鏈網路中的節點透過轉帳外部帳戶獲得轉帳交易並廣播給其他節點。
即節點接收客戶端(登錄了轉帳外部帳戶)構建並發送的轉帳交易。
S1802:針對所述區塊鏈網路中的每個節點,該節點在執行所述轉帳交易時,透過區塊鏈虛擬機,調用所述業務智慧合約並根據所述業務智慧合約中的出入校驗指令,觸發執行所述出入校驗邏輯。
S1804:若校驗結果為是,則該節點透過區塊鏈虛擬機,執行所述業務智慧合約中的用戶資產表修改邏輯。
在以太坊架構中,各外部帳戶與各用戶一一對應,兩個用戶之間的轉帳行為實際上就是兩個外部帳戶之間的轉帳行為。
假設外部帳戶A想要向外部帳戶B轉帳,那麽,外部帳戶A首先會構建包含轉帳金額與外部帳戶B的帳戶地址的轉帳交易,隨後,該轉帳交易會被廣播給區塊鏈網路中的各節點。各節點對轉帳交易進行驗證通過後,執行轉帳交易,將轉帳金額寫入外部帳戶B。
需要說明的是,各節點對轉帳交易的驗證事項一般包括驗證外部帳戶A的餘額是否充足,即外部帳戶A的餘額是否大於或等於轉帳金額,若是,則驗證通過。這意味著,在現有的以太坊架構中,如果要進行轉帳,那麽轉帳人的帳戶餘額以及轉帳金額都會暴露給區塊鏈網路中的各節點。
在實施例十三中,實際上給出了一種業務需求,即針對區塊鏈網路中的節點之間的一筆轉帳交易,在不暴露轉帳用戶的資產餘額以及轉帳金額的前提下,判斷轉帳用戶的資產餘額是否足夠支付轉帳金額。
為了滿足這種業務需求,本發明採用了一種新的轉帳模型,不再使用區塊鏈網路中的外部帳戶中的餘額進行轉帳和收帳,而是創建業務智慧合約,在業務智慧合約中重新搭建一個用戶的資產體系。在這個資產體系中,不再有資產餘額概念,每個用戶擁有的資產相當於是一種虛擬物,用戶花出一個資產,這個資產就會消失。
具體地,在區塊鏈網路中部署所述業務智慧合約,所述業務智慧合約對應有用戶資產表,所述用戶資產表用於記錄每個外部帳戶(與每個用戶一一對應)對應的資產,針對任一資產,該資產為包含加密金額的資料,該加密金額是對該資產的金額進行加密後得到的。
下表3示列性地給出了所述用戶資產表。
表3
例如,外部帳戶1向外部帳戶2轉帳120元,假設資產1的金額為100元,資產2的金額為50元,那麽外部帳戶1需要花銷掉自己的資產1與資產2,隨後,資產1與資產2消失,產生了資產7(金額為120元)與資產8(金額為30元),外部帳戶1得到資產8,外部帳戶2得到資產7。可見,資產1+資產2實際上是這筆轉帳的輸入,資產7+資產8實際上是這筆轉帳的輸出。經過這筆轉帳後,表3會更新為如下所示的表4。
表4
如此,在本發明中,針對一筆轉帳交易,將驗證餘額的問題轉化成了驗證輸入輸出是否平衡的問題。由於每個資產的金額實際上是加密的,因為不會暴露給區塊鏈虛擬機,這意味著,要求區塊鏈虛擬機在執行轉帳交易時,採用同態加密演算法(如Pedersen Commitment演算法),校驗輸入的資產與輸出的資產是否相等,如果校驗結果為是,就意味著這筆轉帳交易是可行的(相當於說明了轉帳人的餘額充足)。
對於具體地實施方式,在本實施例十三中,需要針對區塊鏈網路進行預先配置,使得:
1)區塊鏈虛擬機的指令集中包括出入校驗指令,並且,區塊鏈虛擬機中部署有對應於所述交易雜湊獲取指令的出入校驗邏輯。
其中,所述出入校驗邏輯包括:針對任一轉帳交易,採用同態加密演算法,校驗該轉帳交易指定的轉帳資產的金額與該轉帳交易指定的找零資產的金額之和,是否等於該轉帳交易指定的各花銷資產的金額之和。
還需要說明的是,所述轉帳交易實際上就是前文所述的業務發起交易,只不過此處的業務具體為加密轉帳業務。
2)智慧合約編譯器的指令集中包括所述出入校驗指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述出入校驗指令。
3)區塊鏈網路中部署有所述業務智慧合約。
所述業務智慧合約是用於實現隱藏轉帳金額和資產餘額的轉帳功能的智慧合約。
在步驟S1800中,節點實際上是指轉帳用戶對應的節點。轉帳外部帳戶實際上是指轉帳用戶所控制的外部帳戶。
節點透過轉帳外部帳戶獲得轉帳交易,實際上是轉帳用戶登錄客戶端(或稱“錢包”),構建轉帳交易並發送給節點。
所述轉帳交易中包括轉帳資產、找零資產和至少一個花銷資產。其中,所述至少一個花銷資產實際上就是輸入到這筆轉帳的資產,轉帳資產與找零資產實際上就是這筆轉帳輸出的資產。
在實施例十三中,區塊鏈虛擬機調用所述業務智慧合約之後,會讀取所述業務智慧合約中的位元組碼或二進制碼並執行,當讀取到所述業務智慧合約中的出入校驗指令時,相當於明確了此時需要進行出入校驗操作,因此,區塊鏈虛擬機此時會觸發執行預先部署於本地的出入校驗邏輯,以便採用同態加密演算法,校驗所述轉帳資產的金額與所述找零資產的金額之和是否等於各花銷資產的金額之和。
如果校驗結果為是,則說明這筆轉帳交易是可行的。進而,區塊鏈虛擬機需要執行這筆轉帳交易,即根據轉帳交易修改用戶資產表。修改用戶資產表的用戶資產表修改邏輯實際上是預先寫入到業務智慧合約中的。用戶資產表修改邏輯為,解除所述轉帳外部帳戶與各花銷資產的對應關係,建立所述轉帳外部帳戶與所述找零資產的對應關係,並建立收帳外部帳戶與所述轉帳資產的對應關係。
此外,在實際應用中,為了防止出現如下情況:某些惡意用戶在發起轉帳交易時,將轉帳交易中包含的轉帳資產的實際金額設置為負數,以轉帳的方式偷取他人的資產;以及,用戶在發起轉帳交易操作失誤,將轉帳交易中包含的找零資產的實際金額設置為負數,導致用戶實際轉出的資產的金額大於轉帳資產的金額,可以採用零知識證明的方法,在轉帳資產的實際金額與找零資產的實際金額都不可見的情況下,校驗轉帳資產的實際金額與找零資產的實際金額是否皆落入指定數值範圍,如(0,2
64
]。如果校驗結果為是,就排除了以上情況發生的可能性。
具體地,在實施例十三中,可以進一步針對區塊鏈網路進行預先配置,使得:
4)區塊鏈虛擬機的指令集中還包括金額校驗指令,並且,區塊鏈虛擬機中還部署有對應於所述金額校驗指令的金額校驗邏輯。
5)所述智慧合約編譯器的指令集中還包括所述金額校驗指令,經所述智慧合約編譯器編譯的業務智慧合約中還包含所述金額校驗指令。
基於此,用戶發起的轉帳交易中還需要包括用於實現零知識證明的證明相關資料(如Bullet Proof、Borromean環簽名等)。
區塊鏈虛擬機在讀取到所述業務智慧合約中的金額校驗指令時,會觸發執行本地預先部署的金額校驗邏輯,即根據所述證明相關資料,校驗所述轉帳資產的金額與所述找零資產的金額是否皆落入指定數值範圍。
另外,在實施例十三中,業務智慧合約中還可以包含花銷資產校驗邏輯,使得區塊鏈虛擬機在執行業務智慧合約時,還可以根據所述用戶資產表,校驗所述轉帳外部帳戶對應的資產中是否包括各花銷資產。如果校驗結果為是,說明轉帳用戶所要使用的花銷資產是自己擁有的資產。
此外,針對任一資產,該資產的資料結構還可以包括表徵該資產已花銷或未花銷的第一狀態參數。業務智慧合約中還可以包括第一狀態參數相關邏輯,以便區塊鏈虛擬機在執行業務智慧合約時,針對轉帳交易中的每個花銷資產,該花銷資產包括的第一狀態參數,校驗該花銷資產是否未花銷。並且,所述第一狀態參數相關邏輯還包括:如果最終針對所述轉帳交易的全部校驗的結果皆為是,那麽,對該花銷資產包括的第一狀態參數進行修改,使得修改後的該第一狀態參數表徵該花銷資產已花銷。如果最終針對所述轉帳交易的全部校驗的結果中有任一結果為否,則轉帳交易會失敗,各花銷資產並沒有被花銷出去,自然沒必要對第一狀態參數進行修改。
還有,針對任一資產,該資產的資料結構還可以包括表徵該資產存在或不存在的第二狀態參數。業務智慧合約中還可以包括第二狀態參數相關邏輯,以便區塊鏈虛擬機在執行業務智慧合約時,針對所述轉帳交易中的每個花銷資產,根據該花銷資產包括的第二狀態參數,校驗該花銷資產是否存在。這樣,可以有效防止惡意用戶虛構並不存在的資產並使用虛構的資產來進行轉帳。
另外需要說明的是,區塊鏈虛擬機如果根據所述業務智慧合約中的出入校驗指令與金額校驗指令觸發執行出入校驗邏輯與金額校驗邏輯,那麽,在執行過程中所採用的資料傳遞方式通常是堆疊傳遞。以下的實施例十四提供了另一種基於區塊鏈智慧合約的轉帳方法(預編譯合約的方式)。
實施例十四
圖19是本說明書實施例提供的一種基於區塊鏈智慧合約的交易雜湊獲取方法的流程示意圖,包括如下步驟:
S1900:區塊鏈網路中的節點透過轉帳外部帳戶獲得轉帳交易並廣播給其他節點。
S1902:針對所述區塊鏈網路中的每個節點,該節點在執行所述轉帳交易時,透過區塊鏈虛擬機,調用所述業務智慧合約,並根據所述業務智慧合約中的所述出入校驗智慧合約的合約標識,調用所述出入校驗智慧合約。
S1904:該節點根據所述出入校驗智慧合約中的出入校驗指令,觸發執行所述出入校驗邏輯。
S1906:若校驗結果為是,則該節點透過區塊鏈虛擬機,執行所述業務智慧合約中的用戶資產表修改邏輯。
在實施例十四中,需要針對區塊鏈網路進行預先配置,使得:
1)區塊鏈虛擬機的指令集中包括交易雜湊獲取指令,並且,區塊鏈虛擬機中部署有對應於所述交易雜湊獲取指令的交易雜湊獲取邏輯。
2)智慧合約編譯器的指令集中包括所述出入校驗指令,經所述智慧合約編譯器編譯的業務智慧合約中包含出入校驗智慧合約的合約標識,所述出入校驗智慧合約是預先部署於所述區塊鏈網路中的智慧合約。
3)區塊鏈網路中部署有所述業務智慧合約。
實施例十四與實施例十三的區別主要在於,在實施例十二中,區塊鏈虛擬機調用所述業務智慧合約之後,當讀取到所述出入校驗智慧合約的合約標識時,相當於明確了此時需要進一步調用所述出入校驗智慧合約。區塊鏈虛擬機調用所述出入校驗智慧合約,也會讀取所述出入校驗智慧合約中的位元組碼或二進制碼,當讀取到所述出入校驗指令時,相當於明確了此時需要執行出入校驗操作,因此,區塊鏈虛擬機此時會觸發執行預先部署於本地的出入校驗邏輯。
也就是說,在實施例十二中,智慧合約編譯器在編譯業務智慧合約時,如果發現業務智慧合約中聲明調用出入校驗操作,則不會將這段聲明編譯為出入校驗指令,而是編譯成所述所述出入校驗智慧合約的合約標識。這樣,區塊鏈虛擬機在調用業務智慧合約時,會進一步調用所述出入校驗智慧合約。
進一步地,在實施例十四中,需要針對區塊鏈網路進行預先配置,使得:
4)區塊鏈虛擬機的指令集中還包括金額校驗指令,並且,區塊鏈虛擬機中還部署有對應於所述金額校驗指令的金額校驗邏輯。
5)所述智慧合約編譯器的指令集中還包括所述金額校驗指令,經所述智慧合約編譯器編譯的業務智慧合約中還包含所述金額校驗智慧合約的合約標識,所述金額校驗智慧合約是預先部署於所述區塊鏈網路中的智慧合約。
如此,在實施例十四中,針對所述區塊鏈網路中的每個節點,該節點透過區塊鏈虛擬機,根據所述業務智慧合約中的所述金額校驗智慧合約的合約標識,調用所述金額校驗智慧合約;該節點根據所述金額校驗智慧合約中的金額校驗指令,觸發執行所述金額校驗邏輯,以便根據所述證明相關資料,校驗所述轉帳資產的金額與所述找零資產的金額是否皆落入指定數值範圍。
此外需要說明的是,在實施例十四中,執行的校驗事項與實施例十三中的一致,只不過,對於出入校驗與金額校驗,是透過調用預編譯合約(即出入校驗智慧合約與金額校驗智慧合約)的方式進行的。
在實施例十三與實施例十四中,針對轉帳交易進行的校驗事項有多個時,當全部校驗結果都為是時,區塊鏈虛擬機才會執行用戶資產表修改邏輯。
圖20a是本說明書實施例提供的對應於實施例十三的轉帳交易的相關校驗操作的部署示意圖。如圖20a所示,其一,為區塊鏈虛擬機的指令集添加出入校驗指令與金額校驗指令,同時,在區塊鏈虛擬機中部署出入校驗邏輯與金額校驗邏輯。其二,為智慧合約編譯器的指令集添加出入校驗指令與金額校驗指令。其三,將經過智慧合約編譯器編譯的業務智慧合約(包含出入校驗指令與金額校驗指令)部署於區塊鏈網路中。
圖20b是本說明書實施例提供的對應於實施例十四的轉帳交易的相關校驗操作的部署示意圖。如圖20b所示,其一,為區塊鏈虛擬機的指令集添加出入校驗指令與金額校驗指令,同時,在區塊鏈虛擬機中部署出入校驗邏輯與金額校驗邏輯。其二,為智慧合約編譯器的指令集添加出入校驗指令與金額校驗指令。其三,將經過智慧合約編譯器編譯的業務智慧合約(包含出入校驗智慧合約的合約標識與金額校驗智慧合約的合約標識)部署於區塊鏈網路中。
以上,是分別對實施例一~實施例十四的解釋說明。實際上,在實際應用中,業務發起交易具體可以是轉帳交易,而為了實現轉帳交易,可能不僅需要進行相關校驗(如實施例十三中提及的各項校驗),還需要進行BASE54編碼操作、BASE54解碼操作、RSA簽名驗證操作、JSON處理操作、XML處理操作、交易雜湊獲取操作中的一種或多種。
也就是說,可以將上述的BASE64編碼方法、BASE64解碼方法、RSA簽名驗證方法、JSON處理方法、XML處理方法以及交易雜湊獲取方法中的一種或多種應用於實施例十三或實施例十四中的轉帳方法中,此時,前文所述業務發起交易就是轉帳交易。
此外需要說明的是,在本說明書的各實施例中,如果業務智慧合約不是所述區塊鏈網路中唯一的智慧合約,那麽,業務發起交易(以及轉帳交易)中還需要包含業務智慧合約的合約標識,以便區塊鏈虛擬機根據所述業務發起交易(以及轉帳交易)中包括的合約標識,調用對應的業務智慧合約。
還有,對於本說明書中的各實施例,所述區塊鏈虛擬機的指令集中還包括至少一個以太坊指令,以太坊指令是以太坊虛擬機的指令集中的指令;針對所述區塊鏈虛擬機的指令集中包括的每個以太坊指令,所述區塊鏈虛擬機中部署有對應於該以太坊指令的相關邏輯。所述智慧合約編譯器的指令集中還包括至少一個以太坊指令,以太坊指令是以太坊虛擬機的指令集中的指令。也就是說,本發明中的區塊鏈虛擬機可以是在以太坊虛擬機的基礎上擴展得到的,本發明中的智慧合約編譯器可以是在以太坊的智慧合約編譯器的基礎上擴展得到的。
本說明書提供的一種區塊鏈系統,包括區塊鏈網路;
其中,區塊鏈虛擬機的指令集中包括出入校驗指令,並且,區塊鏈虛擬機中部署有對應於所述出入校驗指令的出入校驗邏輯;智慧合約編譯器的指令集中包括所述出入校驗指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述出入校驗指令;區塊鏈網路中部署有所述業務智慧合約,所述業務智慧合約對應有用戶資產表,所述用戶資產表用於記錄每個外部帳戶對應的資產,針對任一資產,該資產為包含加密金額的資料,該加密金額是對該資產的金額進行加密後得到的;
所述區塊鏈網路中的節點,透過轉帳外部帳戶獲得轉帳交易並廣播給其他節點;所述轉帳交易包括轉帳資產、找零資產和至少一個花銷資產;
所述區塊鏈網路中的每個節點,在執行所述轉帳交易時,透過區塊鏈虛擬機,調用所述業務智慧合約並根據所述業務智慧合約中的出入校驗指令,觸發執行所述出入校驗邏輯,以便採用同態加密演算法,校驗所述轉帳資產的金額與所述找零資產的金額之和是否等於各花銷資產的金額之和;若校驗結果為是,則透過區塊鏈虛擬機,執行所述業務智慧合約中的用戶資產表修改邏輯,以便解除所述轉帳外部帳戶與各花銷資產的對應關係,建立所述轉帳外部帳戶與所述找零資產的對應關係,並建立收帳外部帳戶與所述轉帳資產的對應關係。
本說明書提供的一種區塊鏈系統,包括區塊鏈網路;
其中,區塊鏈虛擬機的指令集中包括出入校驗指令,並且,區塊鏈虛擬機中部署有對應於所述出入校驗指令的出入校驗邏輯;智慧合約編譯器的指令集中包括所述出入校驗指令,經所述智慧合約編譯器編譯的業務智慧合約中包含出入校驗智慧合約的合約標識,所述出入校驗智慧合約是預先部署於所述區塊鏈網路中的智慧合約;區塊鏈網路中部署有所述業務智慧合約,所述業務智慧合約對應有用戶資產表,所述用戶資產表用於記錄每個外部帳戶對應的資產,針對任一資產,該資產為包含加密金額的資料,該加密金額是對該資產的金額進行加密後得到的;
所述區塊鏈網路中的節點,透過轉帳外部帳戶獲得轉帳交易並廣播給其他節點;所述轉帳交易包括轉帳資產、找零資產和至少一個花銷資產;
所述區塊鏈網路中的每個節點,在執行所述轉帳交易時,透過區塊鏈虛擬機,調用所述業務智慧合約,並根據所述業務智慧合約中的所述出入校驗智慧合約的合約標識,調用所述出入校驗智慧合約;根據所述出入校驗智慧合約中的出入校驗指令,觸發執行所述出入校驗邏輯,以便採用同態加密演算法,校驗所述轉帳資產的金額與所述找零資產的金額之和是否等於各花銷資產的金額之和;若校驗結果為是,則透過區塊鏈虛擬機,執行所述業務智慧合約中的用戶資產表修改邏輯,以便解除所述轉帳外部帳戶與各花銷資產的對應關係,建立所述轉帳外部帳戶與所述找零資產的對應關係,並建立收帳外部帳戶與所述轉帳資產的對應關係。
本說明書提供的一種區塊鏈系統,包括區塊鏈網路;
其中,區塊鏈虛擬機的指令集中包括BASE64編碼指令,並且,區塊鏈虛擬機中部署有對應於所述BASE64編碼指令的BASE64編碼邏輯;智慧合約編譯器的指令集中包括所述BASE64編碼指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述BASE64編碼指令;區塊鏈網路中部署有所述業務智慧合約;
所述區塊鏈網路中的節點,獲得業務發起交易並廣播給其他節點;
所述區塊鏈網路中的每個節點,在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約;透過區塊鏈虛擬機,根據所述業務智慧合約中的BASE64編碼指令,觸發執行所述BASE64編碼邏輯,以對待編碼資料進行編碼操作。
本說明書提供的一種區塊鏈系統,包括區塊鏈網路;
其中,區塊鏈虛擬機的指令集中包括BASE64編碼指令,並且,區塊鏈虛擬機中部署有對應於所述BASE64編碼指令的BASE64編碼邏輯;智慧合約編譯器的指令集中包括所述BASE64編碼指令,經所述智慧合約編譯器編譯的業務智慧合約中包含BASE64編碼智慧合約的合約標識,所述BASE64編碼智慧合約是預先部署於所述區塊鏈網路中的智慧合約;所述區塊鏈網路中部署有所述業務智慧合約;
所述區塊鏈網路中的節點,獲得業務發起交易並廣播給其他節點;
所述區塊鏈網路中的每個節點,在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約;透過區塊鏈虛擬機,根據所述業務智慧合約中的所述BASE64編碼智慧合約的合約標識,調用所述BASE64編碼智慧合約;透過區塊鏈虛擬機,根據所述BASE64編碼智慧合約中的,BASE64編碼指令,觸發執行所述BASE64編碼邏輯,以對待編碼資料進行編碼操作。
本說明書提供的一種區塊鏈系統,包括區塊鏈網路;
其中,區塊鏈虛擬機的指令集中包括BASE64解碼指令,並且,區塊鏈虛擬機中部署有對應於所述BASE64解碼指令的BASE64解碼邏輯;智慧合約編譯器的指令集中包括所述BASE64解碼指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述BASE64解碼指令;區塊鏈網路中部署有所述業務智慧合約;
所述區塊鏈網路中的節點,獲得業務發起交易並廣播給其他節點;
所述區塊鏈網路中的每個節點,在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約;透過區塊鏈虛擬機,根據所述業務智慧合約中的BASE64解碼指令,觸發執行所述BASE64解碼邏輯,以對待解碼資料進行解碼操作。
本說明書提供的一種區塊鏈系統,包括區塊鏈網路;
其中,區塊鏈虛擬機的指令集中包括BASE64解碼指令,並且,區塊鏈虛擬機中部署有對應於所述BASE64解碼指令的BASE64解碼邏輯;智慧合約編譯器的指令集中包括所述BASE64解碼指令,經所述智慧合約編譯器編譯的業務智慧合約中包含BASE64解碼智慧合約的合約標識,所述BASE64解碼智慧合約是預先部署於所述區塊鏈網路中的智慧合約;所述區塊鏈網路中部署有所述業務智慧合約;
所述區塊鏈網路中的節點,獲得業務發起交易並廣播給其他節點;
所述區塊鏈網路中的每個節點,該節點在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約;透過區塊鏈虛擬機,根據所述業務智慧合約中的所述BASE64解碼智慧合約的合約標識,調用所述BASE64解碼智慧合約;透過區塊鏈虛擬機,根據所述BASE64解碼智慧合約中的,BASE64解碼指令,觸發執行所述BASE64解碼邏輯,以對待解碼資料進行解碼操作。
本說明書提供的一種區塊鏈系統,包括區塊鏈網路;
其中,區塊鏈虛擬機的指令集中包括RSA簽名驗證指令,並且,區塊鏈虛擬機中部署有對應於所述RSA簽名驗證指令的RSA簽名驗證邏輯;智慧合約編譯器的指令集中包括所述RSA簽名驗證指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述RSA簽名驗證指令;區塊鏈網路中部署有所述業務智慧合約;
所述區塊鏈網路中的節點,獲得業務發起交易並廣播給其他節點;
所述區塊鏈網路中的每個節點,在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約;透過區塊鏈虛擬機,根據所述業務智慧合約中的RSA簽名驗證指令,觸發執行所述RSA簽名驗證邏輯,以對業務簽名進行RSA簽名驗證操作,以對業務簽名進行RSA簽名驗證操作。
本說明書提供的一種區塊鏈系統,包括區塊鏈網路;
其中,區塊鏈虛擬機的指令集中包括RSA簽名驗證指令,並且,區塊鏈虛擬機中部署有對應於所述RSA簽名驗證指令的RSA簽名驗證邏輯;智慧合約編譯器的指令集中包括所述RSA簽名驗證指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述RSA簽名驗證智慧合約的合約標識,所述RSA簽名驗證智慧合約是預先部署於所述區塊鏈網路中的智慧合約;區塊鏈網路中部署有所述業務智慧合約;
所述區塊鏈網路中的節點,獲得業務發起交易並廣播給其他節點;
所述區塊鏈網路中的每個節點,在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約;透過區塊鏈虛擬機,根據所述業務智慧合約中的所述RSA簽名驗證智慧合約的合約標識,調用所述RSA簽名驗證智慧合約;透過區塊鏈虛擬機,根據所述RSA簽名驗證智慧合約中的RSA簽名驗證指令,觸發執行所述RSA簽名驗證邏輯,以對業務簽名進行RSA簽名驗證操作,以對業務簽名進行RSA簽名驗證操作。
本說明書提供的一種區塊鏈系統,包括區塊鏈網路;
其中,區塊鏈虛擬機的指令集中包括JSON處理指令,並且,區塊鏈虛擬機中部署有對應於所述JSON處理指令的JSON處理邏輯;智慧合約編譯器的指令集中包括所述JSON處理指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述JSON處理指令;區塊鏈網路中部署有所述業務智慧合約;
所述區塊鏈網路中的節點,獲得業務發起交易並廣播給其他節點;
所述區塊鏈網路中的每個節點,在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約;透過區塊鏈虛擬機,根據所述業務智慧合約中的JSON處理指令,觸發執行所述JSON處理邏輯,以對待處理資料進行JSON處理操作。
本說明書提供的一種區塊鏈系統,包括區塊鏈網路;
其中,區塊鏈虛擬機的指令集中包括JSON處理指令,並且,區塊鏈虛擬機中部署有對應於所述JSON處理指令的JSON處理邏輯;智慧合約編譯器的指令集中包括所述JSON處理指令,經所述智慧合約編譯器編譯的業務智慧合約中包含JSON處理智慧合約的合約標識,所述JSON處理智慧合約是預先部署於所述區塊鏈網路中的智慧合約;區塊鏈網路中部署有所述JSON處理智慧合約與所述業務智慧合約;
所述區塊鏈網路中的節點,獲得業務發起交易並廣播給其他節點;
所述區塊鏈網路中的每個節點,在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約;透過區塊鏈虛擬機,根據所述業務智慧合約中的所述JSON處理智慧合約的合約標識,調用所述JSON處理智慧合約;透過區塊鏈虛擬機,根據所述JSON處理智慧合約中的JSON處理指令,觸發執行所述JSON處理邏輯,以對待處理資料進行JSON處理操作。
本說明書提供的一種區塊鏈系統,包括區塊鏈網路;
其中,區塊鏈虛擬機的指令集中包括XML處理指令,並且,區塊鏈虛擬機中部署有對應於所述XML處理指令的XML處理邏輯;智慧合約編譯器的指令集中包括所述XML處理指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述XML處理指令;區塊鏈網路中部署有所述業務智慧合約;
所述區塊鏈網路中的節點,獲得業務發起交易並廣播給其他節點;
所述區塊鏈網路中的每個節點,在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約;透過區塊鏈虛擬機,根據所述業務智慧合約中的XML處理指令,觸發執行所述XML處理邏輯,以對待處理資料進行XML處理操作。
本說明書提供的一種區塊鏈系統,包括區塊鏈網路;
其中,區塊鏈虛擬機的指令集中包括XML處理指令,並且,區塊鏈虛擬機中部署有對應於所述XML處理指令的XML處理邏輯;智慧合約編譯器的指令集中包括所述XML處理指令,經所述智慧合約編譯器編譯的業務智慧合約中包含XML處理智慧合約的合約標識,所述XML處理智慧合約是預先部署於所述區塊鏈網路中的智慧合約;區塊鏈網路中部署有所述XML處理智慧合約與所述業務智慧合約;
所述區塊鏈網路中的節點,獲得業務發起交易並廣播給其他節點;
所述區塊鏈網路中的每個節點,在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約;透過區塊鏈虛擬機,根據所述業務智慧合約中的所述XML處理智慧合約的合約標識,調用所述XML處理智慧合約;透過區塊鏈虛擬機,根據所述XML處理智慧合約中的XML處理指令,觸發執行所述XML處理邏輯,以對待處理資料進行XML處理操作。
本說明書提供的一種區塊鏈系統,包括區塊鏈網路;
其中,區塊鏈虛擬機的指令集中包括交易雜湊獲取指令,並且,區塊鏈虛擬機中部署有對應於所述交易雜湊獲取指令的交易雜湊獲取邏輯;智慧合約編譯器的指令集中包括所述交易雜湊獲取指令,經所述智慧合約編譯器編譯的業務智慧合約中包含所述交易雜湊獲取指令;區塊鏈網路中部署有所述業務智慧合約;
所述區塊鏈網路中的節點,獲得業務發起交易並廣播給其他節點;
所述區塊鏈網路中的每個節點,在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約;透過區塊鏈虛擬機,根據所述業務智慧合約中的交易雜湊獲取指令,觸發執行所述交易雜湊獲取邏輯,以獲取所述業務發起交易的交易雜湊。
本說明書提供的一種區塊鏈系統,包括區塊鏈網路;
其中,區塊鏈虛擬機的指令集中包括交易雜湊獲取指令,並且,區塊鏈虛擬機中部署有對應於所述交易雜湊獲取指令的交易雜湊獲取邏輯;智慧合約編譯器的指令集中包括所述交易雜湊獲取指令,經所述智慧合約編譯器編譯的業務智慧合約中包含交易雜湊獲取智慧合約的合約標識,所述交易雜湊獲取智慧合約是預先部署於所述區塊鏈網路中的智慧合約;區塊鏈網路中部署有所述交易雜湊獲取智慧合約與所述業務智慧合約;
所述區塊鏈網路中的節點,獲得業務發起交易並廣播給其他節點;
所述區塊鏈網路中的每個節點,在執行所述業務發起交易時,透過區塊鏈虛擬機,調用所述業務智慧合約;透過區塊鏈虛擬機,根據所述業務智慧合約中的所述交易雜湊獲取智慧合約的合約標識,調用所述交易雜湊獲取智慧合約;透過區塊鏈虛擬機,根據所述交易雜湊獲取智慧合約中的交易雜湊獲取指令,觸發執行所述交易雜湊獲取邏輯,以獲取所述業務發起交易的交易雜湊。
圖21示出了本說明書實施例所提供的一種區塊鏈系統的結構示意圖。
本說明書還提供一種電腦設備,其至少包括記憶體、處理器及儲存在記憶體上並可在處理器上運行的電腦程式,其中,處理器執行所述程式時實現本文各實施例的方法以及各實施例中至少兩個實施例組合後的方法的功能。
圖22示出了本說明書實施例所提供的一種更為具體的計算設備硬體結構示意圖,該設備可以包括:處理器2210、記憶體2220、輸入/輸出介面2230、通信介面2240和匯流排2250。其中處理器2210、記憶體2220、輸入/輸出介面2230和通信介面2240透過匯流排2250實現彼此之間在設備內部的通信連接。
處理器2210可以採用通用的CPU(Central Processing Unit,中央處理器)、微處理器、特定應用積體電路(Application Specific Integrated Circuit,ASIC)、或者一個或多個積體電路等方式實現,用於執行相關程式,以實現本說明書實施例所提供的技術方案。
記憶體2220可以採用ROM(Read Only Memory,唯讀記憶體)、RAM(Random Access Memory,隨機存取記憶體)、靜態儲存設備,動態儲存設備等形式實現。記憶體2220可以儲存作業系統和其他應用程式,在透過軟體或者固件來實現本說明書實施例所提供的技術方案時,相關的程式碼保存在記憶體2220中,並由處理器2210來調用執行。
輸入/輸出介面2230用於連接輸入/輸出模組,以實現資訊輸入及輸出。輸入輸出/模組可以作為組件配置在設備中(圖中未示出),也可以外接於設備以提供相應功能。其中輸入設備可以包括鍵盤、滑鼠、觸控螢幕、麥克風、各類傳感器等,輸出設備可以包括顯示器、揚聲器、振動器、指示燈等。
通信介面2240用於連接通信模組(圖中未示出),以實現本設備與其他設備的通信互動。其中通信模組可以透過有線方式(例如USB、網線等)實現通信,也可以透過無線方式(例如行動網路、WIFI、藍牙等)實現通信。
匯流排2250包括一通路,在設備的各個組件(例如處理器2210、記憶體2220、輸入/輸出介面2230和通信介面2240)之間傳輸資訊。
需要說明的是,儘管上述設備僅示出了處理器2210、記憶體2220、輸入/輸出介面2230、通信介面2240以及匯流排2250,但是在具體實施過程中,該設備還可以包括實現正常運行所必需的其他組件。此外,本領域的技術人員可以理解的是,上述設備中也可以僅包含實現本說明書實施例方案所必需的組件,而不必包含圖中所示的全部組件。
本說明書實施例還提供一種電腦可讀儲存媒體,其上儲存有電腦程式,該程式被處理器執行時實現本文各實施例的方法以及各實施例中至少兩個實施例組合後的方法的功能。
電腦可讀媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是電腦可讀指令、資料結構、程式的模組或其他資料。電腦的儲存媒體的例子包括,但不限於相變記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可抹除可程式唯讀記憶體(EEPROM)、快閃記憶體或其他記憶體技術、唯讀光碟唯讀記憶體(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存、磁盒式磁帶,磁帶磁碟儲存或其他磁性儲存設備或任何其他非傳輸媒體,可用於儲存可以被計算設備存取的資訊。按照本文中的界定,電腦可讀媒體不包括暫存電腦可讀媒體(transitory media),如調變的資料信號和載波。
透過以上的實施方式的描述可知,本領域的技術人員可以清楚地瞭解到本說明書實施例可借助軟體加必需的通用硬體平台的方式來實現。基於這樣的理解,本說明書實施例的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該電腦軟體產品可以儲存在儲存媒體中,如ROM/RAM、磁碟、光碟等,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)執行本說明書實施例各個實施例或者實施例的某些部分所述的方法。
上述實施例闡明的系統、方法、模組或單元,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦,電腦的具體形式可以是個人電腦、膝上型電腦、行動電話、相機電話、智慧電話、個人數位助理、媒體播放器、導航設備、電子郵件收發設備、遊戲控制台、平板電腦、穿戴式設備或者這些設備中的任意幾種設備的組合。
本說明書中的各個實施例均採用漸進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於裝置和設備實施例而言,由於其基本相似於方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。以上所描述的方法實施例僅僅是示意性的,其中所述作為分離部件說明的模組可以是或者也可以不是物理上分開的,在實施本說明書實施例方案時可以把各模組的功能在同一個或多個軟體和/或硬體中實現。也可以根據實際的需要選擇其中的部分或者全部模組來實現本實施例方案的目的。本領域普通技術人員在不付出創造性勞動的情況下,即可以理解並實施。
以上所述僅是本說明書實施例的具體實施方式,應當指出,對於本技術領域的普通技術人員來說,在不脫離本說明書實施例原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本說明書實施例的保護範圍。