基於區塊鏈的發票沖紅方法及裝置和電子設備
本說明書實施例涉及區塊鏈技術領域,尤其涉及一種基於區塊鏈的發票沖紅方法及裝置和電子設備。
區塊鏈技術,也被稱之為分散式帳本技術,是一種由若干台計算設備共同參與“記帳”,共同維護一份完整的分散式資料庫的新興技術。由於區塊鏈技術具有去中心化、公開透明、每台計算設備可以參與資料庫記錄、並且各計算設備之間可以快速的進行資料同步的特性,使得區塊鏈技術在眾多的領域中廣泛的進行應用。
本說明書實施例提供的一種基於區塊鏈的發票沖紅方法及裝置和電子設備:
根據本說明書實施例的第一方面,提供一種基於區塊鏈的發票沖紅方法,所述區塊鏈中儲存有發票和發票的數字摘要之間的對應關係,所述方法包括:
接收客戶端提交的針對待沖紅的發票的沖紅請求;
響應於所述沖紅請求,計算所述待沖紅的發票的數字摘要,並查詢所述區塊鏈中是否儲存了與所述數字摘要對應的目標發票;
如果查詢到所述區塊鏈中儲存了與所述數字摘要對應的目標發票,調用發布在區塊鏈上的智慧合約中聲明的沖紅發票創建邏輯,創建針對所述目標發票的沖紅發票,並將所述沖紅發票與所述目標發票的對應關係在所述區塊鏈中進行儲存。
可選的,所述方法還包括:
接收客戶端提交的發票創建請求;其中,所述發票創建請求包括用戶輸入的發票創建資訊;
響應於所述發票創建請求,調用發布在區塊鏈上的智慧合約中聲明的發票創建邏輯,基於所述發票創建資訊創建發票;以及,
計算所述發票的數字摘要,並將所述發票和所述發票的數字摘要的對應關係在所述區塊鏈中進行儲存。
可選的,所述響應於所述沖紅請求,計算所述待沖紅的發票的數字摘要,並查詢所述區塊鏈中是否儲存了與所述數字摘要對應的目標發票,包括:
響應於所述沖紅請求,調用發布在區塊鏈上的智慧合約中聲明的發票驗證邏輯,計算所述待沖紅的發票的數字摘要,並查詢所述區塊鏈中是否儲存了與所述數字摘要對應的目標發票。
可選的,所述發票的數字摘要包括:
針對所述發票的發票內容;或者,所述發票內容中的唯一性資訊進行雜湊(hash)計算得到的hash值。
可選的,所述沖紅請求包括所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊;
所述計算所述待沖紅的發票的數字摘要,包括:
獲取所述沖紅請求中的所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊;
針對獲取到的所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊進行hash計算得到hash值。
可選的,所述區塊鏈為聯盟鏈。
可選的,所述創建針對所述目標發票的沖紅發票,具體包括:
創建與所述目標發票的發票金額相同的負金額發票。
可選的,所述將所述沖紅發票與所述目標發票的對應關係在所述區塊鏈中進行儲存,具體包括以下中的任一:
建立所述負金額發票與所述目標發票之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存;
建立所述負金額發票與所述目標發票的數字摘要之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存;
建立所述負金額發票、所述目標發票、以及所述目標發票的數字摘要之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存。
根據本說明書實施例的第二方面,提供一種基於區塊鏈的發票沖紅裝置,所述區塊鏈中儲存有發票和發票的數字摘要之間的對應關係,所述裝置包括:
接收單元,接收客戶端提交的針對待沖紅的發票的沖紅請求;
查詢單元,響應於所述沖紅請求,計算所述待沖紅的發票的數字摘要,並查詢所述區塊鏈中是否儲存了與所述數字摘要對應的目標發票;
沖紅單元,如果查詢到所述區塊鏈中儲存了與所述數字摘要對應的目標發票,調用發布在區塊鏈上的智慧合約中聲明的沖紅發票創建邏輯,創建針對所述目標發票的沖紅發票,並將所述沖紅發票與所述目標發票的對應關係在所述區塊鏈中進行儲存。
可選的,所述裝置還包括:
創建請求接收單元,接收客戶端提交的發票創建請求;其中,所述發票創建請求包括用戶輸入的發票創建資訊;
創建請求響應單元,響應於所述發票創建請求,調用發布在區塊鏈上的智慧合約中聲明的發票創建邏輯,基於所述發票創建資訊創建發票;以及,計算所述發票的數字摘要,並將所述發票和所述發票的數字摘要的對應關係在所述區塊鏈中進行儲存。
可選的,所述查詢單元,包括:
響應於所述沖紅請求,調用發布在區塊鏈上的智慧合約中聲明的發票驗證邏輯,計算所述待沖紅的發票的數字摘要,並查詢所述區塊鏈中是否儲存了與所述數字摘要對應的目標發票。
可選的,所述發票的數字摘要包括:
針對所述發票的發票內容;或者,所述發票內容中的唯一性資訊進行hash計算得到的hash值。
可選的,所述沖紅請求包括所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊;
所述查詢單元中,計算所述待沖紅的發票的數字摘要,包括:
獲取所述沖紅請求中的所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊;
針對獲取到的所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊進行hash計算得到hash值。
可選的,所述區塊鏈為聯盟鏈。
可選的,所述沖紅單元中,創建針對所述目標發票的沖紅發票,具體包括:
創建與所述目標發票的發票金額相同的負金額發票。
可選的,所述沖紅單元中,將所述沖紅發票與所述目標發票的對應關係在所述區塊鏈中進行儲存,具體包括以下中的任一:
建立所述負金額發票與所述目標發票之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存;
建立所述負金額發票與所述目標發票的數字摘要之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存;
建立所述負金額發票、所述目標發票、以及所述目標發票的數字摘要之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存。
根據本說明書實施例的第五方面,提供一種電子設備,包括:
處理器;
用於儲存處理器可執行指令的記憶體;
其中,所述處理器被配置為上述任一項基於區塊鏈的發票沖紅方法。
本說明書實施例,提供了一種基於區塊鏈的發票沖紅方案,透過將發票和發票的數字摘要上鏈進行存證;由於區塊鏈中儲存的資料存在不可篡改的特徵,以及數字摘要具有的唯一特徵(即一個數字摘要對應一個原始資料);因此,當發現某張發票出現錯誤時可以基於區塊鏈中儲存的發票的數字摘要確定該錯誤發票(即待沖紅的發票)對應在鏈上的目標發票;進而可以創建與該目標發票關聯的沖紅發票並將所述沖紅發票與所述目標發票的對應關係在所述區塊鏈中進行儲存;如此,就可以抵消該錯誤發票的發票金額。
這裡將詳細地對示例性實施例進行說明,其示例表示在圖式中。下面的描述涉及圖式時,除非另有表示,不同圖式中的相同數字表示相同或相似的元件。以下示例性實施例中所描述的實施方式並不代表與本說明書相一致的所有實施方式。相反,它們僅是與如所附申請專利範圍中所詳述的、本說明書的一些方面相一致的裝置和方法的例子。
在本說明書使用的術語是僅僅出於描述特定實施例的目的,而非旨在限制本說明書。在本說明書和所附申請專利範圍中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指並包含一個或多個相關聯的列出項目的任何或所有可能組合。
應當理解,儘管在本說明書可能採用術語第一、第二、第三等來描述各種資訊,但這些資訊不應限於這些術語。這些術語僅用來將同一類型的資訊彼此區分開。例如,在不脫離本說明書範圍的情況下,第一資訊也可以被稱為第二資訊,類似地,第二資訊也可以被稱為第一資訊。取決於語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應於確定”。
發票(Invoice)可以是指一切單位或個人在購銷商品、提供或接受服務以及從事其他經營活動中,所開具和收取的業務憑證。發票通常是會計核算的原始依據,也是審計機關、稅務機關執法檢查的重要依據。對於公司來講,發票主要是公司做帳的依據,同時也是繳稅的費用憑證;而對於員工來講,發票主要可以用來報銷。
發票沖紅是針對發現發票有誤或因為其它原因需更正時,重新開具的發票調整帳目手段。當發票已經入帳,如果發票有誤,需要重新開具一張跟原來發票金額相同的負金額發票,用於入帳抵消。
由於區塊鏈技術存在不可篡改的特徵,因此可以透過將發票上鏈進行存證,從而可以基於區塊鏈中儲存的發票進行相關發票業務。然而,上鏈的發票已經屬於入帳的發票,如果上鏈的發票發現存在錯誤,同樣無法透過刪除該發票抵消入帳;因此,需要提供區塊鏈中發票沖紅的方案。
本說明書提出了一種基於區塊鏈的發票沖紅方案,提供了一種基於區塊鏈的發票沖紅方案,如果上鏈的發票發現存在錯誤,可以透過產生一張與該發票關聯的沖紅發票的方式,抵消該錯誤發票的發票金額。
請參考圖1,圖1為本說明書一實施例提供的基於區塊鏈的發票沖紅方法的流程圖,所述區塊鏈中儲存有發票和發票的數字摘要之間的對應關係,所述方法包括:
步驟110:接收客戶端提交的針對待沖紅的發票的沖紅請求;
步驟120:響應於所述沖紅請求,計算所述待沖紅的發票的數字摘要,並查詢所述區塊鏈中是否儲存了與所述數字摘要對應的目標發票;
步驟130:如果查詢到所述區塊鏈中儲存了與所述數字摘要對應的目標發票,調用發布在區塊鏈上的智慧合約中聲明的沖紅發票創建邏輯,創建針對所述目標發票的沖紅發票,並將所述沖紅發票與所述目標發票的對應關係在所述區塊鏈中進行儲存。
在本說明書所描述的區塊鏈,具體可以包括私有鏈、共有鏈以及聯盟鏈等,在本說明書中不進行特別限定。
例如,在一個場景中,上述區塊鏈具體可以是由總部機構、分支機構、代理機構等作為聯盟成員組成的一個聯盟鏈;該聯盟鏈的營運方可以依托於該聯盟鏈,來部署相應的業務;而以上所描述的作為聯盟成員的總部機構、分支機構、代理機構都可以作為上述業務的一個業務節點。各個業務節點可以將自身所產生或者接收到的與上述發票的第一數字摘要以交易的形式在聯盟鏈中進行發布,並在該交易經過聯盟鏈中的共識節點的共識處理之後,在聯盟鏈中的分散式資料庫進行儲存,完成上述交易資訊的“上鏈”存證。
其中,需要說明的是,在本說明書中所描述的交易(Transaction),是指透過區塊鏈的客戶端創建,並需要最終發布至區塊鏈的分散式資料庫中的一筆資料。
區塊鏈中的交易,通常存在狹義的交易以及廣義的交易之分。狹義的交易是指用戶向區塊鏈發布的一筆價值轉移;例如,在傳統的比特幣區塊鏈網路中,交易可以是用戶在區塊鏈中發起的一筆轉帳。而廣義的交易是指用戶向區塊鏈發布的一筆具有業務意圖的業務資料;例如,營運方可以基於實際的業務需求搭建一個聯盟鏈,依托於聯盟鏈部署一些與價值轉移無關的其它類型的線上業務(比如,存證業務、真僞驗證業務、發票沖紅業務等),而在這類聯盟鏈中,交易可以是用戶在聯盟鏈中發布的一筆具有業務意圖的業務消息或者業務請求。
上述客戶端,可以包括任意類型的以區塊鏈中儲存的底層業務資料作為資料支撑,來實現特定的業務功能的上層應用。
在區塊鏈技術中,區塊鏈中節點對區塊進行操作通常需要依賴相應的智慧合約(Smart contract)。例如在區塊鏈中儲存、修改、刪除等操作均需要依賴智慧合約。所述智慧合約可以是一種旨在應用在可以部署在區塊鏈上的以資訊化方式傳播、驗證或執行合約的電腦協議。透過在智慧合約中聲明業務邏輯可以實現執行相應操作。智慧合約允許在沒有第三方的情況下進行可信交易。這些交易可追踪且不可逆轉。智慧合約能夠提供優於傳統合約方法的安全,並減少與合約相關的其他交易成本。通常,智慧合約可以是部署在區塊鏈節點本地的,當節點需要執行某個動作時可以調用相應的智慧合約,運行智慧合約以執行智慧合約中聲明的業務邏輯,從而得到執行結果。
本說明書中所述的數字摘要,可以是指基於原始資料進行雜湊(hash,也稱為散列)計算後得到的hash值。具體地,所述發票的數字摘要包括:
針對所述發票的發票內容;或者,所述發票內容中的唯一性資訊進行hash計算得到的hash值。
其中,所述發票內容可以包含唯一性資訊。例如,發票內容可以包括發票號碼、發票代碼;通常發票號碼和發票代碼均是唯一性資訊;對應的,發票的數字摘要可以記為hash(發票號碼+發票代碼)。當然,發票內容還可以包括非唯一性資訊,例如發票日期、不含稅金額;對應的,發票的數字摘要即可以記為hash(發票號碼+發票代碼+發票日期+不含稅金額)。
相應地,所述沖紅請求包括所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊;
所述計算所述待沖紅的發票的數字摘要,包括:
獲取所述沖紅請求中的所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊;
針對獲取到的所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊進行hash計算得到hash值。
值得一提的是,待識別發票和發票均採用相同的雜湊演算法。
如前所述,本說明書可以預先將發票進行上鏈,在一實施例中,所述方法還包括:
接收客戶端提交的發票創建請求;其中,所述發票創建請求包括用戶輸入的發票創建資訊;
響應於所述發票創建請求,調用發布在區塊鏈上的智慧合約中聲明的發票創建邏輯,基於所述發票創建資訊創建發票;以及,
計算所述發票的數字摘要,並將所述發票和所述發票的數字摘要的對應關係在所述區塊鏈中進行儲存。
以下結合圖2所示的發票上鏈的示意圖加以說明:
在本實施例中,用戶在需要在該區塊鏈中創建發票時,可以透過其所使用的客戶端發起一筆用於創建發票的交易,即透過客戶端發起發票創建請求。具體地,該用戶可以透過該客戶端提供的發票創建頁面,輸入待創建的目標發票的發票創建資訊;例如,發票的抬頭、金額等資訊。在該用戶完成發票創建資訊的輸入後,該客戶端可以基於用戶輸入的發票創建資訊來產生對應的發票創建請求,並將該發票創建請求發送至該區塊鏈中的節點設備。
該區塊鏈中的節點設備在接收到該發票創建請求後,可以對該發票創建請求進行響應。調用發布在區塊鏈上的智慧合約中聲明的發票創建邏輯,基於所述發票創建請求中的發票創建資訊創建發票;以及在完成發票創建後,可以進一步計算所述發票的數字摘要,並將所述發票和所述發票的數字摘要的對應關係在所述區塊鏈中進行儲存。
在一實施例中,響應於所述發票創建請求的節點設備,還可以先確定與該發票創建請求對應的發票開具方的發票創建額度是否充足。
舉例來說,可以從該發票創建請求中該用戶輸入的發票創建資訊中,獲取發票開具方的納稅人識別號,並基於該納稅人識別號確定對應的發票開具方,該發票開具方即為該發票創建請求對應的發票開具方。後續,可以先確定該發票開具方的發票創建額度是否充足。
在示出的一種實施方式中,可以由該節點設備調用部署在該區塊鏈上的智慧合約中聲明的額度檢查邏輯,確定該發票開具方的發票創建額度是否充足。
其中,額度檢查邏輯具體可以是聲明在該智慧合約中的,與檢查發票開具方的發票創建額度的執行邏輯相關的程式碼(例如:一些可供調用的程式方法或者函數)。
或者,也可以由該節點設備調用第三方的可信服務,將該發票創建請求發送給該第三方的可信服務。其中,第三方的可信服務可以是部署在第三方的可信服務設備上的,與檢查發票開具方的發票創建額度的執行邏輯相關的程式碼。舉例來說,該第三方的可信服務設備可以是在稅務局內網中的設備,由此可以提高資料安全性。
該第三方的可信服務可以確定該發票開具方的發票創建額度是否充足,並將確定結果返回至該節點設備。該節點設備可以基於該第三方的可信服務返回的確定結果,確定該發票開具方的發票創建額度是否充足。
具體地,該第三方的可信服務可以在確定該發票開具方的發票創建額度充足時,向該節點設備返回該發票開具方的發票創建額度充足的確定結果。該節點設備在接收到該確定結果後,可以確定該發票開具方的發票創建額度充足。或者,該第三方的可信服務可以在確定該發票開具方的發票創建額度不充足時,向該節點設備返回該發票開具方的發票創建額度不充足的確定結果。該節點設備在接收到該確定結果後,可以確定該發票開具方的發票創建額度不充足。
如果確定該發票開具方的發票創建額度充足,則可以調用部署在該區塊鏈上的智慧合約中聲明的發票創建邏輯,基於該發票創建請求中用戶輸入的發票創建資訊,創建目標發票。
其中,發票創建邏輯具體可以是聲明在該智慧合約中的,與創建發票的執行邏輯相關的程式碼。
在另一實施例中,所述發票可以是由原始產生發票的機構提供的。例如可以是由國家稅務局將發票的第一發票資料直接或間接上傳給區塊鏈。具體地,當一開發票設備開具一張發票後,該發票也記錄在稅務局的系統上,該稅務局的稅務系統可以同步將發票上鏈存證。其中所述上鏈存證的過程如前所述實施例相同,這裡不再進行贅述。
舉例說明,發票A、發票B和發票C上鏈後,在區塊鏈中就可以記錄有發票A hash和發票A資料的映射關係;發票B hash和發票B資料的映射關係;發票C hash和發票C資料的映射關係。
值得一提的是,如圖2所述,區塊鏈中可以劃分有存放發票的空間以及存放紅票(即沖紅發票)的空間。發票與紅票之間透過建立對應關係以實現發票沖紅。
以下介紹本說明書中發票沖紅的過程:
用戶在發現發票存在錯誤後,需要對區塊鏈中儲存的錯誤發票進行沖紅以抵消該錯誤發票。首先,用戶可以將該錯誤發票作為待沖紅的發票,並可以透過客戶端向區塊鏈提交針對待沖紅的發票的沖紅請求,來調用在區塊鏈上部署的用於發票沖紅的智慧合約,針對待識別的發票進行沖紅。
在一種實現方式中,如前創建發票類似的,用戶可以在客戶端上輸入待沖紅的發票的發票內容或者發票內容中的唯一性資訊(以下將發票內容或者發票內容中的唯一性資訊簡稱為發票資料),並將輸入的發票資料攜帶在客戶端發送的沖紅請求中;發送給區塊鏈中的節點設備,來觸發區塊鏈中的節點設備調用部署的智慧合約,針對待識別的發票進行沖紅。因此,區塊鏈中節點設備可以直接接收到發票資料。
在另一種實現方式中,用戶可以對待沖紅的發票進行拍照,採集待沖紅的發票的發票影像,並在客戶端上或者第三方識別系統上對採集到的發票影像進行影像識別,來識別出發票資料,並將透過影像識別得到的發票資料攜帶在客戶端發送的沖紅請求中,發送給區塊鏈中的節點設備,來觸發區塊鏈中的節點設備調用部署的智慧合約,針對待識別的發票進行沖紅。因此,區塊鏈中節點直接就可以接收到發票資料。
其中,對採集到的發票的影像資料進行影像識別,具體可以由部署在區塊鏈中的智慧合約來完成,也可以透過調用第三方的可信服務來完成。
在一種實現中,根據影像識別演算法,識別所述發票影像中的發票資料。該實施例中,智慧合約自身具有影像識別的合約邏輯,可以在節點本地識別出發票影像中的發票資料。
在另一種實現中,所述方法還包括:
節點設備也可以透過調用第三方的可信服務(比如第三方的影像識別機構),將防僞驗證請求中的發票影像發送給第三方可信服務,由第三方可信服務基於搭載的影像識別演算法,對發票影像進行影像識別獲取上述發票資料,而節點設備可以獲取所述第三方影像識別機構返回的發票資料。該實施例中,可以將影像識別交由第三方影像識別機構完成,從而降低對節點性能的要求(並非所有節點都可以具備影像識別所需的計算資源)。
在一實施例中,節點設備在獲取到沖紅請求中的發票資料後,可以調用發布在區塊鏈上的智慧合約中聲明的發票驗證邏輯,計算所述待沖紅的發票的數字摘要,並查詢所述區塊鏈中是否儲存了與所述數字摘要對應的目標發票。
該實施例計算所述待沖紅的發票的數字摘要是基於智慧合約計算得到的,需要說明的是,也可以是響應於所述沖紅請求的節點設備在本地基於預設演算法計算得到的(不依賴智慧合約);具體可以根據業務需求人為配置或者程式自動選擇。
本說明書中,在查詢到所述區塊鏈中儲存了與所述數字摘要對應的目標發票之後,節點設備需要調用發布在區塊鏈上的智慧合約中聲明的沖紅發票創建邏輯,創建針對所述目標發票的沖紅發票,並將所述沖紅發票與所述目標發票的對應關係在所述區塊鏈中進行儲存。
在一實施例中,所述步驟130中創建針對所述目標發票的沖紅發票,具體包括:
創建與所述目標發票的發票金額相同的負金額發票。
所述將所述沖紅發票與所述目標發票的對應關係在所述區塊鏈中進行儲存,具體包括以下中的任一:
建立所述負金額發票與所述目標發票之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存;
建立所述負金額發票與所述目標發票的數字摘要之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存;
建立所述負金額發票、所述目標發票、以及所述目標發票的數字摘要之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存。
在稅務操作中入帳的發票是不能刪掉的,那麽針對入帳錯誤的發票,實踐中可以再入帳一張與錯誤發票金額相同的負金額的發票,從而抵消該錯誤發票的影響。在區塊鏈中,首先確定待沖紅的發票對於的目標發票,然後可以創建與所述目標發票的發票金額相同的負金額發票;此時的負金額發票雖然創建了但在區塊鏈中還需要建立所述負金額發票與所述目標發票和/或所述目標發票的數字摘要之間的映射關係,如此就可以透過映射關係,確定錯誤發票是否已完成沖紅。
如圖2所示,區塊鏈節點在接收到針對待沖紅的發票a的沖紅請求後,可以調用預設的智慧合約,查詢區塊鏈中是否存在這張發票a,即本說明書中所述的目標發票;並在查詢到存在發票a後,在區塊鏈中產生針對發票a的沖紅發票a,以及在區塊鏈上建立該沖紅發票a與發票a之間的映射關係。所述建立的映射關係,可以表示發票a已經被沖紅。所述沖紅發票a是與發票a的發票金額相同的負金額。例如,發票a的發票金額為100元,則沖紅發票a的發票金額為-100元。
本說明書提供的一種基於區塊鏈的發票沖紅方案,透過將發票和發票的數字摘要上鏈進行存證;由於區塊鏈中儲存的資料存在不可篡改的特徵,以及數字摘要具有的唯一特徵(即一個數字摘要對應一個原始資料);因此,當發現某張發票出現錯誤時可以基於區塊鏈中儲存的發票的數字摘要確定該錯誤發票(即待沖紅的發票)對應在鏈上的目標發票;進而可以創建與該目標發票關聯的沖紅發票並將所述沖紅發票與所述目標發票的對應關係在所述區塊鏈中進行儲存;如此,就可以抵消該錯誤發票的發票金額。
與前述基於區塊鏈的發票沖紅方法實施例相對應,本說明書還提供了基於區塊鏈的發票沖紅裝置的實施例。所述裝置實施例可以透過軟體實現,也可以透過硬體或者軟硬體結合的方式實現。以軟體實現為例,作為一個邏輯意義上的裝置,是透過其所在設備的處理器將非易失性記憶體中對應的電腦業務程式指令讀取到記憶體中運行形成的。從硬體層面而言,如圖3所示,為本說明書基於區塊鏈的發票沖紅裝置所在設備的一種硬體結構圖,除了圖3所示的處理器、網路介面、記憶體以及非易失性記憶體之外,實施例中裝置所在的設備通常根據基於區塊鏈的發票沖紅實際功能,還可以包括其他硬體,對此不再贅述。
請參見圖4,為本說明書一實施例提供的基於區塊鏈的發票沖紅裝置的模組圖,所述裝置對應了圖1所示實施例,所述區塊鏈中儲存有發票和發票的數字摘要之間的對應關係,所述裝置包括:
接收單元210,接收客戶端提交的針對待沖紅的發票的沖紅請求;
查詢單元220,響應於所述沖紅請求,計算所述待沖紅的發票的數字摘要,並查詢所述區塊鏈中是否儲存了與所述數字摘要對應的目標發票;
沖紅單元230,如果查詢到所述區塊鏈中儲存了與所述數字摘要對應的目標發票,調用發布在區塊鏈上的智慧合約中聲明的沖紅發票創建邏輯,創建針對所述目標發票的沖紅發票,並將所述沖紅發票與所述目標發票的對應關係在所述區塊鏈中進行儲存。
可選的,所述裝置還包括:
創建請求接收單元,接收客戶端提交的發票創建請求;其中,所述發票創建請求包括用戶輸入的發票創建資訊;
創建請求響應單元,響應於所述發票創建請求,調用發布在區塊鏈上的智慧合約中聲明的發票創建邏輯,基於所述發票創建資訊創建發票;以及,計算所述發票的數字摘要,並將所述發票和所述發票的數字摘要的對應關係在所述區塊鏈中進行儲存。
可選的,所述查詢單元220,包括:
響應於所述沖紅請求,調用發布在區塊鏈上的智慧合約中聲明的發票驗證邏輯,計算所述待沖紅的發票的數字摘要,並查詢所述區塊鏈中是否儲存了與所述數字摘要對應的目標發票。
可選的,所述發票的數字摘要包括:
針對所述發票的發票內容;或者,所述發票內容中的唯一性資訊進行hash計算得到的hash值。
可選的,所述沖紅請求包括所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊;
所述查詢單元220中,計算所述待沖紅的發票的數字摘要,包括:
獲取所述沖紅請求中的所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊;
針對獲取到的所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊進行hash計算得到hash值。
可選的,所述區塊鏈為聯盟鏈。
可選的,所述沖紅單元230中,創建針對所述目標發票的沖紅發票,具體包括:
創建與所述目標發票的發票金額相同的負金額發票。
可選的,所述沖紅單元230中,將所述沖紅發票與所述目標發票的對應關係在所述區塊鏈中進行儲存,具體包括以下中的任一:
建立所述負金額發票與所述目標發票之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存;
建立所述負金額發票與所述目標發票的數字摘要之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存;
建立所述負金額發票、所述目標發票、以及所述目標發票的數字摘要之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存。
上述實施例闡明的系統、裝置、模組或單元,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦,電腦的具體形式可以是個人電腦、膝上型電腦、蜂巢式電話、相機電話、智慧電話、個人數位助理、媒體播放器、導航設備、電子郵件收發設備、遊戲控制台、平板電腦、穿戴式設備或者這些設備中的任意幾種設備的組合。
上述裝置中各個單元的功能和作用的實現過程具體詳見上述方法中對應步驟的實現過程,在此不再贅述。
對於裝置實施例而言,由於其基本對應於方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分散到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部模組來實現本說明書方案的目的。本領域普通技術人員在不付出創造性勞動的情況下,即可以理解並實施。
以上圖4描述了基於區塊鏈的發票沖紅裝置的內部功能模組和結構示意,其實質上的執行主體可以為一種電子設備,包括:
處理器;
用於儲存處理器可執行指令的記憶體;
其中,所述處理器被配置為:
接收客戶端提交的針對待沖紅的發票的沖紅請求;
響應於所述沖紅請求,計算所述待沖紅的發票的數字摘要,並查詢所述區塊鏈中是否儲存了與所述數字摘要對應的目標發票;其中,所述區塊鏈中儲存有發票和發票的數字摘要之間的對應關係;
如果查詢到所述區塊鏈中儲存了與所述數字摘要對應的目標發票,調用發布在區塊鏈上的智慧合約中聲明的沖紅發票創建邏輯,創建針對所述目標發票的沖紅發票,並將所述沖紅發票與所述目標發票的對應關係在所述區塊鏈中進行儲存。
可選的,還包括:
接收客戶端提交的發票創建請求;其中,所述發票創建請求包括用戶輸入的發票創建資訊;
響應於所述發票創建請求,調用發布在區塊鏈上的智慧合約中聲明的發票創建邏輯,基於所述發票創建資訊創建發票;以及,
計算所述發票的數字摘要,並將所述發票和所述發票的數字摘要的對應關係在所述區塊鏈中進行儲存。
可選的,所述響應於所述沖紅請求,計算所述待沖紅的發票的數字摘要,並查詢所述區塊鏈中是否儲存了與所述數字摘要對應的目標發票,包括:
響應於所述沖紅請求,調用發布在區塊鏈上的智慧合約中聲明的發票驗證邏輯,計算所述待沖紅的發票的數字摘要,並查詢所述區塊鏈中是否儲存了與所述數字摘要對應的目標發票。
可選的,所述發票的數字摘要包括:
針對所述發票的發票內容;或者,所述發票內容中的唯一性資訊進行hash計算得到的hash值。
可選的,所述沖紅請求包括所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊;
所述計算所述待沖紅的發票的數字摘要,包括:
獲取所述沖紅請求中的所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊;
針對獲取到的所述待沖紅的發票的發票內容;或者,所述發票內容中的唯一性資訊進行hash計算得到hash值。
可選的,所述區塊鏈為聯盟鏈。
可選的,所述創建針對所述目標發票的沖紅發票,具體包括:
創建與所述目標發票的發票金額相同的負金額發票。
可選的,所述將所述沖紅發票與所述目標發票的對應關係在所述區塊鏈中進行儲存,具體包括以下中的任一:
建立所述負金額發票與所述目標發票之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存;
建立所述負金額發票與所述目標發票的數字摘要之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存;
建立所述負金額發票、所述目標發票、以及所述目標發票的數字摘要之間的映射關係,並將所述映射關係在所述區塊鏈中進行儲存。
在上述電子設備的實施例中,應理解,該處理器可以是中央處理單元(英文:Central Processing Unit,簡稱:CPU),還可以是其他通用處理器、數位信號處理器(英文:Digital Signal Processor,簡稱:DSP)、專用積體電路(英文:Application Specific Integrated Circuit,簡稱:ASIC)等。通用處理器可以是微處理器或者該處理器也可以是任何常規的處理器等,而前述的記憶體可以是唯讀記憶體(英文:read-only memory,縮寫:ROM)、隨機存取記憶體(英文:random access memory,簡稱:RAM)、快閃記憶體、硬碟或者固態硬碟。結合本發明實施例所公開的方法的步驟可以直接體現為硬體處理器執行完成,或者用處理器中的硬體及軟體模組組合執行完成。
本說明書中的各個實施例均採用漸進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於電子設備實施例而言,由於其基本相似於方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
本領域技術人員在考慮說明書及實踐這裡公開的發明後,將容易想到本說明書的其它實施方案。本說明書旨在涵蓋本說明書的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本說明書的一般性原理並包括本說明書未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本說明書的真正範圍和精神由下面的申請專利範圍指出。
應當理解的是,本說明書並不局限於上面已經描述並在圖式中示出的精確結構,並且可以在不脫離其範圍進行各種修改和改變。本說明書的範圍僅由所附的申請專利範圍來限制。
110:步驟
120:步驟
130:步驟
210:接收單元
220:查詢單元
230:沖紅單元
[圖1] 是本說明書一實施例提供的基於區塊鏈的發票沖紅方法的流程圖;
[圖2] 是本說明書一實施例提供的發票沖紅的示意圖。
[圖3] 是本說明書一實施例提供的基於區塊鏈的發票沖紅裝置的硬體結構圖;
[圖4] 是本說明書一實施例提供的基於區塊鏈的發票沖紅裝置的模組示意圖。