TWI723357B - 基於區塊鏈的匯款方法、裝置、電腦設備及電腦可讀儲存媒體 - Google Patents

基於區塊鏈的匯款方法、裝置、電腦設備及電腦可讀儲存媒體 Download PDF

Info

Publication number
TWI723357B
TWI723357B TW108109549A TW108109549A TWI723357B TW I723357 B TWI723357 B TW I723357B TW 108109549 A TW108109549 A TW 108109549A TW 108109549 A TW108109549 A TW 108109549A TW I723357 B TWI723357 B TW I723357B
Authority
TW
Taiwan
Prior art keywords
reserve
balance
remittance
transaction
fund
Prior art date
Application number
TW108109549A
Other languages
English (en)
Other versions
TW202016822A (zh
Inventor
馬寶利
劉正
張文彬
李漓春
殷山
Original Assignee
開曼群島商創新先進技術有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 開曼群島商創新先進技術有限公司 filed Critical 開曼群島商創新先進技術有限公司
Publication of TW202016822A publication Critical patent/TW202016822A/zh
Application granted granted Critical
Publication of TWI723357B publication Critical patent/TWI723357B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/10Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Finance (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本說明書一個或多個實施例提供一種基於區塊鏈的匯款方法及裝置,應用於區塊鏈的用戶端設備,用戶帳戶的帳戶餘額至少被劃分為一預備金餘額和一備用餘額,其中,所述用戶帳戶包括一動態更新的預備金串列;所述預備金串列包括多個預備金金額;所述方法包括:回應於用戶發起的匯款操作,根據目前的預備金串列為用戶提交的匯款額分配對應的預備金金額;基於所述匯款額的所述預備金金額構建匯款交易,並將所述匯款交易發布至區塊鏈,以在所述匯款交易被區塊鏈中的節點設備驗證通過後,從所述帳戶餘額和所述預備金餘額中均扣減所述匯款額。

Description

基於區塊鏈的匯款方法、裝置、電腦設備及電腦可讀儲存媒體
本說明書一個或多個實施例有關區塊鏈技術領域,尤其有關一種基於區塊鏈的匯款方法及裝置。
區塊鏈是一種防篡改的、共享的數位化帳本,用於記錄公有或私有對等網路中的交易。帳本分發給網路中的所有成員節點,在區塊中永久記錄網路中發生的資產交易的歷史記錄。由於帳本是完全公開的,因此區塊鏈帳本本身無隱私保護功能,需透過額外的技術來保護資產交易的隱私。目前已有的隱私保護方案中都利用了零知識證明技術來保證交易金額在一個合理區間。不同於UTXO模型,在帳戶模型下應用零知識證明技術會帶來嚴重的交易併發性問題,因為上述零知識證明技術與帳戶的現有餘額緊密關聯,帳戶的餘額會在併發發送的某一交易被驗證後發生改變,從而引起尚未驗證的、以原帳戶餘額作為零知識證明的並行發送的其他交易無法通過驗證,因此嚴重阻礙了帳戶模型下隱私保護方案的實際落地應用。
現有的一種解決方案為基於區塊鏈用戶的帳戶餘額產生包含多個預備金金額的預備金串列,並將預備金串列中 可用的多個預備金金額指定至多個匯款交易中;區塊鏈的節點針對各個匯款交易所包括的預備金金額進行各個匯款交易是否足以支付的驗證,對各個匯款交易的驗證分別獨立進行,不相互影響,從而使得基於帳戶模型構建的區塊鏈可以並行發送多個匯款交易。上述技術方案存在一個問題:需要在初始化預備金串列時暫停用戶的帳戶交易,直到初始化完成後才能進行後續的交易,在一定程度上對匯款交易的併發性仍有影響。
有鑑於此,本說明書一個或多個實施例提供一種基於區塊鏈的匯款方法及裝置、電子設備及電腦可讀儲存媒體。
為實現上述目的,本說明書一個或多個實施例提供技術方案如下:
根據本說明書一個或多個實施例的第一態樣,提出了一種基於區塊鏈的匯款方法,應用於區塊鏈的用戶端設備,用戶帳戶的帳戶餘額至少被劃分為一預備金餘額和一備用餘額;其中,所述用戶帳戶包括一動態更新的預備金串列;所述預備金串列包括多個預備金金額;所述方法包括:回應於用戶發起的匯款操作,根據目前的預備金串列為用戶提交的匯款額分配對應的預備金金額;基於所述匯款額以及分配的所述預備金金額構建匯款交易,並將所述匯款交易發布至區塊鏈,以在所述匯款交易被區塊鏈中的節點設備驗證通過後,從所述帳戶餘額和所述預備金餘額中均扣減所述匯款額; 其中,所述預備金串列的建立及更新過程包括: 步驟A,獲得目前的預備金餘額,根據目前的預備金餘額得到預備金串列; 步驟B,動態監測目前預備金串列中可用於分配的預備金金額是否低於預設閾值,如果是則將目前的備用餘額切換為預備金餘額後,執行步驟A。 根據本說明書一個或多個實施例的第二態樣,提出了一種基於區塊鏈的匯款裝置,應用於區塊鏈的用戶端設備,用戶帳戶的帳戶餘額至少被劃分為一預備金餘額和一備用餘額;其中,所述用戶帳戶包括一動態更新的預備金串列;所述預備金串列包括多個預備金金額; 所述裝置包括: 預備金金額分配單元,回應於用戶發起的匯款操作,根據預備金串列建立單元提供的目前的預備金串列為用戶提交的匯款額分配對應的預備金金額; 匯款交易構建及發布單元,基於所述匯款額以及分配的所述預備金金額構建匯款交易,並將所述匯款交易發布至區塊鏈,以在所述匯款交易被區塊鏈中的節點設備驗證通過後,從所述帳戶餘額和所述預備金餘額中均扣減所述匯款額; 其中,所述預備金串列建立單元包括: 預備金串列產生模組,獲得目前的預備金餘額,根據目前的預備金餘額得到預備金串列; 預備金串列監測模組,動態監測目前預備金串列中可用於分配的預備金金額是否低於預設閾值。 根據本說明書一個或多個實施例的第三態樣,提出了一種電腦設備,包括:記憶體和處理器;所述記憶體上儲存有可由處理器運行的電腦程式;所述處理器運行所述電腦程式時,執行如上述基於區塊鏈的匯款方法。 根據本說明書一個或多個實施例的第四態樣,提出了一種電腦可讀儲存媒體,其上儲存有電腦程式,所述電腦程式被處理器運行時,執行上述基於區塊鏈的匯款方法所述的步驟。 本說明書提供的基於區塊鏈的匯款方法及裝置,將用戶帳戶的帳戶餘額至少劃分為一預備金餘額和一備用餘額,基於預備金餘額產生預備金串列,可將預備金串列包括的多個預備金金額分配給多個匯款交易,支持併發的多個匯款交易;當預備金串列中可用於分配的預備金金額低於預設閾值時,用戶端設備將上述備用餘額切換為預備金餘額並基於該切換後的預備金餘額產生新的預備金串列,在新的預備金串列產生完畢後,更新替換原預備金串列,基於新的預備金串列中的預備金金額可發起新的匯款交易。 在本說明書提供的匯款方法及裝置中,上述備用餘額可在原預備金串列中的預備金金額消耗至預設的閾值時即開啟新的預備金串列的初始化操作,待新的預備金串列產生後,可立即切換成基於新的預備金串列產生匯款交易;新預備金串列產生(或被區塊鏈共識驗證)期間用戶發送的匯款交易仍基於原預備金串列中可用於分配的預備金金額產生;上述切換預備金餘額並初始化新的預備金串列的過程可隨著既有預備金串列的使用情況(可用於分配的預備金金額是否低於預設閾值)、或應接收到的新的預備金串列構建指令循環執行,因此全程無需暫停發送匯款的交易,提高交易的併發性,且避免交易中斷,最大化了區塊鏈交易的吞吐量。
這裡將詳細地對示例性實施例進行說明,其示例表示在圖式中。下面的描述涉及圖式時,除非另有表示,不同圖式中的相同數字表示相同或相似的元件。以下示例性實施例中所描述的實施方式並不代表與本說明書一個或多個實施例相一致的所有實施方式。相反,它們僅是與如所附申請專利範圍中所詳述的、本說明書一個或多個實施例的一些態樣相一致的裝置和方法的例子。 需要說明的是:在其他實施例中並不一定按照本說明書示出和描述的順序來執行對應方法的步驟。在一些其他實施例中,其方法所包括的步驟可以比本說明書所描述的更多或更少。此外,本說明書中所描述的單個步驟,在其他實施例中可能被分解為多個步驟進行描述;而本說明書中所描述的多個步驟,在其他實施例中也可能被合併為單個步驟進行描述。 圖1是一示例性實施例提供的一種基於區塊鏈的匯款方法的流程圖,應用於區塊鏈的用戶端設備,用戶帳戶的帳戶餘額至少被劃分為一預備金餘額和一備用餘額,其中,所述用戶帳戶包括一動態更新的預備金串列;所述預備金串列包括多個預備金金額。 上述實施例所述的區塊鏈,具體可指一個各節點設備透過共識機制達成的、具有分散式資料儲存結構的P2P網路系統,該區塊鏈內的資料分佈在時間上相連的一個個“區塊(block)”之內,後一區塊包含前一區塊的資料摘要,且根據具體的共識機制(如POW、POS、DPOS或PBFT等)的不同,達成全部或部分節點的資料全備份。本領域的技術人員熟知,由於區塊鏈系統在對應共識機制下運行,已收錄至區塊鏈資料庫內的資料很難被任意的節點篡改,例如採用Pow共識的區塊鏈,至少需要全網51%算力的攻擊才有可能篡改已有資料,因此區塊鏈系統有著其他中心化資料庫系統無法比擬的保證資料安全、防攻擊篡改的特性。由此可知,在本說明書所提供的實施例中,被收錄至區塊鏈的分散式資料庫中的匯款交易及其他交易不易被攻擊或篡改,從而為發布至所述區塊鏈的分散式資料庫的交易進行了存證。 執行本實施例所述的基於區塊鏈的匯款方法的用戶端設備,可以為上述區塊鏈的節點設備,也可為與上述區塊鏈的節點設備連接的客戶端設備,在本說明書中不作限定。 將上述區塊鏈作為一個通用的管理對象狀態轉換的去中心化平臺,用戶帳戶就是有狀態的對象,用戶帳戶所包括的內容可以為上述用戶帳戶的狀態所包含的內容,本說明書所提供的用戶帳戶包含帳戶餘額資訊和用以支持匯款交易的預備金串列。在本說明書中,為了支持用戶可無暫停地發送匯款交易,用戶帳戶中包括一動態更新的預備金串列,所述預備金串列包括多個預備金金額。 上述多個預備金金額可被分配在不同的匯款交易中,為每個匯款交易提供足以支付其匯款額的證明。值得注意的是,本說明書所述的“帳戶”不限於外部所有帳戶(EOA)及合約帳戶(Contract),且也不限定上述預備金串列的具體表現形式,只要包含或管理上述多個預備金金額的資料組織形式,如一維表、二維表、樹形資料結構等均屬本說明書所述的預備金串列。本說明書所述的預備金餘額和備用餘額的值可以不顯示在區塊鏈的用戶帳戶狀態中,而作為用戶客戶端可顯示或管理的內容;當然,上述預備金餘額和備用餘額的值也可以顯示在區塊鏈的用戶帳戶狀態中,在本說明書中不作限定。 如圖1所示,上述匯款方法可以包括以下步驟: 步驟102,回應於用戶發起的匯款操作,根據目前的預備金串列為用戶提交的匯款額分配對應的預備金金額; 步驟104,基於所述匯款額以及分配的所述預備金金額構建匯款交易,並將所述匯款交易發布至區塊鏈,以在所述匯款交易被區塊鏈中的節點設備驗證通過後,從所述帳戶餘額和的預備金餘額中均扣減所述匯款額。 在上述實施例中,與匯款額對應的預備金金額至少為一個,且與匯款額對應的預備金金額之和應不小於交易的匯款額,從而為該匯款交易提供足以支付的憑證。例如,目前的預備金串列中包含{5,10,15,20}四個預備金金額,對於匯款額為10的匯款交易,用戶端設備可從上述四個預備金金額中選出一個預備金金額10(或15或20),將上述一個預備金金額10(或15或20)分配至上述匯款交易中;對應匯款額為12的匯款交易,用戶端設備可從上述四份預備金金額中選出一個預備金金額15(或20),將上述一個預備金金額15(或20)分配至上述匯款交易中,也可以從上述四個預備金金額中選出兩個預備金金額5和10(或5和15),將上述兩個預備金金額15(或20)分配至上述匯款交易中,利用兩個預備金金額之和為匯款交易提供足以支付的驗證證明。 在一實施例中,匯出方用戶與接收方用戶可以約定從匯出方區塊鏈帳戶向接收方區塊鏈帳戶匯入(或稱為轉移)對應於該匯款額的資產憑證。資產憑證可以對應於區塊鏈內的代幣(token)、數位資產等智能資產,資產憑證還可以對應於區塊鏈外的現金、證券、優惠券、房產等鏈外資產,本說明書並不對此進行限制。 匯款交易構建完畢後被用戶端設備發送至區塊鏈,並接收區塊鏈中節點設備的驗證。由於本說明書所提供的基於區塊鏈的匯款方法可以被應用在基於多種共識機制類型的區塊鏈中,因此本說明書既不限定對上述匯款交易執行驗證的區塊鏈節點的數量及類型,也不限制上述驗證所包含的內容或流程。不過本領域技術人員應知,上述驗證至少包含驗證匯款交易中的預備金金額之和是否大於或等於匯款交易的匯款額,以檢驗用戶帳戶是否有足夠的餘額支付該匯款交易。當上述匯款交易被區塊鏈的節點設備驗證通過後,從用戶的帳戶餘額和預備金餘額中均扣減所述匯款額。 圖2示意了上述實施例中預備金串列的建立及更新過程,如圖2所示該過程可被概括為兩個彼此相連的循環步驟: 步驟A,獲得目前的預備金餘額,根據目前的預備金餘額得到預備金串列; 步驟B,動態監測目前預備金串列中可用於分配的預備金金額是否低於預設閾值,如果是則將目前的備用餘額切換為預備金餘額後,執行步驟A。 在用戶註冊為上述區塊鏈的用戶後,用戶可將帳戶餘額至少劃分為一初始化的預備金餘額和一初始化的備用餘額,用戶設備首先基於該初始化的預備金餘額執行上述步驟A所述的過程。 上述目前的備用餘額可在切換後產生新的預備金串列中的預備金金額;可選地,在未被觸發以產生新的預備金串列之前,該備用餘額即可以作為匯款餘額以支持用戶發起單獨的(不併發)匯款交易,也可以作為收款餘額用以接收其他帳戶匯至該用戶帳戶的匯款;而且,當帳戶餘額包括兩個或兩個以上的備用餘額時,其中有些備用餘額還可以不參與匯款或收款,僅作為靜止的餘額,以在合適的時機(如基於原預備金餘額產生的預備金串列中可用於分配的預備金金額低於預設閾值時,或接收到用戶發送的新的預備金串列構建指令時)被觸發以劃分得出新的預備金串列中的預備金金額。 在一個示出的實施例中,步驟A中所述的根據目前的預備金餘額得到預備金串列的過程,包括: 對目前預備金餘額進行劃分得到多個預備金金額,基於劃分得到的多個預備金金額構建預備金串列建立交易; 將所述預備金串列建立交易發布至區塊鏈,以在所述預備金串列建立交易被區塊鏈中的節點設備驗證通過後,在所述用戶帳戶基於所述劃分得到的多個預備金金額構建預備金串列。 在上述的實施例中,目前的預備金餘額可被劃分以得到多個預備金金額,為保證上述多個預備金金額得到區塊鏈節點的共識驗證,預備金串列建立交易所包含的、基於目前的預備金餘額劃分得到的多個預備金金額之和應不大於該預備金餘額。由於本說明書所提供的基於區塊鏈的匯款方法可以被應用在基於多種共識機制類型的區塊鏈中,因此本說明書既不限定對上述預備金串列建立交易執行驗證的區塊鏈節點的數量及類型,也不限制上述驗證所包含的內容或流程。不過本領域技術人員應知,上述驗證至少包含驗證預備金串列建立交易中的預備金金額之和是否小於或等於目前的預備金餘額(或當用戶的帳戶狀態中不顯示預備金餘額時,至少應驗證預備金串列建立交易中的預備金金額之和是否小於或等於目前的帳戶餘額),以檢驗上述預備金餘額的有效性。當上述預備金串列建立交易被區塊鏈的節點設備驗證通過後,在所述用戶帳戶基於預備金串列建立交易所包括的、所述劃分得到的多個預備金金額構建預備金串列。 在又一示出的實施例中,上述根據目前的預備金餘額得到預備金串列,包括: 對目前預備金餘額進行劃分得到多個預備金金額,基於劃分得到的多個預備金金額構建預備金串列,並基於所述預備金串列構建預備金串列建立交易; 將所述預備金串列建立交易發布至區塊鏈,以在所述預備金串列建立交易被區塊鏈中的節點設備驗證通過後,將所述預備金串列更新至所述用戶帳戶中。 在上述實施例中,目前的預備金餘額可被劃分以得到多個預備金金額,基於上述多個預備金金額構建預備金串列,並將上述包括基於目前的預備金餘額劃分得到的多個預備金金額的預備金串列包括在上述預備金串列建立交易中。為保證上述多個預備金金額得到區塊鏈節點的共識驗證,預備金串列建立交易所包含的、基於目前的預備金餘額劃分得到的多個預備金金額之和應不大於該預備金餘額。由於本說明書所提供的基於區塊鏈的匯款方法可以被應用在基於多種共識機制類型的區塊鏈中,因此本說明書既不限定對上述預備金串列建立交易執行驗證的區塊鏈節點的數量及類型,也不限制上述驗證所包含的內容或流程。不過本領域技術人員應知,上述驗證至少包含驗證預備金串列建立交易中的預備金金額之和是否小於或等於目前的預備金餘額(或當用戶的帳戶狀態中不顯示預備金餘額時,至少應驗證預備金串列建立交易中的預備金金額之和是否小於或等於目前的帳戶餘額),以檢驗上述預備金餘額的有效性。當上述預備金串列建立交易被區塊鏈的節點設備驗證通過後,將預備金串列建立交易所包括的預備金串列更新至所述用戶帳戶中。 本領域的技術人員應知,預備金串列中的每個預備金金額是為匯款交易提供足以支付的餘額憑證,基於同一預備金金額重複分配的匯款交易無法通過區塊鏈節點的驗證。隨著越來越多匯款交易的發出,用戶帳戶中目前的預備金串列中可用於分配的預備金金額越來越少。為了在切換準備新的預備金串列時不用暫停發送匯款交易,可以為現有的預備金串列中可用於分配的預備金金額設定一閾值,該閾值既可以是預備金金額的總額度閾值(即剩餘可用的預備金金額可支付的最大匯款額閾值),也可以是預備金金額的個數閾值(即剩餘可用的預備金餘額最多還可用於發送的匯款交易的個數閾值),在用戶端設備動態監測到現有的預備金串列中的可用於分配的預備金金額低於上述預設閾值時,則將目前的備用餘額切換為預備金餘額後,執行上述實施例中步驟A所述的過程。可選地,上述將目前的備用餘額切換為預備金餘額的步驟還可應用戶發出的指令而被觸發。 區塊鏈的節點設備(包括用戶端設備)發布、共識驗證、在用戶帳戶的狀態中更新新的預備金串列的過程通常需要消耗一定的時間,具體消耗時長與該區塊鏈的共識機制、出塊頻率等相關。在此期間,若用戶有新的匯款交易的發送需求,由於用戶帳戶中目前的預備金串列仍處在生效狀態,可仍基於目前預備金串列中可用於分配的預備金金額構建匯款交易。在新的預備金串列被更新至用戶帳戶後,該新的預備金串列即可作為用戶帳戶中目前的預備金串列,用戶即可基於該目前預備金金串列構建匯款交易,並向區塊鏈發布匯款交易;對應的,在上述匯款交易被區塊鏈中的節點設備驗證通過後,從所述帳戶餘額和所述切換後的預備金餘額中均扣減所述匯款額。 本說明書提供的匯款方法,由於用戶帳戶中始終存在一生效的預備金串列,因此而無需暫停匯款交易,最大化了交易吞吐量。 在一示出的實施例中,為分辨預備金串列中可用於分配的預備金金額,可以標記預備金串列中的預備金金額的使用狀態。當一包括預備金金額的匯款交易被區塊鏈中的節點設備驗證通過,並在區塊鏈的分散式資料庫內收錄該匯款交易、且更新該匯款交易的匯出方用戶的帳戶餘額時,該匯款交易所包含的預備金金額應在匯出方帳戶的預備金串列中被標識為已使用狀態(狀態3),本領技術人員熟知,上述被收錄在區塊鏈的分散式資料庫中的匯款交易可稱為“已完成的匯款交易”。對於新的尚未完成的匯款交易,區塊鏈中的節點設備可驗證上述新的尚未完成的匯款交易中的預備金金額在匯出方用戶帳戶的預備金串列中的狀態是否為已使用狀態:如果是已使用狀態,則該項驗證不通過,對應的新的尚未完成的匯款交易可以被退回;如果不是已使用狀態,則該項驗證通過。類似地,當該新的匯款交易通過驗證後在區塊鏈的分散式資料庫中更新時,區塊鏈節點也應將該新的匯款交易中包含的預備金金額在匯出方用戶帳戶的預備金串列中更新為“已使用狀態”。 較佳地,用戶端設備還可將未被使用過的、亦即還未被分配至任何匯款交易的預備金金額可在預備金串列中標記為未使用狀態(狀態1);一預備金金額一旦被分配於一個匯款交易,該預備金金額可在用戶帳戶的預備金串列中即刻被標識為被使用狀態(狀態2),亦即在用戶端保存的目前預備金串列中將上述預備金金額標定為被使用狀態(狀態2)。由此,用戶端設備僅能分配未使用狀態(狀態1)的預備金金額用於新的匯款交易,且在分配後將該被分配的預備金金額隨即在本地更改為被使用狀態(狀態2),以防止對同一預備金金額的重複分配。 在一示出的實施例中,在根據目前的預備金餘額得到預備金串列之後,將切換前的預備金餘額切換為備用餘額。 在用戶端設備根據上述實施例所述的過程根據目前的預備金金額得到預備金串列之後,此時,由於新的預備金串列已經作為目前預備金串列可用於新的匯款交易,原預備金串列可以停止用作匯款交易,對應的,原預備金餘額可被切換為備用餘額,以在現有目前的預備金串列中的預備金金額低於預設閾值或接收到新的預備金串列構建指令時,基於該目前的預備餘額構建新的預備金串列。 更優地,為優化管理用戶帳戶中的各餘額,本說明書所述的備用餘額可用作收款餘額,當其他用戶發起對上述用戶帳戶的匯款交易被區塊鏈的節點設備驗證通過後,該匯款交易中的匯款額將被增加至所述收款餘額和所述帳戶餘額。 為保護區塊鏈用戶的帳戶隱私安全,在現有的一些區塊鏈中,用戶的帳戶餘額、及匯款交易的交易額均被加密;本說明書所提供的匯款方法也可以用於隱私模式的區塊鏈中。 在一示出的實施例中,區塊鏈用戶帳戶的帳戶餘額、預備金串列中的預備金金額、用戶設備發起的匯款交易中的匯款額均被預先進行了加密處理。由於匯款交易所包括的匯款額及預備金金額均為加密狀態,為保證區塊鏈節點可以驗證上述被分配至匯款交易的預備金金額足以支付本次匯款,上述匯款交易中還應包括用以證明為所述匯款交易包括的預備金金額之和大於或等於所述匯款交易的匯款額的第一零知識證明。 對應地,由於用戶帳戶的帳戶餘額及用戶基於切換後的預備金餘額劃分得到的多個預備金金額均被預先進行了加密處理,為保證區塊鏈節點可以驗證預備金串列建立交易所包含的預備金金額之和沒有超出用戶的帳戶餘額,上述預備金串列建立交易還應包括用以證明基於切換後的預備金餘額劃分出的多個預備金金額之和小於或等於所述用戶的帳戶餘額的第二零知識證明。 零知識證明,通常指的是證明者(被驗證者)能夠在不向驗證者提供任何有用的資訊的情況下,使驗證者相信某個論斷是正確的。在本說明書中,用戶端設備可透過提供第一零知識證明,使得區塊鏈中的節點(驗證者)在不獲知匯款額、及預備金金額的具體值的情況下,可以相信為匯款交易所分配的預備金金額的具體值之和大於或者等於所述匯款額的具體值,足以支付上述匯款交易,亦即使得區塊鏈中的節點(驗證者)基於零知識證明演算法針對所述第一零知識證明進行零知識驗證,以確認為所述匯款交易所分配的預備金金額之和是否大於或者等於所述匯款額。同理,用戶端設備可透過提供第二零知識證明,使得區塊鏈中的節點(驗證者)在不獲知用戶帳戶的帳戶餘額、及預備金串列建立交易所包含的預備金金額的實際值(明文)情況下,可以相信預備金串列建立交易中所包含的多個預備金金額之和是否不大於上述用戶帳戶的帳戶餘額。 在一示出的實施例中,當用戶帳戶中的預備金餘額、備用餘額也被顯示在用戶帳戶的狀態中,即區塊鏈上的其他節點可透過查詢用戶帳戶狀態,獲知本用戶設備的預備金餘額和備用餘額時,為保護用戶的帳戶隱私安全,用戶帳戶的預備金餘額和備用餘額也被預先進行了加密處理,此時上述的第二零知識證明可用於證明基於切換後的預備金餘額劃分出的多個預備金金額之和小於或等於所述切換後的預備金餘額。由於上述切換後的預備金餘額是基於帳戶餘額劃分得到的,該預備金餘額必定小於帳戶餘額,所以上述的第二零知識證明也可為區塊鏈節點驗證預備金串列建立交易所包含的預備金金額之和不大於帳戶餘額提供了有效的證明。 本說明書並不限定上述密碼學加密演算法的類型,可以包括加法同態加密演算法或全同態加密演算法,還可包括同態承諾演算法(如Pederson Commitment等),只要確保該加密演算法能夠滿足加法同態並且能夠支持驗證一明文資料屬某個區間的零知識證明,使得加密的匯出方用戶的帳戶餘額(或預備金餘額)可直接扣除加密的匯款額,加密的接收方用戶的帳戶餘額可直接增加加密的匯款額。 例如,上述區塊鏈可以支持基於橢圓曲線的Pedersen Commitment承諾演算法,用以保證區塊鏈中被加密的數額可以在加密狀態被驗證數額範圍、且可實現加法同態。 本說明書並不限定上述第一零知識證明、第二零知識證明的具體類型,例如可以採用相關技術中的區間證明(Range Proof)技術,譬如Bulletproofs方案或“zksnark”通用零知識證明技術等。 在又一示出的實施例中,為防止區塊鏈中用戶節點作惡對區塊鏈進行攻擊,上述匯款交易中還可包括用以證明所述匯款額大於或等於零的第三零知識證明,上述第三零知識證明可基於所述被加密的匯款額產生,使得區塊鏈中的節點(驗證者)在不獲知匯款額的實際值(明文)情況下,可以驗證匯款交易的匯款額不小於零。 在又一示出的實施例中,為防止區塊鏈中用戶節點作惡產生無效的預備金金額,預備金串列建立交易中還可包括用以證明上述預備金串列建立交易所包含的每個預備金金額均大於或等於零的第四零知識證明,上述第四零知識證明可基於各個預備金金額產生,使得區塊鏈中的節點(驗證者)在不獲知各個預備金金額的實際值(明文)情況下,可以驗證預備金串列建立交易中包含的每個預備金金額均大於或等於零。 在本說明書又一示出的實施例中,上述匯款交易及預備金串列建立交易還可包括用戶端設備基於用戶帳戶的私鑰所作的數位簽名,用以供區塊鏈的節點對電子簽名進行驗證,防止其他節點冒充匯出方而發布上述第一交易,發布錯誤資訊、惡意擾亂交易秩序。 本說明書提供的基於區塊鏈的匯款方法,透過將用戶帳戶的帳戶餘額至少劃分為一預備金餘額和一備用餘額,基於預備金餘額構建包含多個預備金金額的預備金串列,為用戶帳戶併發匯款交易提供可支付證明;在上述預備金串列中的可用預備金金額低於預設閾值時,或接到新的預備金串列構建指令時,再將上述備用餘額切換為預備金月,基於上述切換後的預備金餘額構建包含多個預備金金額的新的預備金串列;在新的預備金串列被區塊鏈節點驗證通過、新的預備金串列被更新至用戶帳戶後,用戶帳戶再基於新的預備金串列構建新的匯款交易。上述預備金串列切換的過程中,匯款交易可仍基於原預備金串列構建而無需暫停;且而上述切換預備金餘額並建立新的預備金串列的過程可隨著目前預備金串列的使用情況(可用於分配的預備金金額是否低於預設閾值)、或應接收到的新的預備金串列構建指令循環執行,因此全程無需暫停發送匯款的交易,提高交易的併發性,且避免交易中斷,最大化了區塊鏈交易的吞吐量。 為了便於理解,下面以區塊鏈網路中的匯款交易為例,對本說明書的技術方案進行詳細說明。圖3是一示例性實施例提供的一種在區塊鏈網路中實施匯款交易和預備金串列交易的示意圖。假定用戶A使用的匯出方設備為用戶設備1,譬如該用戶設備1上登錄有對應於用戶A的用戶帳號;類似地,用戶B使用的接收方設備為用戶設備2。用戶設備1上可以運行有區塊鏈的客戶端程式,使得該用戶設備1在區塊鏈網路中存在對應的區塊鏈節點,比如圖2所示的節點1。類似地,用戶設備2上可以運行有區塊鏈的客戶端程式,使得該用戶設備2在區塊鏈網路中存在對應的區塊鏈節點,比如圖3所示的節點2。區塊鏈網路中還存在其他區塊鏈節點,比如圖3所示的節點i等。透過上述的節點1、節點2、節點i等,使得用戶A與用戶B之間的匯款交易、及用戶A發送的預備金串列建立交易可以經由區塊鏈網路實施,相關交易資訊可以被記錄至各個區塊鏈節點分別維護的區塊鏈帳本中,可以避免發生篡改,並有助於後續查驗。 例如,由用戶A向用戶B進行區塊鏈匯款。用戶A在註冊帳戶後,首先應發送預備金串列建立交易以初始化其帳戶中的預備金串列。其中,本說明書中的“用戶”可以表現為所登錄的用戶帳號,而該用戶帳號實際可以歸屬於個人或組織,本說明書並不對此進行限制。 如圖5所示,在上述區塊鏈中,用戶A的帳戶餘額s_A被分為兩個子餘額:s_A_1和s_A_2,用戶B的帳戶餘額s_B也被分為兩個子餘額:s_B_1和s_B_2。用戶A的帳戶餘額s_A、子餘額s_A_1和s_A_2及用戶B的帳戶餘額s_B、子餘額s_B_1和s_B_2均基於加密演算法被加密:
Figure 02_image001
在一實施例中,上述加密演算法可以為Pederson Commitment同態承諾演算法。 初始時,子餘額s_A_1作為預備金餘額,s_A_2作為收款餘額,子餘額s_B_1作為預備金餘額,s_B_2作為收款餘額。 圖4示意了用戶A設定預備金串列MA 並基於預備金串列MA 發起匯款交易的過程。設定用戶A的預備金串列MA 的過程包括以下步驟: 步驟401,用戶A建立預備金串列MA ,上述預備金串列MA 包括用戶A針對子餘額s_A_1劃分得到的、被基於上述的同態加密演算法HE加密的、多個預備金金額MA [1],MA [2],…,MA [LA ],並在上述預備金串列中將上述預備金金額MA [1],MA [2],…,MA [LA ]的使用狀態標記為“未使用狀態”。 具體實現時,用戶A可對子餘額s_A_1或子餘額s_A_1的部分餘額進行劃分,得到上述多個預備金金額的明文ma [1],ma [2],…,ma [LA ],並基於上述同態加密演算法對上述多個預備金金額加密,以得到預備金金額密文MA [1],MA [2],…,MA [LA ];用戶A也可以對子餘額s_A_1的密文S_A_1直接進行劃分以得到MA [1],MA [2],…,MA [LA ],並基於上述同態加密演算法的進行逆運算,獲知上述預備金金額密文對應的明文ma [1],ma [2],…,ma [LA ]。用戶A可將上述預備金金額的明文ma [1],ma [2],…,ma [LA ]與密文MA [1],MA [2],…,MA [LA ]的對應關係獨自保存,以方便用戶A在具體的匯款交易中選取合適的預備金金額。或者,用戶A可僅在本地用戶端保存上述預備金金額的明文,用戶端週期性地從區塊鏈上同步帳戶資料,將從區塊鏈上獲取的加密資料解密後,即可得到已被使用的預備金金額。 步驟402,用戶A產生零知識證明PF[s_A_1≥(ma [1]+ma [2]+…+ma [LA ])],用於證明上述預備金串列MA 中的MA [1],MA [2],…,MA [LA ]對應的預備金金額ma [1],ma [2],…,ma [LA ]之和小於或者等於用戶A的子餘額s_A_1,上述零知識證明PF[s_A_1≥(ma [1]+ma [2]+…+ma [LA ])]不使用預備金金額ma [1],ma [2],…,ma [L-A]及s_A_1的值,即可使驗證者相信ma [1],ma [2],…,ma [LA ]之和小於或者等於s_A_1。在一實施例中,上述零知識證明PF[s_A_1≥(ma [1]+ma [2]+…+ma [LA ])]可使用zksnark等通用零知識證明技術或Bulletproof方案等區間證明技術。 步驟403,用戶A產生零知識證明PF(ma [i]≥0),用以證明上述預備金串列MA 中的MA [1],MA [2],…,MA [LA ]對應的預備金金額ma [1],ma [2],…,ma [LA ]均不小於零。上述零知識證明PF(ma [i]≥0)不使用預備金金額ma [i]的值即可使驗證者相信ma [i]≥0。在一實施例中,上述零知識證明PF(ma [i]≥0)可使用Borromean環簽名方案或zksnark等通用零知識證明技術方案等區間證明技術。 步驟404,用戶A基於MA 、PF[s_A_1≥(ma [1]+ma [2]+…+ma [L-A])]、PF(ma [i]≥0)產生數位簽名Sign As 。 步驟405,用戶A向所述區塊鏈發送交易Ts 以確定上述的預備金串列MA ,上述交易Ts 包括MA 、PF[s_A_1≥(ma [1]+ma [2]+…+ma [LA ])]、PF(ma [i]≥0),其中1<=i<=L_A,和Sign As 。 步驟406,區塊鏈的節點接收上述交易Ts 。 步驟407,區塊鏈的節點執行對上述交易Ts 的電子簽名Sign As 驗證,如果通過,執行下個步驟。 步驟408,區塊鏈的節點基於零知識證明演算法對PF[s_A_1≥(ma [1]+ma [2]+…+ma [LA ])]進行零知識驗證,以確認ma [1],ma [2],…,ma [LA ]之和是否小於或者等於所述用戶A的子餘額s_A_1;如果是,執行下個步驟。 步驟409,區塊鏈的節點基於零知識證明演算法對PF(ma [i]≥0)進行零知識驗證,以確認(ma [i]≥0均不小於零,其中1<=i<=L_A;如果是,執行下個步驟。 步驟410,區塊鏈的節點將通過驗證的交易Ts 收錄至所述區塊鏈的分散式資料庫,並將預備金串列MA 更新至所述用戶A的帳戶狀態。 至此,區塊鏈的節點完成了對用戶A的預備金串列MA 的更新,本領域的技術人員熟知,在設定或更新用戶A的預備金串列MA 的實際實施過程中,還可包括許多其他的驗證步驟,例如防重放的驗證等,在此不做限定;而且本說明書並不限定產生各個證明或電子簽名的先後順序,也不限定區塊鏈中的節點對匯出方提出的交易Ts中各項證明或電子簽名的驗證的先後順序,圖4僅僅是本說明書提供的設定用戶的預備金串列的方法的一種實施例,本說明書不限於此。用戶B帳戶中的預備金串列MB的設定過程與上述步驟401至410的過程相似,在此不再贅述。 圖4中的區塊鏈執行用戶A向用戶B匯款轉帳的過程如下: 步驟411,用戶A基於上述同態加密演算法產生匯款額密文St =HE(s_t),其中s_t為用戶A向用戶B轉帳的匯款額。 步驟412,用戶A從預備金串列MA 中選取一個未使用過的、且其明文mA [k]足以支付匯款額s_t的預備金金額密文MA [k],並將該預備金金額密文MA [k]標記為被使用狀態,以使MA [k]不可再被指定在其他新的匯款交易中。 步驟413,用戶A產生零知識證明Pf(mA [k]≥s_t),用以證明MA [k]對應的預備金金額mA [k]足以支付本次匯款額s_t;上述零知識證明Pf(mA [k]≥s_t)不使用mA [k]及s_t的值,即可使驗證者相信mA [k]≥s_t。 步驟414,用戶A產生零知識證明Pf(s_t≥0),用以證明匯款額s_t不小於零;上述上述零知識證明Pf(s_t≥0)不使用s_t的值,即可使驗證者相信s_t≥0。 步驟415,用戶A基於St、MA [k]、Pf(mA [k]≥s_t)、Pf(s_t≥0)產生數位簽名Sign At 。 步驟416,用戶A向所述區塊鏈發送交易Tt 以向用戶B匯款轉帳,交易Tt 包括St 、MA [k]、Pf(mA [k]≥s_t)、Pf(s_t≥0)及Sign At ,上述內容均為密文狀態,因此保護了用戶A、B的匯款交易隱私性。 步驟417,區塊鏈的節點接收上述交易Tt 。 步驟418,區塊鏈的節點執行對上述交易Tt 的電子簽名Sign At 驗證,如果通過,執行下個步驟。 步驟419,區塊鏈的節點驗證上述Tt 所包含的MA [k]是否為已使用狀態;如果否,執行下個步驟。 步驟420,區塊鏈的節點基於零知識證明演算法對PF(ma [k]≥s_t)進行零知識驗證,以確認MA [k]對應的預備金金額是否大於或者等於所述匯款額;如果是,執行下個步驟。 步驟421,區塊鏈的節點基於零知識證明演算法對PF(s_t≥0)進行零知識驗證,以確認本次匯款交易的匯款額密文St 對應的匯款額實際值不小於零;如果是,執行下個步驟。 步驟422,區塊鏈的節點將通過驗證的交易Tt 收錄至所述區塊鏈的分散式資料庫,並在用戶A的帳戶餘額密文S_A、和子帳戶餘額密文S_A_1中均基於同態運算性質扣除所述匯款額密文St ,在用戶B的帳戶餘額密文S_B和子帳戶餘額密文S_B_2中均基於同態運算性質增加所述匯款額密文St ,以使上述用戶A的帳戶餘額更新為(s_A-s_t),A的匯款子帳戶餘額s_A_1更新為(s_A_1-s_t),用戶B的帳戶餘額更新為(s_B+s_t),B的收款子帳戶餘額s_B_2更新為(s_B_2+s_t);並將用戶A的預備金串列MA 中MA [k]對應的狀態更改為已使用狀態。 另外,本領域的技術人員熟知,在匯款交易的實際實施過程中,還可包括許多其他的驗證步驟,例如防重放的驗證等,在此不做限定;而且本說明書並不限定產生各個證明或電子簽名的先後順序,也不限定區塊鏈中的節點對匯出方提出的交易Tt 中各項證明或電子簽名的驗證的先後順序,圖4僅僅是本說明書提供的基於區塊鏈的匯款方法的一種實施例,本說明書不限於此。 雖然圖4中使用連續的編號表示了用戶A初始化設定預備金串列及用戶A向用戶B匯款的過程,但是這並不表示用戶A在每次發起匯款交易之前均需設定其帳戶中的預備金串列。本領域技術人員熟知,用戶在註冊成為該區塊鏈的用戶後的第一次匯款交易之前,需要初始化設定其帳戶中的預備金串列;當上述預備金串列中的被加密的預備金金額被使用完畢、或剩餘的被加密的預備金金額對應的預備金金額已經不再足以支付下一匯款交易,用戶才需重新設定其帳戶中的預備金串列;用戶還根據自身的具體需求可週期性更新上述預備金串列。 隨著用戶A發送的匯款交易的增多,預備金串列MA 中可用的預備金金額逐漸變少,用戶A的設備節點1監控預備金串列MA 中可用的預備金金額的數值總和、或監控預備金串列MA 中可用的預備金金額的個數之和,當上述數值總和、或個數之和低於設定的閾值時,用戶A將其子帳戶s_A_1與s_A_2互相切換,基於新的預備金餘額s_A_2來產生新的預備金串列MA ’。新的預備金串列MA ’的構建過程與步驟401-410類似,在此不再贅述,MA ’被更新至用戶A的帳戶後,將替代原預備金串列MA 以作為新的有效的預備金串列為匯款交易提供可支付證明。 圖2示意了上述的用戶A帳戶中的預備金串列的建立及更新過程,由圖2可以看出,透過子帳戶餘額的循環切換,用戶A的帳戶中始終存在一個有效的預備金串列可為併發的匯款交易提供多個預備金金額,從而使得用戶A無需暫停匯款交易以更新預備金串列,保證了匯款交易的最大化併發提交和執行。而且,在本實施例提供的匯款交易方法中,由於分別設定了用於匯款和用於收款的兩個子帳戶餘額,假設在用戶A向B執行匯款交易時,有其他用戶C也在向用戶A發起匯款交易,這些所有的交易可以同時被提交和執行;因為整個交易的執行過程中利用到的零知識證明只和相關的預備金金額有關,帳戶的餘額可以隨意的增加或扣減。 值得注意的是,如圖5所示,用戶A的子帳戶餘額S_A_2在初始時用作收款交易,當用戶設備監測到預備金串列MA 中的預備金金額低於預設的閾值時,需將子帳戶餘額S_A_1與子帳戶餘額S_A_2的功能互相切換,S_A_1作為收款餘額,S_A_2作為預備金餘額。在將S_A_2作為預備金餘額以執行新的預備金串列的構建之前,用戶設備需等待一段時間,直至上述切換之前區塊鏈上其他用戶發往用戶A的子帳戶餘額S_A_2的交易均被更新顯示在用戶A的帳戶餘額S_A和子帳戶餘額S_A_2之後,子帳戶餘額S_A_2的值不再變化後,再基於S_A_2構建新的預備金串列,以防由於S_A_2的值的變化導致基於S_A_2的值產生的PF[s_A_2≥(ma [1]+ma [2]+…+ma [LA ])]無法通過區塊鏈節點的驗證。上述等待時間可依區塊鏈的成塊頻率而定,例如,約等待3-5個成塊時間。 圖6是一示例性實施例提供的一種設備的示意結構圖。請參考圖6,在硬體層面,該設備包括處理器602、內部匯流排604、網路介面606、內部記憶體608以及非易失性記憶體610,當然還可能包括其他業務所需要的硬體。處理器602從非易失性記憶體610中讀取對應的電腦程式到內部記憶體608中然後運行,在邏輯層面上形成區塊鏈交易裝置。當然,除了軟體實現方式之外,本說明書一個或多個實施例並不排除其他實現方式,比如邏輯裝置抑或軟硬體結合的方式等等,也就是說以下處理流程的執行主體並不限定於各個邏輯單元,也可以是硬體或邏輯裝置。 請參考圖7,本說明書還提供了一種基於區塊鏈的匯款裝置70,應用於區塊鏈的用戶端設備,用戶帳戶的帳戶餘額至少被劃分為一預備金餘額和一備用餘額;其中,所述用戶帳戶包括一動態更新的預備金串列;所述預備金串列包括多個預備金金額; 所述裝置70包括: 預備金金額分配單元702,回應於用戶發起的匯款操作,根據預備金串列建立單元704提供的目前的預備金串列為用戶提交的匯款額分配對應的預備金金額; 匯款交易構建及發布單元706,基於所述匯款額以及分配的所述預備金金額構建匯款交易,並將所述匯款交易發布至區塊鏈,以在所述匯款交易被區塊鏈中的節點設備驗證通過後,從所述帳戶餘額和所述預備金餘額中均扣減所述匯款額; 其中,所述預備金串列建立單元704包括: 預備金串列產生模組7042,獲得目前的預備金餘額,根據目前的預備金餘額得到預備金串列; 預備金串列監測模組7044,動態監測目前預備金串列中可用於分配的預備金金額是否低於預設閾值。 在一示出的實施例中,所述預備金串列產生模組7042: 對目前預備金餘額進行劃分得到多個預備金金額,基於劃分得到的多個預備金金額構建預備金串列建立交易; 將所述預備金串列建立交易發布至區塊鏈,以在所述預備金串列建立交易被區塊鏈中的節點設備驗證通過後,在所述用戶帳戶基於所述劃分得到的多個預備金金額構建預備金串列。 在一示出的實施例中,所述預備金串列產生模組7042: 對目前預備金餘額進行劃分得到多個預備金金額,基於劃分得到的多個預備金金額構建預備金串列,並基於所述預備金串列構建預備金串列建立交易; 將所述預備金串列建立交易發布至區塊鏈,以在所述預備金串列建立交易被區塊鏈中的節點設備驗證通過後,將所述預備金串列更新至所述用戶帳戶中。 在一示出的實施例中,所述裝置70還包括: 切換單元708,在根據目前的預備金餘額得到預備金串列之後,將切換前的預備金餘額切換為備用餘額。 在一示出的實施例中,所述備用餘額為收款餘額;其中,當其他用戶發起對所述用戶帳戶的匯款交易被區塊鏈的節點設備驗證通過後,該匯款交易中的匯款額將被增加至所述收款餘額和所述帳戶餘額。 在一示出的實施例中,所述用戶帳戶的帳戶餘額、所述預備金金額和所述匯款額均被預先進行了加密處理; 所述匯款交易還包括第一零知識證明,用以證明為所述匯款交易包括的預備金金額之和大於或等於所述匯款交易的匯款額; 所述預備金串列建立交易還包括第二零知識證明,用以證明基於切換後的預備金餘額劃分出的多個預備金金額之和小於或等於所述用戶的帳戶餘額。 在一示出的實施例中,所述用戶帳戶的預備金餘額和備用餘額被預先進行了加密處理,所述第二零知識證明用以證明基於切換後的預備金餘額劃分出的多個預備金金額之和小於或等於所述切換後的預備金餘額。 在一示出的實施例中,所述匯款交易還包括第三零知識證明,用以證明所述匯款額大於或等於零。 在一示出的實施例中,所述預備金串列建立交易還包括第四零知識證明,用以證明基於切換後的預備金餘額劃分出的多個預備金金額均大於或等於零。 上述裝置中各個單元和模組的功能和作用的實現過程具體詳見上述方法中對應步驟的實現過程,相關之處參見方法實施例的部分說明即可,在此不再贅述。 上述實施例闡明的系統、裝置、模組或單元,具體可以由電腦晶片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為電腦,電腦的具體形式可以是個人電腦、膝上型電腦、蜂巢式電話、相機電話、智慧型手機、個人數位助理、媒體播放器、導航設備、電子郵件收發設備、遊戲控制台、平板電腦、穿戴式設備或者這些設備中的任意幾種設備的組合。 與上述方法實施例相對應,本說明書的實施例還提供了一種電腦設備,該電腦設備包括記憶體和處理器。其中,記憶體上儲存有能夠由處理器運行的電腦程式;處理器在運行儲存的電腦程式時,執行本說明書實施例中基於區塊鏈的匯款方法的各個步驟。對基於區塊鏈的匯款方法的各個步驟的詳細描述請參見之前的內容,不再重複。 與上述方法實施例相對應,本說明書的實施例還提供了一種電腦可讀儲存媒體,該儲存媒體上儲存有電腦程式,這些電腦程式在被處理器運行時,執行本說明書實施例中基於區塊鏈的匯款方法的各個步驟。對基於區塊鏈的匯款方法的各個步驟的詳細描述請參見之前的內容,不再重複。 以上所述僅為本說明書的較佳實施例而已,並不用以限制本說明書,凡在本說明書的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本說明書保護的範圍之內。 在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出介面、網路介面和內部記憶體。 內部記憶體可能包括電腦可讀媒體中的非永久性記憶體,隨機存取記憶體(RAM)和/或非易失性內部記憶體等形式,如唯讀記憶體(ROM)或閃存(flash RAM)。內部記憶體是電腦可讀媒體的示例。 電腦可讀媒體包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現資訊儲存。資訊可以是電腦可讀指令、資料結構、程式的模組或其他資料。 電腦的儲存媒體的例子包括,但不限於相變內部記憶體(PRAM)、靜態隨機存取記憶體(SRAM)、動態隨機存取記憶體(DRAM)、其他類型的隨機存取記憶體(RAM)、唯讀記憶體(ROM)、電可抹除可編程唯讀記憶體(EEPROM)、快閃記憶體或其他內部記憶體技術、唯讀光碟唯讀記憶體(CD-ROM)、數位多功能光碟(DVD)或其他光學儲存、磁盒式磁帶,磁帶磁碟儲存或其他磁性儲存設備或任何其他非傳輸媒體,可用於儲存可以被計算設備存取的資訊。按照本文中的界定,電腦可讀媒體不包括暫態性電腦可讀媒體(transitory media),如調變的資料信號和載波。 還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列元件的過程、方法、商品或者設備不僅包括那些元件,而且還包括沒有明確列出的其他元件,或者是還包括為這種過程、方法、商品或者設備所固有的元件。在沒有更多限制的情況下,由語句“包括一個……”限定的元件,並不排除在包括所述元件的過程、方法、商品或者設備中還存在另外的相同元件。 本領域技術人員應明白,本說明書的實施例可提供為方法、系統或電腦程式產品。因此,本說明書的實施例可採用完全硬體實施例、完全軟體實施例或結合軟體和硬體方面的實施例的形式。而且,本說明書的實施例可採用在一個或多個其中包含有電腦可用程式碼的電腦可用儲存媒體(包括但不限於磁碟記憶體、CD-ROM、光學記憶體等)上實施的電腦程式產品的形式。
70:裝置 102:步驟 104:步驟 401:步驟 402:步驟 403:步驟 404:步驟 404:步驟 405:步驟 406:步驟 407:步驟 408:步驟 409:步驟 410:步驟 411:步驟 412:步驟 413:步驟 414:步驟 415:步驟 416:步驟 417:步驟 418:步驟 419:步驟 420:步驟 421:步驟 422:步驟 702:預備金金額分配單元 704:預備金串列建立單元 706:匯款交易構建及發布單元
圖1是一示例性實施例提供的一種基於區塊鏈的匯款方法的流程圖。 圖2是一示例性實施例提供的一種預備金串列的建立及更新過程的流程圖。 圖3是一示例性實施例提供的種在區塊鏈網路中實施匯款交易的示意圖。 圖4是一示例性實施例提供的一種在區塊鏈網路中實施更新預備金串列並匯款交易的流程圖。 圖5是一示例性實施例提供的區塊鏈上用戶的帳戶狀態示意圖。 圖6是一示例性實施例提供的一種基於區塊鏈的用戶端設備的示意圖。 圖7是一示例性實施例提供的一種基於區塊鏈的匯款裝置的示意圖。

Claims (20)

  1. 一種基於區塊鏈的匯款方法,應用於區塊鏈的用戶端設備,用戶帳戶的帳戶餘額至少被劃分為一預備金餘額和一備用餘額,其中,該用戶帳戶包括一動態更新的預備金串列,該預備金串列包括多個預備金金額;該方法包括:回應於用戶發起的匯款操作,根據目前的預備金串列為用戶提交的匯款額分配對應的預備金金額,基於該匯款額以及分配的該預備金金額構建匯款交易,並將該匯款交易發布至區塊鏈,以在該匯款交易被區塊鏈中的節點設備驗證通過後,在該區塊鏈的分散式資料庫內收錄該匯款交易,更新該匯款交易的匯款子帳戶與收款子帳戶的餘額,並將該預備金串列對應的狀態更改為已使用狀態,以從該帳戶餘額和該預備金餘額中均扣減該匯款額,其中,該預備金串列的建立及更新過程包括:步驟A,獲得目前的預備金餘額,根據目前的預備金餘額得到預備金串列;以及步驟B,動態監測目前預備金串列中可用於分配的預備金金額是否低於預設閾值,如果是則將目前的備用餘額切換為預備金餘額後,執行步驟A。
  2. 根據請求項1所述的方法,該根據目前的預備金餘額得到預備金串列,包括: 對目前預備金餘額進行劃分得到多個預備金金額,基於劃分得到的多個預備金金額構建預備金串列建立交易;以及將該預備金串列建立交易發布至區塊鏈,以在該預備金串列建立交易被區塊鏈中的節點設備驗證通過後,在該用戶帳戶基於該劃分得到的多個預備金金額構建預備金串列。
  3. 根據請求項1所述的方法,該根據目前的預備金餘額得到預備金串列,包括:對目前預備金餘額進行劃分得到多個預備金金額,基於劃分得到的多個預備金金額構建預備金串列,並基於該預備金串列構建預備金串列建立交易;以及將該預備金串列建立交易發布至區塊鏈,以在該預備金串列建立交易被區塊鏈中的節點設備驗證通過後,將該預備金串列更新至該用戶帳戶中。
  4. 根據請求項1所述的方法,還包括:在根據目前的預備金餘額得到預備金串列之後,將切換前的預備金餘額切換為備用餘額。
  5. 根據請求項4所述的方法,該備用餘額為收款餘額,其中,當其他用戶發起對該用戶帳戶的匯款交易被區塊鏈的節點設備驗證通過後,該匯款交易中的匯款額將被增加 至該收款餘額和該帳戶餘額。
  6. 根據請求項2或3所述的方法,該用戶帳戶的帳戶餘額、該預備金金額和該匯款額均被預先進行了加密處理;該匯款交易還包括第一零知識證明,用以證明為該匯款交易包括的預備金金額之和大於或等於該匯款交易的匯款額;以及該預備金串列建立交易還包括第二零知識證明,用以證明基於切換後的預備金餘額劃分出的多個預備金金額之和小於或等於該用戶的帳戶餘額。
  7. 根據請求項2或3所述的方法,該用戶帳戶的預備金餘額和備用餘額被預先進行了加密處理,該第二零知識證明用以證明基於切換後的預備金餘額劃分出的多個預備金金額之和小於或等於該切換後的預備金餘額。
  8. 根據請求項6所述的方法,該匯款交易還包括第三零知識證明,用以證明該匯款額大於或等於零。
  9. 根據請求項6所述的方法,該預備金串列建立交易還包括第四零知識證明,用以證明基於切換後的預備金餘額劃分出的多個預備金金額均大於或等於零。
  10. 一種基於區塊鏈的匯款裝置,應用於區塊鏈的用戶端 設備,用戶帳戶的帳戶餘額至少被劃分為一預備金餘額和一備用餘額,其中,該用戶帳戶包括一動態更新的預備金串列,該預備金串列包括多個預備金金額;該裝置包括:預備金金額分配單元,回應於用戶發起的匯款操作,根據預備金串列建立單元提供的目前的預備金串列為用戶提交的匯款額分配對應的預備金金額;以及匯款交易構建及發布單元,基於該匯款額以及分配的該預備金金額構建匯款交易,並將該匯款交易發布至區塊鏈,以在該匯款交易被區塊鏈中的節點設備驗證通過後,在該區塊鏈的分散式資料庫內收錄該匯款交易,更新該匯款交易的匯款子帳戶與收款子帳戶的餘額,並將該預備金串列對應的狀態更改為已使用狀態,以從該帳戶餘額和該預備金餘額中均扣減該匯款額,其中,該預備金串列建立單元包括:預備金串列產生模組,獲得目前的預備金餘額,根據目前的預備金餘額得到預備金串列;以及預備金串列監測模組,動態監測目前預備金串列中可用於分配的預備金金額是否低於預設閾值。
  11. 根據請求項10所述的裝置,該預備金串列產生模組:對目前預備金餘額進行劃分得到多個預備金金額,基於劃分得到的多個預備金金額構建預備金串列建立交易;以及 將該預備金串列建立交易發布至區塊鏈,以在該預備金串列建立交易被區塊鏈中的節點設備驗證通過後,在該用戶帳戶基於該劃分得到的多個預備金金額構建預備金串列。
  12. 根據請求項10所述的裝置,該預備金串列產生模組:對目前預備金餘額進行劃分得到多個預備金金額,基於劃分得到的多個預備金金額構建預備金串列,並基於該預備金串列構建預備金串列建立交易;以及將該預備金串列建立交易發布至區塊鏈,以在該預備金串列建立交易被區塊鏈中的節點設備驗證通過後,將該預備金串列更新至該用戶帳戶中。
  13. 根據請求項10所述的裝置,還包括:切換單元,在根據目前的預備金餘額得到預備金串列之後,將切換前的預備金餘額切換為備用餘額。
  14. 根據請求項13所述的裝置,該備用餘額為收款餘額,其中,當其他用戶發起對該用戶帳戶的匯款交易被區塊鏈的節點設備驗證通過後,該匯款交易中的匯款額將被增加至該收款餘額和該帳戶餘額。
  15. 根據請求項11或12所述的裝置,該用戶帳戶的帳戶餘額、該預備金金額和該匯款額均被預先進行了加密處理; 該匯款交易還包括第一零知識證明,用以證明為該匯款交易包括的預備金金額之和大於或等於該匯款交易的匯款額;以及該預備金串列建立交易還包括第二零知識證明,用以證明基於切換後的預備金餘額劃分出的多個預備金金額之和小於或等於該用戶的帳戶餘額。
  16. 根據請求項11或12所述的裝置,該用戶帳戶的預備金餘額和備用餘額被預先進行了加密處理,該第二零知識證明用以證明基於切換後的預備金餘額劃分出的多個預備金金額之和小於或等於該切換後的預備金餘額。
  17. 根據請求項15所述的裝置,該匯款交易還包括第三零知識證明,用以證明該匯款額大於或等於零。
  18. 根據請求項15所述的裝置,該預備金串列建立交易還包括第四零知識證明,用以證明基於切換後的預備金餘額劃分出的多個預備金金額均大於或等於零。
  19. 一種電腦設備,包括:記憶體和處理器;該記憶體上儲存有可由處理器運行的電腦程式,該處理器運行該電腦程式時,執行如請求項1到9中任意一項所述的方法。
  20. 一種電腦可讀儲存媒體,其上儲存有電腦程式,該電 腦程式被處理器運行時,執行如請求項1到9中任意一項所述的方法。
TW108109549A 2018-10-26 2019-03-20 基於區塊鏈的匯款方法、裝置、電腦設備及電腦可讀儲存媒體 TWI723357B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201811259006.5A CN109508970B (zh) 2018-10-26 2018-10-26 基于区块链的汇款方法及装置
CN201811259006.5 2018-10-26

Publications (2)

Publication Number Publication Date
TW202016822A TW202016822A (zh) 2020-05-01
TWI723357B true TWI723357B (zh) 2021-04-01

Family

ID=65746853

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108109549A TWI723357B (zh) 2018-10-26 2019-03-20 基於區塊鏈的匯款方法、裝置、電腦設備及電腦可讀儲存媒體

Country Status (3)

Country Link
CN (2) CN111899012B (zh)
TW (1) TWI723357B (zh)
WO (1) WO2020082877A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111899012B (zh) * 2018-10-26 2024-04-05 创新先进技术有限公司 基于区块链的汇款方法及装置
US10797887B2 (en) 2019-06-26 2020-10-06 Alibaba Group Holding Limited Confidential blockchain transactions
CN110349021B (zh) * 2019-06-26 2020-08-25 阿里巴巴集团控股有限公司 区块链中实现机密交易的方法及装置
CN110473104B (zh) * 2019-08-20 2023-11-17 深圳市迅雷网络技术有限公司 一种交易处理方法及相关设备
CN110648234B (zh) * 2019-09-12 2022-08-19 广州蚁比特区块链科技有限公司 一种区块生成方法及装置
CN113132078B (zh) * 2019-12-31 2023-07-14 航天信息股份有限公司 一种基于同态承诺的区块链隐私保护方法及区块链系统
CN113657882A (zh) * 2020-05-29 2021-11-16 支付宝(杭州)信息技术有限公司 基于账户模型的区块链转账方法及装置
CN112017050B (zh) * 2020-10-27 2021-04-23 浙江甲骨文超级码科技股份有限公司 基于区块链的支持高并发场景的账户智能合约方法和系统
CN113222574B (zh) * 2021-05-11 2023-07-25 支付宝(杭州)信息技术有限公司 一种基于区块链系统的汇款方法及装置
CN115456612B (zh) * 2022-10-28 2023-03-24 深圳市小赢信息技术有限责任公司 一种余额库表记账方法、系统、终端及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI623205B (zh) * 2012-09-27 2018-05-01 內數位專利控股公司 在虛擬網路中端對端架構、api框架、發現及存取
US20180191503A1 (en) * 2015-07-14 2018-07-05 Fmr Llc Asynchronous Crypto Asset Transfer and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems
US20180299852A1 (en) * 2015-10-13 2018-10-18 LO3 Energy Inc. Use of blockchain based distributed consensus control

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150046337A1 (en) * 2013-08-06 2015-02-12 Chin-hao Hu Offline virtual currency transaction
JP6364132B2 (ja) * 2015-03-31 2018-07-25 ナスダック, インコーポレイテッドNasdaq, Inc. ブロックチェーン取引記録のシステムおよび方法
CN107306183B (zh) * 2016-04-22 2021-12-21 索尼公司 客户端、服务端、方法和身份验证系统
CN106549749B (zh) * 2016-12-06 2019-12-24 杭州趣链科技有限公司 一种基于加法同态加密的区块链隐私保护方法
WO2018120057A1 (zh) * 2016-12-30 2018-07-05 深圳前海达闼云端智能科技有限公司 基于区块链的货币管理方法和系统
CN106982205B (zh) * 2017-03-01 2020-05-19 中钞信用卡产业发展有限公司杭州区块链技术研究院 基于区块链的数字资产处理方法和装置
CN107248074A (zh) * 2017-03-29 2017-10-13 阿里巴巴集团控股有限公司 一种基于区块链的业务处理方法及设备
CN107358525B (zh) * 2017-06-26 2021-05-25 中国人民银行数字货币研究所 一种账户交易方法和装置
CN107563889A (zh) * 2017-08-29 2018-01-09 中国银行股份有限公司 账户余额信息处理方法及装置
CN107657528A (zh) * 2017-10-27 2018-02-02 夏烬楚 一种结合风险管理的商业保理管理系统
CN107977837A (zh) * 2017-11-10 2018-05-01 中国银行股份有限公司 热点账户的余额控制方法及装置
CN107871281A (zh) * 2017-11-24 2018-04-03 丰德金融平台有限公司 基于网络平台朋友圈授信实现风控的借贷撮合系统及方法
CN108183959B (zh) * 2017-12-29 2021-09-07 深圳市轱辘车联数据技术有限公司 一种基于区块链的车辆共享方法、服务器及可读存储介质
CN108182970B (zh) * 2018-01-03 2021-11-05 北京厚普聚益科技有限公司 一种医疗众筹系统管理方法、装置及系统
CN108256999B (zh) * 2018-01-19 2020-08-14 阿里巴巴集团控股有限公司 资金流转方法及装置、电子设备
CN111640021B (zh) * 2018-01-19 2023-06-30 创新先进技术有限公司 资金流转方法及装置、电子设备
CN111612446A (zh) * 2018-01-19 2020-09-01 阿里巴巴集团控股有限公司 区块链余额的调整方法及装置、电子设备
CN108600301B (zh) * 2018-03-08 2021-05-18 青岛墨一客区块链有限公司 一种区块链之间的跨链方法及主区块链
CN108647523B (zh) * 2018-04-28 2020-01-17 华南理工大学 一种基于区块链的电子证明系统及存证、文件恢复方法
CN111899012B (zh) * 2018-10-26 2024-04-05 创新先进技术有限公司 基于区块链的汇款方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI623205B (zh) * 2012-09-27 2018-05-01 內數位專利控股公司 在虛擬網路中端對端架構、api框架、發現及存取
US20180191503A1 (en) * 2015-07-14 2018-07-05 Fmr Llc Asynchronous Crypto Asset Transfer and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems
US20180299852A1 (en) * 2015-10-13 2018-10-18 LO3 Energy Inc. Use of blockchain based distributed consensus control

Also Published As

Publication number Publication date
CN111899012B (zh) 2024-04-05
CN109508970A (zh) 2019-03-22
CN109508970B (zh) 2020-07-10
WO2020082877A1 (zh) 2020-04-30
TW202016822A (zh) 2020-05-01
CN111899012A (zh) 2020-11-06

Similar Documents

Publication Publication Date Title
TWI723357B (zh) 基於區塊鏈的匯款方法、裝置、電腦設備及電腦可讀儲存媒體
TWI733091B (zh) 基於區塊鏈的匯款方法及裝置
US10977632B2 (en) Electronic bill management method, apparatus, and storage medium
TWI729719B (zh) 基於區塊鏈的資料授權方法及裝置、電子設備及電腦可讀儲存媒介
JP7128111B2 (ja) ブロックチェーンを介して資産関連活動を制御するシステム及び方法
WO2021017441A1 (zh) 基于区块链的数据授权方法及装置
KR101835520B1 (ko) 밸런스 데이터베이스를 관리하여 통합 포인트 서비스를 제공하는 방법 및 이를 이용한 지원 서버
TWI786282B (zh) 區塊鏈交易方法及裝置、電子設備
Poon et al. The bitcoin lightning network: Scalable off-chain instant payments
CA3011600C (en) Information transaction infrastructure
TW202029106A (zh) 基於區塊鏈的存證方法和裝置
KR101835521B1 (ko) 블록체인 내의 블록별로 밸런스 데이터베이스를 관리하여 통합 포인트 서비스를 제공하는 방법 및 이를 이용한 지원 서버
TW202029086A (zh) 基於區塊鏈的存證方法和裝置
KR101835519B1 (ko) Utxo 기반 프로토콜에서 머클 트리 구조를 사용하여 통합 포인트 서비스를 제공하는 방법 및 이를 이용한 지원 서버
CN110008716B (zh) 区块链交易方法及装置、电子设备、存储介质
CN110033370B (zh) 账户创建方法及装置、电子设备、存储介质
TW202016819A (zh) 區塊鏈交易方法及裝置、電子設備
Bhattacharya et al. A blockchain based peer-to-peer framework for exchanging leftover foreign currency
KR101835518B1 (ko) Utxo 기반 프로토콜을 사용하여 통합 포인트 서비스를 제공하는 방법 및 이를 이용한 지원 서버
WO2021017425A1 (zh) 区块链网络中实现机密交易的方法及装置
AU2016272701A1 (en) Systems and methods for publicly verifiable authorization
WO2018192931A1 (en) Delivery versus payment mechanism
Han et al. A secure E-coupon service based on blockchain systems
CN114631110A (zh) 使用区块链交易分配数字资产
CN110535664A (zh) 基于区块链的数据处理方法、装置、服务器及存储介质