基於區塊鏈的票據核銷方法及裝置、電子設備、儲存媒體
本說明書一個或多個實施例涉及區塊鏈技術領域,尤其涉及一種基於區塊鏈的票據核銷方法及裝置、電子設備、儲存媒體。
區塊鏈技術,也被稱之為分布式帳本技術,是一種由若干台計算設備共同參與“記帳”,共同維護一份完整的分布式資料庫的新興技術。由於區塊鏈技術具有去中心化、公開透明、每台計算設備可以參與資料庫記錄、並且各計算設備之間可以快速的進行資料同步的特性,使得區塊鏈技術已在衆多的領域中廣泛的進行應用。
有鑒於此,本說明書一個或多個實施例提供一種基於區塊鏈的票據核銷方法及裝置、電子設備、儲存媒體。
為實現上述目的,本說明書一個或多個實施例提供技術方案如下:
根據本說明書一個或多個實施例的第一方面,提出了一種基於區塊鏈的票據核銷方法,應用於區塊鏈節點;所述方法包括:
接收用於對目標電子票據進行核銷處理的目標交易;
回應於所述目標交易,調用發布在區塊鏈上的智慧合約中聲明的核銷邏輯,獲取所述目標電子票據的票據號碼,並校驗所述票據號碼與所述目標電子票據的開票方對應的區塊鏈帳戶中維護的電子票據號段是否匹配;其中,所述區塊鏈帳戶中維護的電子票據號段為分配至所述區塊鏈帳戶的用於開具電子票據的電子票據號碼號段;
如果是,進一步對所述目標電子票據的票據內容進行合法性校驗,並在合法性校驗通過後產生與所述目標電子票據對應的核銷處理完成事件,以及將所述核銷處理完成事件發布至所述區塊鏈進行存證。
可選的,所述區塊鏈包含用於維護電子票據號段的多級帳戶;
所述方法還包括:
接收開票方發送的申領交易,所述申領交易中包含所述開票方帳戶的帳戶標識;
回應於所述申領交易,調用發布在所述區塊鏈上的智慧合約中聲明的號碼申領邏輯,確定與所述帳戶標識對應的區塊鏈帳戶的上一級帳戶,並從所述上一級帳戶維護的電子票據號段中為所述開票方分配電子票據號碼;以及
將所分配的電子票據號碼添加至所述開票方的區塊鏈帳戶中。
可選的,所述目標電子票據的票據內容包括票據金額,所述進一步對所述目標電子票據的票據內容進行合法性校驗,包括:
校驗所述目標電子票據的票據金額是否與所述目標電子票據的入帳金額相匹配;
如果是,確定合法性校驗通過。
可選的,所述區塊鏈節點透過oracle預言機與電子票據的開票監管方的服務端對接;
所述校驗所述目標電子票據的票據金額是否與所述目標電子票據的入帳金額相匹配,包括:
透過所述oracle預言機從所述開票監管方的服務端中獲取所述目標電子票據的票據金額和所述目標電子票據的入帳金額的比較結果;
當得到的比較結果為所述票據金額與所述入帳金額一致時,確定所述票據金額與所述入帳金額相匹配。
可選的,所述透過所述oracle預言機從所述開票監管方的服務端中獲取所述目標電子票據的票據金額和所述目標電子票據的入帳金額的比較結果,包括:
在校驗出所述票據號碼與所述目標電子票據的開票方對應的區塊鏈帳戶中維護的電子票據號段相匹配後,產生針對所述票據號碼的校驗通過事件,以使所述開票監管方的服務端在監聽到所述校驗通過事件時,將所述校驗通過事件中記錄的所述票據金額與所述入帳金額進行比較,並透過所述oracle預言機返回比較結果。
可選的,所述透過所述oracle預言機從所述開票監管方的服務端中獲取所述目標電子票據的票據金額和所述目標電子票據的入帳金額的比較結果,包括:
透過所述oracle預言機向所述開票監管方的服務端發送針對所述票據金額與所述入帳金額的比較結果的獲取請求,以使所述開票監管方的服務端將所述票據金額與所述目標票據的入帳金額進行比較;
接收所述開票監管方的服務端透過所述oracle預言機返回的比較結果。
可選的,所述區塊鏈為聯盟鏈;所述聯盟鏈的聯盟成員包括作為開票監管方的各級財政機構、作為開票方的用票機構。
根據本說明書一個或多個實施例的第二方面,提出了一種基於區塊鏈的票據核銷裝置,應用於區塊鏈節點;所述裝置包括:
核銷接收單元,接收用於對目標電子票據進行核銷處理的目標交易;
票號校驗單元,回應於所述目標交易,調用發布在區塊鏈上的智慧合約中聲明的核銷邏輯,獲取所述目標電子票據的票據號碼,並校驗所述票據號碼與所述目標電子票據的開票方對應的區塊鏈帳戶中維護的電子票據號段是否匹配;其中,所述區塊鏈帳戶中維護的電子票據號段為分配至所述區塊鏈帳戶的用於開具電子票據的電子票據號碼號段;
合法性校驗單元,如果是,進一步對所述目標電子票據的票據內容進行合法性校驗,並在合法性校驗通過後產生與所述目標電子票據對應的核銷處理完成事件,以及將所述核銷處理完成事件發布至所述區塊鏈進行存證。
可選的,所述區塊鏈包含用於維護電子票據號段的多級帳戶;
所述裝置還包括:
申領接收單元,接收開票方發送的申領交易,所述申領交易中包含所述開票方帳戶的帳戶標識;
分配單元,回應於所述申領交易,調用發布在所述區塊鏈上的智慧合約中聲明的號碼申領邏輯,確定與所述帳戶標識對應的區塊鏈帳戶的上一級帳戶,並從所述上一級帳戶維護的電子票據號段中為所述開票方分配電子票據號碼;以及
將所分配的電子票據號碼添加至所述開票方的區塊鏈帳戶中。
可選的,所述目標電子票據的票據內容包括票據金額,所述合法性校驗單元具體用於:
校驗所述目標電子票據的票據金額是否與所述目標電子票據的入帳金額相匹配;
如果是,確定合法性校驗通過。
可選的,所述區塊鏈節點透過oracle預言機與電子票據的開票監管方的服務端對接;
所述合法性校驗單元進一步用於:
透過所述oracle預言機從所述開票監管方的服務端中獲取所述目標電子票據的票據金額和所述目標電子票據的入帳金額的比較結果;
當得到的比較結果為所述票據金額與所述入帳金額一致時,確定所述票據金額與所述入帳金額相匹配。
可選的,所述合法性校驗單元進一步用於:
在校驗出所述票據號碼與所述目標電子票據的開票方對應的區塊鏈帳戶中維護的電子票據號段相匹配後,產生針對所述票據號碼的校驗通過事件,以使所述開票監管方的服務端在監聽到所述校驗通過事件時,將所述校驗通過事件中記錄的所述票據金額與所述入帳金額進行比較,並透過所述oracle預言機返回比較結果。
可選的,所述合法性校驗單元進一步用於:
透過所述oracle預言機向所述開票監管方的服務端發送針對所述票據金額與所述入帳金額的比較結果的獲取請求,以使所述開票監管方的服務端將所述票據金額與所述目標票據的入帳金額進行比較;
接收所述開票監管方的服務端透過所述oracle預言機返回的比較結果。
可選的,所述區塊鏈為聯盟鏈;所述聯盟鏈的聯盟成員包括作為開票監管方的各級財政機構、作為開票方的用票機構。
根據本說明書一個或多個實施例的第三方面,提出了一種電子設備,包括:
處理器;
用於儲存處理器可執行指令的記憶體;
其中,所述處理器透過運行所述可執行指令以實現如上述任一實施例中所述基於區塊鏈的票據核銷方法。
根據本公開實施例的第四方面,提供一種電腦可讀儲存媒體,其上儲存有電腦指令,該指令被處理器執行時實現如上述實施例中任一所述基於區塊鏈的票據核銷方法的步驟。
在以上技術方案中,在區塊鏈上預先維護電子票據號段供區塊鏈帳戶申領票據號碼,而各區塊鏈帳戶在申領到票據號碼後,可利用申領到的票據號碼開具電子票據。
基於上述申領票據號碼的機制,在對目標電子票據進行核銷時,透過調用智慧合約校驗目標電子票據的票據號碼與目標電子票據的開票方對應的區塊鏈帳戶中維護的電子票據號段是否匹配,可避免對核銷發起方偽造的電子票據進行核銷。進一步的,在票據號碼通過校驗時,再透過智慧合約對目標電子票據的票據內容進行合法性校驗,從而可實現對目標電子票據進行全面的核銷。
這裏將詳細地對示例性實施例進行說明,其示例表示在圖式中。下面的描述涉及圖式時,除非另有表示,不同圖式中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式並不代表與本說明書一個或多個實施例相一致的所有實施方式。相反,它們僅是與如申請專利範圍中所詳述的、本說明書一個或多個實施例的一些方面相一致的裝置和方法的例子。
需要說明的是:在其他實施例中並不一定按照本說明書示出和描述的順序來執行相應方法的步驟。在一些其他實施例中,其方法所包括的步驟可以比本說明書所描述的更多或更少。此外,本說明書中所描述的單個步驟,在其他實施例中可能被分解為多個步驟進行描述;而本說明書中所描述的多個步驟,在其他實施例中也可能被合併為單個步驟進行描述。
區塊鏈一般被劃分為三種類型:公有鏈(Public Blockchain),私有鏈(Private Blockchain)和聯盟鏈(Consortium Blockchain)。此外,還可以有上述多種類型的結合,比如私有鏈+聯盟鏈、聯盟鏈+公有鏈等。
其中,去中心化程度最高的是公有鏈。公有鏈以比特幣、以太坊為代表,加入公有鏈的參與者(也可稱為區塊鏈中的節點)可以讀取鏈上的資料記錄、參與交易、以及競爭新區塊的記帳權等。而且,各節點可自由加入或者退出網路,並進行相關操作。
私有鏈則相反,該網路的寫入權限由某個組織或者機構控制,資料讀取權限受組織規定。簡單來說,私有鏈可以為一個弱中心化系統,其對節點具有嚴格限制且節點數量較少。這種類型的區塊鏈更適合於特定機構內部使用。
聯盟鏈則是介於公有鏈以及私有鏈之間的區塊鏈,可實現“部分去中心化”。聯盟鏈中各個節點通常有與之相對應的實體機構或者組織;節點透過授權加入網路並組成利益相關聯盟,共同維護區塊鏈運行。
基於區塊鏈的基本特性,區塊鏈通常是由若干個區塊構成。在這些區塊中分別記錄有與該區塊的創建時刻對應的時間戳,所有的區塊嚴格按照區塊中記錄的時間戳,構成一條在時間上有序的資料鏈條。
對於物理世界產生的真實資料,可以將其構建成區塊鏈所支持的標準的交易(transaction)格式,然後發布至區塊鏈,由區塊鏈中的節點設備對收到的交易進行共識處理,並在達成共識後,由區塊鏈中作為記帳節點的節點設備,將這筆交易打包進區塊,在區塊鏈中進行持久化存證。
其中,區塊鏈中支持的共識演算法可以包括:
第一類共識演算法,即節點設備需要爭奪每一輪的記帳周期的記帳權的共識演算法;例如,工作量證明(Proof of Work, POW)、股權證明(Proof of Stake,POS)、委任權益證明(Delegated Proof of Stake,DPOS)等共識演算法;
第二類共識演算法,即預先為每一輪記帳周期選舉記帳節點(不需要爭奪記帳權)的共識演算法;例如,實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)等共識演算法。
在採用第一類共識演算法的區塊鏈網路中,爭奪記帳權的節點設備,都可以在接收到交易後執行該筆交易。爭奪記帳權的節點設備中可能有一個節點設備在本輪爭奪記帳權的過程中勝出,成為記帳節點。記帳節點可以將收到的交易與其它交易一起打包以產生最新區塊,並將產生的最新區塊或者該最新區塊的區塊頭發送至其它節點設備進行共識。
在採用第二類共識演算法的區塊鏈網路中,具有記帳權的節點設備在本輪記帳前已經商定好。因此,節點設備在接收到交易後,如果自身不是本輪的記帳節點,則可以將該交易發送至記帳節點。對於本輪的記帳節點,在將該交易與其它交易一起打包以產生最新區塊的過程中或者之前,可以執行該交易。記帳節點在產生最新區塊後,可以將該最新區塊或者該最新區塊的區塊頭發送至其它節點設備進行共識。
如上所述,無論區塊鏈採用以上示出的哪種共識演算法,本輪的記帳節點都可以將接收到的交易打包以產生最新區塊,並將產生的最新區塊或者該最新區塊的區塊頭發送至其它節點設備進行共識驗證。如果其它節點設備接收到最新區塊或者該最新區塊的區塊頭後,經驗證沒有問題,可以將該最新區塊追加到原有的區塊鏈末尾,從而完成區塊鏈的記帳過程。其它節點驗證記帳節點發來的新的區塊或區塊頭的過程中,也可以執行該區塊中的包含的交易。
在區塊鏈領域,有一個重要的概念就是帳戶(Account);以以太坊為例,以太坊通常將帳戶劃分為外部帳戶和合約帳戶兩類;外部帳戶就是由用戶直接控制的帳戶,也稱之為用戶帳戶;而合約帳戶則是由用戶透過外部帳戶創建的,包含合約代碼的帳戶(即智慧合約)。當然,對於一些基於以太坊的架構而衍生出的區塊鏈模型(比如螞蟻區塊鏈),還可以對區塊鏈支持的帳戶類型,進行進一步的擴展,在本說明書中不進行特別限定。
對於區塊鏈中的帳戶而言,通常會透過一個結構體,來維護帳戶的帳戶狀態。當區塊中的交易被執行後,區塊鏈中與該交易相關的帳戶的狀態通常也會發生變化。
以以太坊為例,帳戶的結構體通常包括Balance,Nonce,Code和Storage等欄位。其中:
Balance欄位,用於維護帳戶目前的帳戶餘額;
Nonce欄位,用於維護該帳戶的交易次數;它是用於保障每筆交易能且只能被處理一次的計數器,有效避免重放攻擊;
Code欄位,用於維護該帳戶的合約代碼;在實際應用中,Code欄位中通常僅維護合約代碼的hash值;因而,Code欄位通常也稱之為Codehash欄位。
Storage欄位,用於維護該帳戶的儲存內容(預設欄位值為空);對於合約帳戶而言,通常會分配一個獨立的儲存空間,用以儲存該合約帳戶的儲存內容;該獨立的儲存空間通常稱之為該合約帳戶的帳戶儲存。合約帳戶的儲存內容通常會構建成MPT(Merkle Patricia Trie)樹的資料結構儲存在上述獨立的儲存空間之中;其中,基於合約帳戶的儲存內容構建成的MPT樹,通常也稱之為Storage樹。而Storage欄位通常僅維護該Storage樹的根節點;因此,Storage欄位通常也稱之為StorageRoot欄位。
其中,對於外部帳戶而言,以上示出的Code欄位和Storage欄位的欄位值均為空值。
對於大多數區塊鏈模型,通常都會使用Merkle樹;或者,基於Merkle樹的資料結構,來儲存和維護資料。以以太坊為例,以太坊使用了MPT樹(一種Merkle樹變種),作為資料組織形式,用來組織和管理帳戶狀態、交易資訊等重要資料。
在實際應用中,不論是公有鏈、私有鏈還是聯盟鏈,都可能提供智慧合約(Smart contract)的功能。區塊鏈上的智慧合約是在區塊鏈上可以被交易觸發執行的合約。智慧合約可以透過代碼的形式定義。
以以太坊為例,支持用戶在以太坊網路中創建並調用一些複雜的邏輯。以太坊作為一個可程式化區塊鏈,其核心是以太坊虛擬機(EVM),每個以太坊節點都可以運行EVM。EVM是一個圖靈完備的虛擬機,透過它可以實現各種複雜的邏輯。用戶在以太坊中發布和調用智慧合約就是在EVM上運行的。實際上,EVM直接運行的是虛擬機代碼(虛擬機字節碼,下簡稱“字節碼”),所以部署在區塊鏈上的智慧合約可以是字節碼。
如圖1所示,Bob將一筆包含創建智慧合約資訊的交易(Transaction)發送到以太坊網路後,各節點均可以在EVM中執行這筆交易。其中,圖中1中交易的From欄位用於記錄發起創建智慧合約的帳戶的位址,交易的Data欄位的欄位值保存的合約代碼可以是字節碼,交易的To欄位的欄位值為一個null(空)的帳戶。當節點間透過共識機制達成一致後,這個智慧合約成功創建,後續用戶可以調用這個智慧合約。
智慧合約創建後,區塊鏈上出現一個與該智慧合約對應的合約帳戶,並擁有一個特定的位址;比如,圖1中各節點中的“0x68e12cf284…”就代表了創建的這個合約帳戶的位址;合約代碼(Code)和帳戶儲存(Storage)將保存在該合約帳戶的帳戶儲存中。智慧合約的行為由合約代碼控制,而智慧合約的帳戶儲存則保存了合約的狀態。換句話說,智慧合約使得區塊鏈上產生包含合約代碼和帳戶儲存的虛擬帳戶。
前述提到,包含創建智慧合約的交易的Data欄位保存的可以是該智慧合約的字節碼。字節碼由一連串的字節組成,每一字節可以標識一個操作。基於開發效率、可讀性等多方面考慮,開發者可以不直接書寫字節碼,而是選擇一門高級語言編寫智慧合約代碼。例如,高級語言可以採用諸如Solidity、Serpent、LLL語言等。對於採用高級語言編寫的智慧合約代碼,可以經過編譯器編譯,產生可以部署到區塊鏈上的字節碼。
以Solidity語言為例,用其編寫的合約代碼與面向對象程式化語言中的類(Class)很相似,在一個合約中可以聲明多種成員,包括狀態變量、函數、函數修改器、事件等。狀態變量是永久儲存在智慧合約的帳戶儲存(Storage)欄位中的值,用於保存合約的狀態。
如圖2所示,仍以以太坊為例,Bob將一筆包含調用智慧合約資訊的交易發送到以太坊網路後,各節點均可以在EVM中執行這筆交易。其中,圖2中交易的From欄位用於記錄發起調用智慧合約的帳戶的位址,To欄位用於記錄被調用的智慧合約的位址,交易的Data欄位用於記錄調用智慧合約的方法和參數。調用智慧合約後,合約帳戶的帳戶狀態可能改變。後續,某個客戶端可以透過接入的區塊鏈節點(例如圖2中的節點1)查看合約帳戶的帳戶狀態。
智慧合約可以以規定的方式在區塊鏈網路中每個節點獨立的執行,所有執行記錄和資料都保存在區塊鏈上,所以當這樣的交易執行完畢後,區塊鏈上就保存了無法篡改、不會丟失的交易憑證。
創建智慧合約和調用智慧合約的示意圖如圖3所示。以太坊中要創建一個智慧合約,需要經過編寫智慧合約、變成字節碼、部署到區塊鏈等過程。以太坊中調用智慧合約,是發起一筆指向智慧合約位址的交易,各個節點的EVM可以分別執行該交易,將智慧合約代碼分布式的運行在以太坊網路中每個節點的虛擬機中。
以以太坊代表的傳統的區塊鏈模型,為了在區塊鏈上實現“價值轉移”,通常都支持將現實世界的貨幣轉換為能夠在鏈上流通的虛擬代幣。
而在區塊鏈領域,對於一些基於以太坊的架構而衍生出的區塊鏈模型(比如螞蟻區塊鏈),通常不再支持將現實世界的貨幣轉換為能夠在鏈上流通的虛擬代幣的功能;取而代之的是,在這些區塊鏈模型中,可以將現實世界中的一些非貨幣屬性的實體資產,轉化成為能夠在區塊鏈上流通的虛擬資產。
其中,需要說明的是,將現實世界中的非貨幣屬性的實體資產轉化為區塊鏈上的虛擬資產,通常是指將該實體資產與區塊鏈上的虛擬資產進行“錨定”,作為這些虛擬資產的價值支撑,進而在區塊鏈上產生與實體資產的價值匹配,且能夠在區塊鏈上的區塊鏈帳戶之間進行流通的虛擬資產的過程。
在實現時,可以對區塊鏈支持的帳戶類型進行擴展,在區塊鏈支持的帳戶類型的基礎上,再擴展出一種資產帳戶(也稱之為資產對象);比如,可以在以太坊支持的外部帳戶、合約帳戶的基礎上,再擴展出一種資產帳戶;擴展出的該資產帳戶,即為可以將現實世界中的非貨幣屬性的實體資產作為價值支撑,且可以在區塊鏈帳戶之間流通的虛擬資產。
對於接入這類區塊鏈的用戶而言,除了可以在區塊鏈上完成用戶帳戶、智慧合約的創建以外,在區塊鏈上創建一筆與現實世界的非貨幣屬性的實體資產價值匹配的虛擬資產,在區塊鏈上進行流通;
例如,用戶可以將持有的房產、股票、貸款合同、票據、應收帳款等非貨幣屬性的實體資產,轉換為價值匹配的虛擬資產在區塊鏈上流通。
其中,對於上述資產帳戶而言,具體也可以透過一個結構體,來維護帳戶的帳戶狀態。上述資產帳戶的結構體所包含的內容,可以與以太坊相同,當然也可以基於實際的需求進行設計;
在一種實現方式中,以上述資產帳戶的結構體所包含的內容與以太坊相同為例,上述資產帳戶的結構體也可以包括以上描述的Balance,Nonce,Code和Storage等欄位。
需要說明的是,在以太坊中,Balance欄位通常用於維護帳戶目前的帳戶餘額;而對於基於以太坊的架構而衍生出的區塊鏈模型而言,由於其可能並不支持將現實世界的貨幣轉換為能夠在鏈上流通的虛擬代幣,因此在這類區塊鏈中,可以對Balance欄位的含義進行擴展,不再表示帳戶的“餘額”,而是用於維護帳戶持有的“虛擬資產”對應的資產帳戶的位址資訊。其中,在實際應用中,Balance欄位中可以維護多筆“虛擬資產”對應的資產帳戶的位址資訊。
在這種情況下,以上示出的外部帳戶、合約帳戶和資產帳戶,均可以透過在Balance欄位中添加需要持有的“虛擬資產”對應的資產帳戶的位址資訊,來持有這筆虛擬資產。即除了外部帳戶和合約帳戶以外,資產帳戶本身也可以持有虛擬資產。
對於資產帳戶而言,Nonce,Code欄位的欄位值可以為空值(也可以不為空);而Storage欄位的欄位值可以不再是空值;Storage欄位可以用於維護與該資產帳戶對應的“虛擬資產”的資產狀態。其中,在Storage欄位中維護與該資產帳戶對應的“虛擬資產”的資產狀態的具體方式,可以基於需求靈活的進行設計,不再贅述。
在基於以太坊的架構而衍生出的區塊鏈模型中,用戶可以透過以下示出的實現方式,在區塊鏈上創建一筆與現實世界的非貨幣屬性的實體資產價值匹配的虛擬資產:
在一種實現方式中,可以對區塊鏈支持的交易類型進行擴展,擴展出一種用於創建虛擬資產的交易;比如,以太坊支持的交易類型通常包括普通的轉帳交易、創建智慧合約的交易和調用智慧合約的交易,則可以在以上三種類型的交易的基礎上,再擴展出一種用於創建虛擬資產的交易。
在這種情況下,用戶可以透過客戶端向區塊鏈網路中發布一筆用於創建虛擬資產的交易,由區塊鏈中的節點設備在本地的EVM中執行這筆交易,來為該用戶創建虛擬資產。當各節點設備透過共識機制達成一致後,這筆虛擬資產成功創建,區塊鏈上出現一個與這筆虛擬資產對應的資產帳戶,並擁有一個特定的位址。
在另一種實現方式中,也可以在區塊鏈上部署用於創建虛擬資產的智慧合約;其中,部署用於創建虛擬資產的智慧合約的過程不再贅述。
在這種情況下,用戶可以透過客戶端向區塊鏈網路中發布一筆用於調用該智慧合約的交易,由區塊鏈中的節點設備在本地的EVM中執行這筆交易,並在EVM中運行智慧合約相關的合約代碼,來為該用戶創建虛擬資產。當各節點設備透過共識機制達成一致後,這筆虛擬資產成功創建,區塊鏈上出現一個與這筆虛擬資產對應的資產帳戶,並擁有一個特定的位址。
當然,對於一些基於以太坊的架構而衍生出的區塊鏈模型,如果其也支持將現實世界的貨幣轉換為能夠在鏈上流通的虛擬代幣的功能,那麽仍然可以將現實世界中的一些非貨幣屬性的實體資產,轉化成為能夠在區塊鏈上流通的虛擬代幣的形式,在區塊鏈上流通,在本說明書中不再贅述。
在跨鏈場景下,多個區塊鏈可以透過跨鏈中繼實現跨鏈對接。
其中,跨鏈中繼,可以透過橋接介面與多個區塊鏈分別進行對接,並基於實現的資料搬運邏輯,完成該多個區塊鏈之間的跨鏈資料同步。
在實現上述跨鏈中繼時所採用的跨鏈技術,在本說明書中不進行特別限定;例如,在實際應用中,可以透過側鏈技術、公證人技術等跨鏈機制,將多個區塊鏈連接起來。
當多個區塊鏈透過跨鏈中繼實現對接之後,區塊鏈之間就可以去讀取並認證其它區塊鏈上的資料,也可以透過跨鏈中繼去調用其它區塊鏈上部署的智慧合約。
區塊鏈上部署的智慧合約,除了可以使用區塊鏈上存證的資料以外,也可以透過Oracle預言機,來引用鏈外的資料實體上的資料,進而實現智慧合約與真實世界的資料實體之間的資料互動。鏈外的資料實體,可以包括諸如部署在鏈外的中心化的伺服器或者資料中心,等等。
其中,與跨鏈中繼不同的是,Oracle預言機的功能並不是將一個區塊鏈上的資料同步到另一個區塊鏈上,而是將鏈外的資料實體上的資料同步到區塊鏈上;
也即,跨鏈中繼用於連接兩個區塊鏈,而Oracle預言機用於連接區塊鏈與鏈外的資料實體,實現區塊鏈與真實世界的資料互動。
請參見圖4,圖4是一示例性實施例提供的一種基於區塊鏈的票據核銷方法的流程圖。如圖4所示,該方法應用於區塊鏈節點,可以包括以下步驟:
步驟402,接收用於對目標電子票據進行核銷處理的目標交易。
在本實施例中,財政機構可預先建立多級帳戶,針對各級帳戶配置對應的電子票據號段以供各級帳戶下的用票機構開具電子票據使用;換言之,電子票據號碼與電子票據之間為“一一對應”的關係。例如,可按照“省廳、市級、區/縣”來建立多級帳戶,由省廳的財政帳戶預先配置全省的電子票據號段,再將配置好的電子票據號段分配至各個市級的財政帳戶,而市級的財政帳戶申領到相應的電子票據號段後,再向區/縣的財政帳戶分配電子票據號段。
基於上述“多級帳戶維護電子票據號段”的體系,開票方可透過向上一級帳戶申領的方式來獲取電子票據號碼。作為一示例性實施例,區塊鏈上包含用於維護電子票據號段的多級帳戶,開票方可打包一筆申領交易(包含開票方帳戶的帳戶標識),並透過向區塊鏈節點發送該申領交易來獲取電子票據號碼。區塊鏈節點在接收到開票方發送的申領交易後,可回應於該申領交易,調用發布在區塊鏈上的智慧合約中聲明的號碼申領邏輯,確定與該帳戶標識對應的區塊鏈帳戶的上一級帳戶,並從該上一級帳戶維護的電子票據號段中為開票方分配電子票據號碼;以及將所分配的電子票據號碼添加至開票方的區塊鏈帳戶中。比如,開票方為市級的用票機構,那麽對應的上一級帳戶為省廳的財政機構的區塊鏈帳戶。或者,各級帳戶下的用票機構可透過所屬級別的財政機構向上一級財政帳戶申領電子票據號碼,再由所屬級別的財政機構返回申領到的電子票據號碼。例如,由市級財政機構的區塊鏈帳戶向省廳財政機構的區塊鏈帳戶申領電子票據號段,再將申領到的電子票據號段分配至市級的各個用票機構。
在一種情況下,電子票據可由開票方在離線開具,開具以後再由開票方發布至區塊鏈上進行存證。在另一種情況下,可預先在區塊鏈上發布用於利用電子票據開具電子發票的智慧合約,而各個開票方申領到的電子票據號碼可發布至區塊鏈上進行存證。那麽,在調用智慧合約開具電子票據後,開具的電子票據可發布至區塊鏈上進行存證。
在利用申領到的電子票據號碼開具電子票據後,該電子票據的開票方或者開票監管方可發起對該電子票據的核銷操作。具體而言,可打包一筆用於對目標電子票據進行核銷處理的目標交易,該目標交易中包含目標電子票據的票據標識;其中,可採用票據代碼、校驗碼等作為票據標識,也可直接採用票據號碼作為票據標識。
步驟404,回應於所述目標交易,調用發布在區塊鏈上的智慧合約中聲明的核銷邏輯,獲取所述目標電子票據的票據號碼,並校驗所述票據號碼與所述目標電子票據的開票方對應的區塊鏈帳戶中維護的電子票據號段是否匹配;其中,所述區塊鏈帳戶中維護的電子票據號段為分配至所述區塊鏈帳戶的用於開具電子票據的電子票據號碼號段。
在本實施例中,由於開票方申領到的電子票據號碼被添加至開票方的區塊鏈帳戶中,基於區塊鏈不可篡改的特點,可通過校驗電子票據號碼來防止核銷發起方對偽造的電子票據進行核銷的問題。
步驟406,如果是,進一步對所述目標電子票據的票據內容進行合法性校驗,並在合法性校驗通過後產生與所述目標電子票據對應的核銷處理完成事件,以及將所述核銷處理完成事件發布至所述區塊鏈進行存證。
在本實施例中,在校驗目標電子票據的票據號碼通過以後,對目標電子票據的票據內容進行合法性校驗,從而實現對目標電子票據進行較為全面的核銷。其中,票據內容可以是票據明細、票據金額等。
例如,在對目標電子票據的票據內容進行合法性校驗時,可校驗目標電子票據的票據金額是否與目標電子票據的入帳金額相匹配;如果是,則確定合法性校驗通過。其中,入帳金額由開票監管方來維護,比如,可以是各級財政機構,在開具電子票據時,各級財政機構正是作為票據的入帳方。
而區塊鏈節點可透過oracle預言機與電子票據的開票監管方的服務端對接,因此區塊鏈節點可透過oracle預言機從開票監管方的服務端中獲取目標電子票據的票據金額和目標電子票據的入帳金額的比較結果;當得到的比較結果為票據金額與入帳金額一致時,可確定票據金額與入帳金額相匹配。
在一種情況下,區塊鏈節點可透過事件機制來與開票監管方的服務端進行互動。比如,在校驗出票據號碼與目標電子票據的開票方對應的區塊鏈帳戶中維護的電子票據號段相匹配後,區塊鏈節點可產生針對該票據號碼的校驗通過事件(包含目標電子票據的票據金額),以使開票監管方的服務端在監聽到校驗通過事件時,將校驗通過事件中記錄的票據金額與入帳金額進行比較,並透過oracle預言機返回比較結果。
在另一種情況下,區塊鏈節點可透過oracle預言機主動向開票監管方的服務端獲取資料。比如,區塊鏈節點透過oracle預言機向開票監管方的服務端發送針對目標電子票據的票據金額與入帳金額的比較結果的獲取請求,以使開票監管方的服務端將該票據金額與該目標票據的入帳金額進行比較,並透過oracle預言機返回比較結果。
需要說明的是,本說明書一個或多個實施例中的區塊鏈可以是聯盟鏈。其中,該聯盟鏈的聯盟成員包括作為開票監管方的各級財政機構、作為開票方的用票機構。而接入區塊鏈的用戶在區塊鏈上發起的請求的類型,具體可以是指傳統的區塊鏈中所採用的交易(transaction)。當然,接入區塊鏈的用戶在區塊鏈上發起的請求的類型,具體也可以是交易以外的,其它形式的具有標準的資料結構的指令、消息等,本說明書一個或多個實施例並不進行特別限定。在以下的各實施例中,將以接入區塊鏈的用戶在區塊鏈上發起的請求為交易為例進行說明。
在以上技術方案中,在區塊鏈上預先維護電子票據號段供區塊鏈帳戶申領票據號碼,而各區塊鏈帳戶在申領到票據號碼後,可利用申領到的票據號碼開具電子票據。
基於上述申領票據號碼的機制,在對目標電子票據進行核銷時,透過調用智慧合約校驗目標電子票據的票據號碼與目標電子票據的開票方對應的區塊鏈帳戶中維護的電子票據號段是否匹配,可避免對核銷發起方偽造的電子票據進行核銷。進一步的,在票據號碼通過校驗時,再透過智慧合約對目標電子票據的票據內容進行合法性校驗,從而可實現對目標電子票據進行全面的核銷。
圖5是一示例性實施例提供的一種基於區塊鏈的票據核銷方案的整體架構示意圖。如圖5所示,伺服器52上運行有區塊鏈的客戶端,使得該伺服器55被配置為一區塊鏈節點。核銷發起方50可以預先透過客戶端51在伺服器52處進行帳號註冊,得到與自身唯一對應的已註冊帳號。然後,核銷發起方50可以透過在客戶端51上登錄該已註冊帳號,而伺服器52基於該已註冊帳號在客戶端51上的登錄資訊,確定該已註冊帳號(對應於該核銷發起方)與客戶端51之間建立了綁定關係。所需建立的綁定關係為核銷發起方50的帳戶資訊與客戶端51的設備資訊之間的綁定關係。基於該綁定關係,使得伺服器52在接收到客戶端51後續發送的目標交易時,可以確認該交易對應於核銷發起方50。
以核銷為例,核銷發起方50可在客戶端51上登錄已註冊帳號,透過客戶端51打包一筆用於對目標電子票據進行核銷的目標交易,並透過客戶端51發送至伺服器52。伺服器52(作為區塊鏈節點)在接收到目標交易後調用智慧合約對目標電子票據的票據號碼和票據內容進行校驗,並在校驗通過後產生核銷處理完成事件發布至區塊鏈上進行存證。
為了便於理解,下面針對客戶端51、伺服器52(作為區塊鏈節點)分別在核銷過程中實現的操作和功能,結合圖6-8對本說明書的技術方案進行詳細說明。圖6是一示例性實施例提供的一種申領電子票據號碼的互動圖。如圖6所示,該互動過程可以包括以下步驟:
步驟602,開票方客戶端打包一筆申領交易。
在本實施例中,以開票方作為核銷發起方為例進行說明,開票方可透過客戶端打包一筆申領交易以申領用於開具電子票據的票據號碼。其中,申領交易中包含開票方帳戶的帳戶標識;比如,為開票方的已註冊帳號。
財政機構可預先建立多級帳戶,針對各級帳戶配置對應的電子票據號段以供各個下級帳戶下的用票機構開具電子票據使用。換言之,電子票據號碼與電子票據之間為“一一對應”的關係。
步驟604,開票方客戶端向區塊鏈節點發送申領交易。
步驟606,區塊鏈節點確定開票方的上一級帳戶。
例如,可按照“省廳、市級、區/縣”來建立多級帳戶;其中,省廳為市級的上一級帳戶,市級為區/縣的上一級帳戶。
步驟608,區塊鏈節點為開票方分配電子票據號碼。
步驟610,將所分配的電子票據號碼添加至開票方的區塊鏈帳戶中。
在本實施例中,在完成對電子票據號碼的分配之後,區塊鏈節點可產生用於記錄分配結果的事件,那麽開票方客戶端在監聽到該事件時,可獲取到本次申領到的電子票據號碼(可以是一個電子票據號碼,或者為電子票據號段)。
舉例而言,如圖7所示,票據入庫省廳財政部門的區塊鏈帳戶中,添加電子票據號段00000001~99999999;其中,可將電子票據號段00000001~99999999作為可用庫存,用於分別劃分為多個電子票據號段下發至省本級和各個市(以下均以各個市、區/縣的名稱來代表相應的區塊鏈帳戶)。例如,電子票據號段00000001~50000001分配至省本級使用,進而電子票據號段00000001~50000000中包含的票據號碼用於分發至省本級下的各個用票機構,而剩餘的電子票據號段50000001~99999999用於下發至各個市(溫州市、台州市、杭州市等)使用。以台州市為例,可從剩餘的電子票據號段中劃分出票據號段80000001~89999999供台州市使用。
類似的,市級財政部門的區塊鏈帳戶在申領到相應的電子票據號段後,一部分可分發至市本級使用,而另一部分可下發至位於下級的各個行政區(區/縣)。例如,電子票據號段80000001~80999998用於分發至市本級使用,而剩餘的電子票據號段中80999999~83000000用於下發至三門縣,83000001~83999999用於下發至臨海市。
需要說明的是,各級帳戶申領到的電子票據號段(或電子票據號碼)可維護於各級帳戶的結構體中。舉例而言,可對Balance,Nonce,Code和Storage等欄位的含義進行擴展。例如,Balance欄位用於維護帳戶可分發的電子票據號段,Storage欄位用於維護帳戶可下發的電子票據號段。特別的,位於多級帳戶中最底層的帳戶(比如臨海市、三門縣等),Balance欄位用於維護帳戶可分發的電子票據號段,而Storage欄位為空。
或者,Balance欄位用於維護帳戶可下發的電子票據號段,Storage欄位用於維護帳戶可分發的電子票據號段。當然,各個欄位具體的擴展方式,可以基於需求靈活的進行設計,本說明書一個或多個實施例並不對此進行限制。
開票方在申領到電子票據號碼後,可利用申領到的電子票據號碼開具電子票據;其中,電子票據和電子票據號碼為“一一對應”的關係。那麽,後續開票方或者開票監管方在對電子票據進行核銷時,可基於電子票據號碼對待核銷的電子票據進行校驗,從而可避免對核銷發起方偽造的電子票據進行核銷。
請參見圖8,圖8是一示例性實施例提供的一種核銷電子票據的互動圖。如圖8所示,該互動過程可以包括以下步驟:
步驟802,區塊鏈節點接收核銷交易。
以聯盟鏈為例,聯盟鏈成員可在智慧合約中聲明核銷邏輯,用於對目標電子票據進行核銷處理。當完成對該智慧合約的開發後,該聯盟鏈成員可以透過聯盟鏈中的任一節點設備將該智慧合約發布至聯盟鏈,並在該智慧合約由該聯盟鏈中的部分指定的成員節點設備(比如,聯盟鏈中指定的若干個具有記帳權限的權威節點設備)完成共識後,存證至該聯盟鏈的區塊中。
那麽,當開票方或者開票監管方需要對目標電子票據進行核銷時,可作為核銷發起方打包一筆核銷交易,該核銷交易中包含目標電子票據的票據標識和目標電子票據的開票方區塊鏈帳戶的帳戶標識;其中,可採用票據代碼、校驗碼等作為票據標識,也可直接採用票據號碼作為票據標識。
步驟804,區塊鏈節點校驗目標電子票據的票據號碼。
在本實施例中,區塊鏈節點在接收到核銷交易後,回應於該目標交易,調用發布在區塊鏈上的智慧合約中聲明的核銷邏輯,獲取目標電子票據的票據號碼,並校驗該票據號碼與目標電子票據的開票方對應的區塊鏈帳戶中維護的電子票據號段是否匹配。其中,當採用票據代碼或校驗碼等作為票據標識時,區塊鏈節點需先根據票據標識查詢區塊鏈上存證的相應電子票據(即目標電子票據),在從查詢到的電子票據中讀取票據號碼。
區塊鏈節點可根據核銷交易中包含的帳戶標識確定出臨海市的區塊鏈帳戶中維護的電子票據號段(即帳戶中維護的“可分發”的電子票據號段),進而確定目標電子票據的票據號碼是否屬該電子票據號段中;如果屬,則校驗通過。承接於上述舉例,假定核銷發起方為屬臨海市的用票單位,臨海市的區塊鏈帳戶維護的電子票據號段為83000001~83999999,而目標電子票據的票據號碼為83001001(屬上述電子票據號段),則可判定校驗通過。
步驟806,在票據號碼校驗通過後,區塊鏈節點向oracle預言機發送針對目標電子票據的票據金額與入帳金額的比較結果的獲取請求。
在本實施例中,在校驗目標電子票據的票據號碼通過以後,可進一步對目標電子票據的票據內容進行合法性校驗,從而實現對目標電子票據進行較為全面的核銷。其中,票據內容可以是票據明細、票據金額等。
以票據內容為票據金額為例,電子票據的入帳金額由開票監管方來維護,比如,可以是各級財政機構,在開具電子票據時,各級財政機構正是作為票據的入帳方。因此,區塊鏈節點可透過與開票監管方的服務端對接的oracle預言機來獲取票據金額與入帳金額的比較結果。
步驟808,oracle預言機向開票監管方轉發獲取請求。
步驟810,開票監管方比較票據金額和入帳金額。
在一種情況下,獲取請求可包含目標電子票據的票據標識和票據金額,開票監管方根據票據標識讀取本地記錄的目標電子票據的入帳金額,並與票據金額進行比較,進而將比較結果透過oracle預言機返回至區塊鏈節點。
在另一種情況下,獲取請求可包含目標電子票據的票據標識,開票監管方根據票據標識讀取本地記錄的目標電子票據的入帳金額,並將比較結果透過oracle預言機返回至區塊鏈節點,以由區塊鏈節點進行比較。
步驟812,開票監管方向oracle預言機返回比較結果。
步驟814,oracle預言機向區塊鏈節點轉發比較結果。
步驟816,當比較結果為票據金額和入帳金額一致時,區塊鏈節點產生核銷處理完成事件。
在本實施例中,當核銷發起方監聽到對應於目標電子票據的核銷處理完成事件時,可判定目標電子票據核銷完成。進一步的,核銷發起方還可在本地維護對應於目標電子票據的狀態機,當判定目標電子票據核銷完成時,將該狀態機切換為核銷完成狀態。
與上述方法實施例相對應,本申請還提供了裝置的實施例。
與上述方法實施例相對應,本說明書還提供了一種基於區塊鏈的票據核銷裝置的實施例。
本說明書的基於區塊鏈的票據核銷裝置的實施例可以應用在電子設備上。裝置實施例可以透過軟體實現,也可以透過硬體或者軟硬體結合的方式實現。以軟體實現為例,作為一個邏輯意義上的裝置,是透過其所在電子設備的處理器將非易失性記憶體中對應的電腦程式指令讀取到內部記憶體中運行形成的。
從硬體層面而言,請參考圖9,圖9是一示例性實施例提供的一種設備的示意結構圖。如圖9所示,在硬體層面,該設備包括處理器902、內部匯流排904、網路介面906、內部記憶體908以及非易失性記憶體910,當然還可能包括其他業務所需要的硬體。處理器902從非易失性記憶體910中讀取對應的電腦程式到內部記憶體908中然後運行,在邏輯層面上形成基於區塊鏈的票據核銷裝置。當然,除了軟體實現方式之外,本說明書一個或多個實施例並不排除其他實現方式,比如邏輯器件抑或軟硬體結合的方式等等,也就是說以下處理流程的執行主體並不限定於各個邏輯單元,也可以是硬體或邏輯器件。
請參考圖10,在軟體實施方式中,該基於區塊鏈的票據核銷裝置應用於區塊鏈節點,可以包括:
核銷接收單元1001,接收用於對目標電子票據進行核銷處理的目標交易;
票號校驗單元1002,回應於所述目標交易,調用發布在區塊鏈上的智慧合約中聲明的核銷邏輯,獲取所述目標電子票據的票據號碼,並校驗所述票據號碼與所述目標電子票據的開票方對應的區塊鏈帳戶中維護的電子票據號段是否匹配;其中,所述區塊鏈帳戶中維護的電子票據號段為分配至所述區塊鏈帳戶的用於開具電子票據的電子票據號碼號段;
合法性校驗單元1003,如果是,進一步對所述目標電子票據的票據內容進行合法性校驗,並在合法性校驗通過後產生與所述目標電子票據對應的核銷處理完成事件,以及將所述核銷處理完成事件發布至所述區塊鏈進行存證。
可選的,所述區塊鏈包含用於維護電子票據號段的多級帳戶;
所述裝置還包括:
申領接收單元1004,接收開票方發送的申領交易,所述申領交易中包含所述開票方帳戶的帳戶標識;
分配單元1005,回應於所述申領交易,調用發布在所述區塊鏈上的智慧合約中聲明的號碼申領邏輯,確定與所述帳戶標識對應的區塊鏈帳戶的上一級帳戶,並從所述上一級帳戶維護的電子票據號段中為所述開票方分配電子票據號碼;以及
將所分配的電子票據號碼添加至所述開票方的區塊鏈帳戶中。
可選的,所述目標電子票據的票據內容包括票據金額,所述合法性校驗單元1003具體用於:
校驗所述目標電子票據的票據金額是否與所述目標電子票據的入帳金額相匹配;
如果是,確定合法性校驗通過。
可選的,所述區塊鏈節點透過oracle預言機與電子票據的開票監管方的服務端對接;
所述合法性校驗單元1003進一步用於:
透過所述oracle預言機從所述開票監管方的服務端中獲取所述目標電子票據的票據金額和所述目標電子票據的入帳金額的比較結果;
當得到的比較結果為所述票據金額與所述入帳金額一致時,確定所述票據金額與所述入帳金額相匹配。
可選的,所述合法性校驗單元1003進一步用於:
在校驗出所述票據號碼與所述目標電子票據的開票方對應的區塊鏈帳戶中維護的電子票據號段相匹配後,產生針對所述票據號碼的校驗通過事件,以使所述開票監管方的服務端在監聽到所述校驗通過事件時,將所述校驗通過事件中記錄的所述票據金額與所述入帳金額進行比較,並透過所述oracle預言機返回比較結果。
可選的,所述合法性校驗單元1003進一步用於:
透過所述oracle預言機向所述開票監管方的服務端發送針對所述票據金額與所述入帳金額的比較結果的獲取請求,以使所述開票監管方的服務端將所述票據金額與所述目標票據的入帳金額進行比較;
接收所述開票監管方的服務端透過所述oracle預言機返回的比較結果。
可選的,所述區塊鏈為聯盟鏈;所述聯盟鏈的聯盟成員包括作為開票監管方的各級財政機構、作為開票方的用票機構。
上述實施例闡明的系統、裝置、模組或單元,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦,電腦的具體形式可以是個人電腦、膝上型電腦、行動電話、相機電話、智慧電話、個人數位助理、媒體播放器、導航設備、電子郵件收發設備、遊戲控制台、平板電腦、可穿戴設備或者這些設備中的任意幾種設備的組合。
在一個典型的配置中,電腦包括一個或多個處理器(CPU)、輸入/輸出介面、網路介面和內部記憶體。
內部記憶體可能包括電腦可讀媒體中的非永久性記憶體,隨機存取記憶體(RAM)和/或非易失性內部記憶體等形式,如唯讀記憶體(ROM)或快閃記憶體(flash RAM)。內部記憶體是電腦可讀媒體的示例。
電腦可讀媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是電腦可讀指令、資料結構、程式的模組或其他資料。電腦的儲存媒體的例子包括,但不限於相變內部記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可擦除可程式化唯讀記憶體(EEPROM)、快閃記憶體或其他內部記憶體技術、唯讀光碟唯讀記憶體(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存、磁盒式磁帶、磁碟儲存、量子記憶體、基於石墨烯的儲存媒體或其他磁性儲存設備或任何其他非傳輸媒體,可用於儲存可以被計算設備存取的資訊。按照本文中的界定,電腦可讀媒體不包括暫存電腦可讀媒體(transitory media),如調變的資料信號和載波。
還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,並不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。
上述對本說明書特定實施例進行了描述。其它實施例在申請專利範圍的範圍內。在一些情況下,在申請專利範圍中記載的動作或步驟可以按照不同於實施例中的順序來執行並且仍然可以實現期望的結果。另外,在圖式中描繪的過程不一定要求示出的特定順序或者連續順序才能實現期望的結果。在某些實施方式中,多任務處理和並行處理也是可以的或者可能是有利的。
在本說明書一個或多個實施例使用的術語是僅僅出於描述特定實施例的目的,而非旨在限制本說明書一個或多個實施例。在本說明書一個或多個實施例和申請專利範圍中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指並包含一個或多個相關聯的列出項目的任何或所有可能組合。
應當理解,儘管在本說明書一個或多個實施例可能採用術語第一、第二、第三等來描述各種資訊,但這些資訊不應限於這些術語。這些術語僅用來將同一類型的資訊彼此區分開。例如,在不脫離本說明書一個或多個實施例範圍的情況下,第一資訊也可以被稱為第二資訊,類似地,第二資訊也可以被稱為第一資訊。取決於語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“回應於確定”。
以上所述僅為本說明書一個或多個實施例的較佳實施例而已,並不用以限制本說明書一個或多個實施例,凡在本說明書一個或多個實施例的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本說明書一個或多個實施例保護的範圍之內。
50:核銷發起方
51:客戶端
52:伺服器
902:處理器
904:內部匯流排
906:網路介面
908:內部記憶體
910:非易失性記憶體
1001:核銷接收單元
1002:票號校驗單元
1003:合法性校驗單元
1004:申領接收單元
1005:分配單元
[圖1]是一示例性實施例提供的一種創建智慧合約的示意圖;
[圖2]是一示例性實施例提供的調用智慧合約的示意圖;
[圖3]是一示例性實施例提供的創建智慧合約和調用智慧合約的示意圖;
[圖4]是一示例性實施例提供的一種基於區塊鏈的票據核銷方法的流程圖;
[圖5]是一示例性實施例提供的一種基於區塊鏈的票據核銷方案的整體架構示意圖;
[圖6]是一示例性實施例提供的一種申領電子票據號碼的互動圖;
[圖7]是一示例性實施例提供的分發和下發電子票據號碼的示意圖;
[圖8]是一示例性實施例提供的一種核銷電子票據的互動圖;
[圖9]是一示例性實施例提供的一種設備的結構示意圖。
[圖10]是一示例性實施例提供的一種基於區塊鏈的票據核銷裝置的方塊圖。