TWI759793B - 由橋接設備執行的電腦實施方法、基於區塊鏈的容錯系統及用於實現基於區塊鏈的容錯系統的裝置 - Google Patents
由橋接設備執行的電腦實施方法、基於區塊鏈的容錯系統及用於實現基於區塊鏈的容錯系統的裝置 Download PDFInfo
- Publication number
- TWI759793B TWI759793B TW109123722A TW109123722A TWI759793B TW I759793 B TWI759793 B TW I759793B TW 109123722 A TW109123722 A TW 109123722A TW 109123722 A TW109123722 A TW 109123722A TW I759793 B TWI759793 B TW I759793B
- Authority
- TW
- Taiwan
- Prior art keywords
- blockchain
- height value
- block
- network node
- bridge device
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2071—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
- G06F11/2074—Asynchronous techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/183—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
- G06F21/645—Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/321—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/20—Manipulating the length of blocks of bits, e.g. padding or block truncation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/24—Key scheduling, i.e. generating round keys or sub-keys for block encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/26—Testing cryptographic entity, e.g. testing integrity of encryption key or encryption algorithm
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
- H04L9/3265—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate chains, trees or paths; Hierarchical trust model
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Business, Economics & Management (AREA)
- Databases & Information Systems (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Data Mining & Analysis (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本文公開了用於實現基於區塊鏈的容錯系統的方法、系統和裝置,包括編碼在電腦儲存媒體上的電腦程式。方法之一包括:使用橋接設備的第一執行緒集從區塊鏈網路節點檢索第一區塊鏈區塊集。橋接設備將第一區塊鏈區塊集儲存在橋接設備中。橋接設備使用橋接設備的第二執行緒集來驗證儲存在橋接設備中的第二區塊鏈區塊集。第一執行緒集與第二執行緒集不同。檢索第一區塊鏈區塊集以及驗證第二區塊鏈區塊集是使用第一執行緒集和第二執行緒集非同步地執行的。
Description
本文關於區塊鏈區塊的非同步處理,這可以被用於例如實現基於區塊鏈的容錯系統。
分散式帳本(DLS),還可被稱為共識網路和/或區塊鏈網路,使參與的實體能夠安全地且不可篡改地儲存資料。在不引用任何特定用例的情況下,DLS通常被稱為區塊鏈網路。區塊鏈網路的類型的示例可以包括公有區塊鏈網路、私有區塊鏈網路和聯盟區塊鏈網路。聯盟區塊鏈網路針對選擇的實體組群提供,該實體組群控制共識處理,並且聯盟區塊鏈網路包括存取控制層。
在一些用例中,區塊鏈系統需要與第三方系統交互。期望一種橋接或橋接設備以允許第三方系統與區塊鏈系統之間的通信。在這樣的交互系統中,還期望處理用於第三
方系統與區塊鏈系統之間通信的區塊鏈區塊的輸送量和處理效率較高,以及具有容錯性以確保依序通信。
所描述的主題的實施例可以單獨或組合地包括一個或多個特徵。例如,在一個實施例中,一種由橋接設備執行的方法,其中,橋接設備通信地連結到區塊鏈網路中的區塊鏈網路節點,所述方法包括:使用所述橋接設備的第一執行緒集從所述區塊鏈網路節點檢索第一區塊鏈區塊集;將所述第一區塊鏈區塊集儲存在所述橋接設備中;以及使用所述橋接設備的第二執行緒集來驗證儲存在所述橋接設備中的第二區塊鏈區塊集;其中,所述第一執行緒集不同於所述第二執行緒集;並且檢索所述第一區塊鏈區塊集以及驗證所述第二區塊鏈區塊集是使用所述第一執行緒集和所述第二執行緒集非同步地執行的。在一些實施例中,驗證操作可以與檢索操作非同步地執行,例如通過發起或以其他方式執行驗證操作,而無需等待檢索操作完成。在一些實施例中,驗證操作與檢索操作非同步地執行包括:在執行檢索操作之前、之後執行驗證操作,或二者並存執行。
在一些實施例中,可以使用設備、系統、方法或電腦可讀媒體或設備、系統、方法和電腦可讀媒體的任何組合來實現這些一般和特定實施例中的一個或多個。前述和其他描述的實施例可以各自可選地包括或不包括以下實施例中的一些或全部。
在一些實施例中,所述第一區塊鏈區塊集包括第一區塊鏈區塊和第二區塊鏈區塊,所述第一執行緒集包括第一執行緒和第二執行緒。使用所述橋接設備的所述第一執行緒集從所述區塊鏈網路節點檢索所述第一區塊鏈區塊集包括並行地:使用所述橋接設備的所述第一執行緒從所述區塊鏈網路節點檢索所述第一區塊鏈區塊,使用所述橋接設備的所述第二執行緒從所述區塊鏈網路節點檢索所述第二區塊鏈區塊。
在一些實施例中,所述第二區塊鏈區塊集包括第三區塊鏈區塊和第四區塊鏈區塊,所述第二執行緒集包括第三執行緒和第四執行緒。使用所述橋接設備的所述第二執行緒集來驗證儲存在所述橋接設備中的所述第二區塊鏈區塊集並行地包括:使用所述橋接設備的所述第三執行緒來驗證所述第三區塊鏈區塊,使用所述橋接設備的所述第四執行緒來驗證所述第四區塊鏈區塊。
在一些實施例中,所述方法還包括在所述橋接設備的資料儲存中維護遠端高度值和本地高度值。所述遠端高度值指示儲存在所述區塊鏈網路節點上的區塊鏈區塊的數量;並且所述本地高度值指示已經從所述區塊鏈網路節點獲得並儲存在所述橋接設備上的區塊鏈區塊的數量。使用所述橋接設備的所述第一執行緒集從所述區塊鏈網路節點檢索所述第一區塊鏈區塊集包括:所述橋接設備確定所述本地高度值是否小於所述遠端高度值;以及回應於確定所述本地高度值小於所述遠端高度值,從所述區塊鏈網路節點獲得未儲存在所述橋接設備上的至少一個區塊鏈區塊。
在一些實施例中,所述方法還包括:回應於從所述區塊鏈網路節點獲得所述至少一個區塊鏈區塊,將所述至少一個區塊鏈區塊儲存在所述橋接設備上;以及所述橋接設備更新所述本地高度值。
在一些實施例中,所述方法還包括:回應於確定所述本地高度值不小於所述遠端高度值,限制從所述區塊鏈網路節點獲得區塊鏈區塊。
在一些實施例中,所述方法還包括:所述橋接設備從所述區塊鏈網路節點接收通知,所述通知指示所述遠端高度值;所述橋接設備從用戶端設備接收交易請求,所述交易請求用於請求在區塊鏈網路上執行交易;所述橋接設備將所述交易請求發送至所述區塊鏈網路節點;以及所述橋接設備從所述區塊鏈網路節點接收第二通知,所述第二通知指示更新的遠端高度值,其中,所述更新的遠端高度值指示至少部分地基於所述交易儲存在所述區塊鏈網路節點上的區塊鏈區塊的數量的增加。
在一些實施例中,所述通知包括指示新區塊已經被添加到所述區塊鏈網路的區塊鏈中的新區塊通知,並且所述新區塊通知指示所述遠端高度值增加。
在一些實施例中,所述橋接設備從所述區塊鏈網路節點接收所述通知包括以下中的至少一個:接收所述區塊鏈網路節點推送至所述橋接設備的所述通知;或所述橋接設備從所述區塊鏈網路節點提取所述通知。
在一些實施例中,所述方法還包括:在所述橋接設備的資料儲存中維護本地高度值和校驗高度值。所述本地高度值指示已經從所述區塊鏈網路節點獲得並儲存在所述橋接設備上的區塊鏈區塊的數量;並且所述校驗高度值指示已經由所述橋接設備驗證的區塊鏈區塊的數量。使用所述橋接設備的所述第二執行緒集來驗證儲存在所述橋接設備中的所述第二區塊鏈區塊集包括:確定所述校驗高度值是否小於所述本地高度值;以及回應於確定所述校驗高度值小於所述本地高度值,驗證儲存在所述橋接設備中並且尚未由所述橋接設備驗證的區塊鏈區塊。
在一些實施例中,驗證儲存在所述橋接設備中並且尚未由所述橋接設備驗證的所述區塊鏈區塊包括:確定所述區塊鏈區塊中的一個或多個區塊鏈交易與交易請求之間的一致性。
在一些實施例中,所述方法還包括:回應於驗證了儲存在所述橋接設備上並且尚未由所述橋接設備驗證的所述區塊鏈區塊,確定所述區塊鏈區塊是可信的;以及所述橋接設備更新所述校驗高度值。
在一些實施例中,所述方法還包括:回應於確定所述校驗高度值不小於所述本地高度值,限制驗證儲存在所述橋接設備中的區塊鏈區塊。
在一些實施例中,所述方法還包括:所述橋接設備檢測包括所述橋接設備和所述區塊鏈網路節點的系統中的系統錯誤;以及回應於檢測到所述系統錯誤,基於所述校驗高度值執行恢復處理。執行所述恢復處理包括:將所述本地高度值設置為等於所述校驗高度值;以及回應於確定所述本地高度值小於指示儲存在所述區塊鏈網路節點上的區塊鏈區塊的數量的遠端高度值,從所述區塊鏈網路節點獲得未儲存在所述橋接設備上的至少一個區塊鏈區塊。
應當理解的是,根據本文的方法可包括本文描述的實施例和特徵的任何組合。也就是說,根據本文的方法不限於本文具體描述的實施例和特徵的組合,還包括所提供的實施例和特徵的任何組合。
在附圖和以下描述中闡述了本文的一個或多個實施例的細節。根據說明書和附圖以及申請專利範圍,本文的其他特徵和優點將顯現。
本文描述了用於非同步處理區塊鏈區塊以例如實現基於區塊鏈的容錯系統的技術。這些技術通常涉及使用橋接設備連接區塊鏈系統和第三方系統,例如,以實現協調處理和控制功能。
本文中描述的技術產生若干技術效果。在一些實施例中,橋接設備被通信地連結到(例如,通過一個或多個有線或無線通道)用戶端設備和區塊鏈網路中的區塊鏈網路節點。在一些實施例中,橋接設備可以說明用戶端設備從區塊鏈網路節點檢索區塊鏈區塊。這樣,用戶端設備可以在本機存放區、驗證以及以其他方式處理檢索到的區塊鏈區塊,並與儲存在區塊鏈網路的區塊鏈中的區塊鏈區塊同步。
在一些實施例中,橋接設備可以提供提高的輸送量和處理效率,同時實現用戶端設備、橋接設備和區塊鏈網路的協調處理。例如,橋接設備可以被設計為使得能夠利用非同步處理來執行橋接設備的功能,所述功能例如為橋接用戶端設備和區塊鏈網路之間的通信,從區塊鏈網路獲得區塊鏈區塊,以及驗證橋接設備獲得的區塊鏈區塊等。例如,橋接設備可以通過引入和維護與由系統處理的區塊鏈區塊相關聯的游標值(cursor value)來減少驗證操作和檢索操作之間的處理依賴性。結果,橋接設備可以解耦這些操作並非同步地執行這些操作,而不會有繼續等待檢索操作完成的延遲。
在一些實施例中,橋接設備可以利用多執行緒處理能力來使用不同的執行緒非同步地執行其功能。使用橋接設備的一個或多個獨立執行緒非同步地執行橋接設備的功能可以提高橋接設備的處理速度和靈活性,並提高用戶端設備與區塊鏈網路節點之間的通信輸送量,同時維護與區塊相關的處理的有序執行,以增強由橋接設備儲存並在用戶端設備和區塊鏈網路節點之間通信的資料的資料安全性和可信度。
在一些實施例中,橋接設備通過減輕由於系統故障或錯誤引起的基於區塊鏈的容錯系統中的異常影響,可以為整個系統提供容錯性。在一些情況下,由於系統故障或錯誤(例如,區塊鏈系統的設備之間的通信連接可能丟失),儲存在區塊鏈系統(例如用戶端設備和橋接設備)中的區塊鏈資料(例如,區塊鏈區塊)容易出錯或丟失。橋接設備可以通過根據與由系統處理的區塊鏈區塊相關聯的游標值執行其功能,說明按順序恢復區塊鏈區塊。因此,橋接設備可以提供容錯性,以確保由橋接設備儲存並在用戶端設備與區塊鏈網路節點之間通信的區塊鏈區塊的可信度。
為本文的實施例提供進一步的背景,如上所述,分散式帳本系統(DLS),其也可以稱為共識網路(例如,由點對點節點組成)和區塊鏈網路,使參與的實體能夠安全地且不可篡改地進行交易和儲存資料。儘管術語“區塊鏈”通常與特定網路和/或用例相關聯,但是在不參考任何特定用例的情況下,本文使用“區塊鏈”來一般地指代DLS。
區塊鏈是以交易不可篡改的方式儲存交易的資料結構。因此,區塊鏈上記錄的交易是可靠且可信的。區塊鏈包括一個或多個區塊。鏈中的每個區塊通過包含在鏈中緊鄰其之前的前一區塊的加密雜湊值(cryptographic hash)連結到該前一區塊。每個區塊還包括時間戳記、自身的加密雜湊值以及一個或多個交易。已經被區塊鏈網路中的節點驗證的交易經雜湊處理並編入默克爾(Merkle)樹中。Merkle樹是一種資料結構,在該樹的葉節點處的資料是經雜湊處理的,並且在該樹的每個分支中的所有雜湊值在該分支的根處被串接(concatenated)。此過程沿著樹持續一直到整個樹的根,在整個樹的根處儲存了代表樹中所有資料的雜湊值。可通過確定雜湊值是否與樹的結構一致而可快速驗證該雜湊值是否為儲存在該樹中的交易的雜湊值。
區塊鏈是用於儲存交易的去中心化或至少部分去中心化的資料結構,而區塊鏈網路是通過廣播、驗證和確認交易等來管理、更新和維護一個或多個區塊鏈的計算節點的網路。如上所述,區塊鏈網路可作為公有區塊鏈網路、私有區塊鏈網路或聯盟區塊鏈網路被提供。本文參考聯盟區塊鏈網路更詳細地描述了本文的實施例。然而,可以預期,本文的實施例可以在任何適當類型的區塊鏈網路中實現。
通常,聯盟區塊鏈網路在參與實體間是私有的。在聯盟區塊鏈網路中,共識處理由可被稱為共識節點的授權的節點集控制,一個或多個共識節點由相應的實體(例如,金融機構、保險公司)操作。例如,由10個實體(例如,金融機構、保險公司)組成的聯盟可以操作聯盟區塊鏈網路,每個實體操作聯盟區塊鏈網路中的至少一個節點。
在一些示例中,在聯盟區塊鏈網路內,全域區塊鏈被提供為跨所有節點複製的區塊鏈。也就是說,對於全域區塊鏈,所有共識節點處於完全共識狀態。為了實現共識(例如,同意將區塊添加到區塊鏈),在聯盟區塊鏈網路內實現共識協定。例如,聯盟區塊鏈網路可以實現實用拜占庭容錯(PBFT)共識,下面將進一步詳細描述。
圖1是示出了可用於執行本文實施例的環境100的示例的示圖。在一些示例中,環境100使得實體能夠參與至聯盟區塊鏈網路102中。環境100包括計算系統106、108和網路110。在一些示例中,網路120包括局域網(LAN)、廣域網路(WAN)、網際網路或其組合,並且連接網站、使用者設備(例如,計算設備)和後端系統。在一些示例中,可以通過有線和/或無線通訊鏈路訪問網路120。在一些示例中,網路110使得能夠與聯盟區塊鏈網路102通信或在聯盟區塊鏈網路102內通信。通常,網路110表示一個或多個通信網路。在一些情況下,計算系統106、108可以是雲計算系統(未示出)的節點,或者每個計算系統106、108可以是單獨的雲計算系統,其包括通過網路互連的並且用作分散式處理系統的多個電腦。
在所描繪的示例中,計算設備106、108可以各自包括能夠作為節點參與至聯盟區塊鏈網路102中的任何適當的計算設備120。示例計算設備包括但不限於伺服器、桌上型電腦、筆記型電腦、平板計算設備以及智慧型手機。在一些示例中,計算設備106、108承載一個或多個由電腦實施的服務,用於與聯盟區塊鏈網路102進行交互。例如,計算系統106可以承載第一實體(例如,使用者A)的電腦實施的、例如交易管理系統的服務,例如第一實體使用該交易管理系統管理其與一個或多個其他實體(例如,其他使用者)的交易。計算系統108可以承載第二實體(例如,使用者B)的由電腦實施的、例如交易管理系統的服務,例如,第二實體使用該交易管理系統管理其與一個或多個其他實體(例如,其他使用者)的交易。在圖1的示例中,聯盟區塊鏈網路102被表示為節點的點對點網路(Peer-to-Peer network),並且計算系統106、108分別提供參與聯盟區塊鏈網路102的第一實體和第二實體的節點。
圖2是示出根據本文的實施例的架構200的示例的示圖。示例性概念架構200包括分別對應於參與者A、參與者B和參與者C的參與者系統202、204、206。每個參與者(例如,用戶、企業)參與到作為點對點網路提供的區塊鏈網路212中,該點對點網路包括多個節點214,至少一些節點將資訊不可篡改地記錄在區塊鏈216中。如圖中進一步詳述,儘管在區塊鏈網路212中示意性地描述了單個區塊鏈216,但是在區塊鏈網路212上提供並維護了區塊鏈216的多個副本。
在所描繪的示例中,每個參與者系統202、204、206分別由參與者A、參與者B和參與者C提供或代表參與者A、參與者B和參與者C,並且在區塊鏈網路中作為各自的節點214發揮作用。如這裡所使用的,節點通常是指連接到區塊鏈網路212且使相應的參與者能夠參與到區塊鏈網路中的個體系統(例如,電腦、伺服器)。在圖2的示例中,參與者對應於每個節點214。然而,可以預期,一個參與者可以操作區塊鏈網路212內的多個節點214,和/或多個參與者可以共用一個節點214。在一些示例中,參與者系統202、204、206使用協定(例如,超文字傳輸安全協定(HTTPS))和/或使用遠端程序呼叫(RPC)與區塊鏈網路212通信或通過區塊鏈網路212進行通信。
節點214可以在區塊鏈網路212內具有不同的參與程度。例如,一些節點214可以參與共識處理(例如,作為將區塊添加到區塊鏈216的礦工節點),而其他節點214不參與此共識處理。作為另一示例,一些節點214儲存區塊鏈216的完整的副本,而其他節點214僅儲存區塊鏈216的一部分的副本。例如,資料訪問特權可以限制相應的參與者在其相應系統記憶體儲的區塊鏈資料。在圖2的示例中,參與者系統202、204、206儲存區塊鏈216的相應的完整副本216’、216”和216”’。
區塊鏈(例如,圖2的區塊鏈216)由一系列區塊組成,每個區塊儲存資料。資料的示例包括表示兩個或更多個參與者之間的交易的交易資料。儘管本文通過非限制性示例使用了“交易”,但是可以預期,任何適當的資料可以儲存在區塊鏈中(例如,文檔、圖像、視頻、音訊)。交易的示例可以包括但不限於交換有價值的東西(例如,資產、產品、服務、貨幣)。交易資料不可篡改地儲存在區塊鏈中。也就是說,交易資料不能改變。
在將交易資料儲存在區塊中之前,對交易資料進行雜湊處理。雜湊處理是將交易資料(作為字串資料提供)轉換為固定長度的雜湊值(也作為字串資料提供)的處理。不可能對雜湊值進行去雜湊處理(un-hash)以獲取交易資料。雜湊處理可確保即使交易資料輕微改變也會導致完全不同的雜湊值。此外,如上所述,雜湊值具有固定長度。也就是說,無論交易資料的大小如何,雜湊值的長度都是固定的。雜湊處理包括通過雜湊函數處理交易資料以生成雜湊值。示例性雜湊函數包括但不限於輸出256位雜湊值的安全雜湊演算法(SHA)-256。
多個交易的交易資料被雜湊處理並儲存在區塊中。例如,提供兩個交易的雜湊值,並對它們本身進行雜湊處理以提供另一個雜湊值。重複此過程,直到針對所有要儲存在區塊中的交易提供單個雜湊值為止。該雜湊值被稱為Merkle根雜湊值,並儲存在區塊的頭中。任何交易中的更改都會導致其雜湊值發生變化,並最終導致Merkle根雜湊值發生變化。
通過共識協議將區塊添加到區塊鏈。區塊鏈網路中的多個節點參與共識協議,並執行將區塊添加到區塊鏈中的工作。這樣的節點被稱為共識節點。上文介紹的PBFT用作共識協議的非限制性示例。共識節點執行共識協定以將交易添加到區塊鏈,並更新區塊鏈網路的整體狀態。
更詳細地,共識節點生成區塊頭,對區塊中的所有交易進行雜湊處理,並將所得的雜湊值成對地組合以生成進一步的雜湊值,直到為區塊中的所有交易提供單個雜湊值(Merkle根雜湊值)。將此雜湊值添加到區塊頭中。共識節點還確定區塊鏈中最新的區塊(即添加到區塊鏈中的最後一個區塊)的雜湊值。共識節點還向區塊頭添加亂數(nonce)值和時間戳記。
通常,PBFT提供容忍拜占庭錯誤(例如,故障節點、惡意節點)的實用拜占庭機器狀態複製。這通過假設將發生故障(例如,假設存在獨立節點故障和/或由共識節點發送的經操縱的消息)在PBFT中實現。在PBFT中,在包括主共識節點和備共識節點的序列中提供共識節點。主共識節點週期性地改變,通過區塊鏈網路內的所有共識節點就區塊鏈網路的全域狀態達成一致,將交易添加到區塊鏈中。在該處理中,消息在共識節點之間傳輸,並且每個共識節點證明消息是從指定的對等節點接收的,並驗證在交易期間消息未篡改。
在PBFT中,共識協議是在所有共識節點始於相同的狀態的情況下分多個階段提供的。首先,用戶端向主共識節點發送請求以調用服務操作(例如,在區塊鏈網路內執行交易)。回應於接收到該請求,主共識節點將該請求組播到備共識節點。備份共識節點執行請求,並且每個節點都向用戶端發送回復。用戶端等待直到收到閾值數量的恢復。在一些示例中,用戶端等待接收f+1個回復,其中f是區塊鏈網路內可以容忍的錯誤共識節點的最大數量。最終結果是,足夠數量的共識節點就將記錄添加到區塊鏈的順序達成一致,該記錄被接受或者被拒絕。
在一些區塊鏈網路中,用密碼學來維護交易的隱私。例如,如果兩個節點想要保持交易隱私,以使得區塊鏈網路中的其他節點不能看出交易的細節,則這兩個節點可以對交易資料進行加密處理。加密處理的示例包括(但不限於)對稱加密和非對稱加密。對稱加密是指使用單個金鑰既進行加密(從明文生成密文)又進行解密(從密文生成明文)的加密過程。在對稱加密中,同一金鑰可用於多個節點,因此每個節點都可以對交易資料進行加密/解密。
非對稱加密使用金鑰對,每個金鑰對包括私密金鑰和公開金鑰,私密金鑰僅對於相應節點是已知的,而公開金鑰對於區塊鏈網路中的任何或所有其他節點是已知的。節點可以使用另一個節點的公開金鑰來加密資料,並且該加密的資料可以使用其他節點的私密金鑰被解密。例如,再次參考圖2,參與者A可以使用參與者B的公開金鑰來加密資料,並將加密資料發送給參與者B。參與者B可以使用其私密金鑰來解密該加密資料(密文)並提取原始資料(明文)。使用節點的公開金鑰加密的消息只能使用該節點的私密金鑰解密。
非對稱加密用於提供數位簽章,這使得交易中的參與者能夠確認交易中的其他參與者以及交易的有效性。例如,節點可以對消息進行數位簽章,而另一個節點可以根據參與者A的該數位簽章來確認該消息是由該節點發送的。數位簽章也可以用於確保消息在傳輸過程中不被篡改。例如,再次參考圖2,參與者A將向參與者B發送消息。參與者A生成該消息的雜湊值,然後使用其私密金鑰加密該雜湊值以提供作為加密雜湊值的數位簽章。參與者A將該數位簽章附加到該消息上,並將該具有數位簽章的消息發送給參與者B。參與者B使用參與者A的公開金鑰解密該數位簽章,並提取雜湊值。參與者B對該消息進行雜湊處理並比較雜湊值。如果雜湊值相同,參與者B可以確認該消息確實來自參與者A,且未被篡改。
圖3是示出根據本文實施例的系統300的示例的示圖。系統300實現了基於區塊鏈的容錯系統。如圖所示,系統300包括用戶端設備302、橋接設備304a-b和區塊鏈網路節點306。
用戶端設備302可以包括例如被程式設計以執行本文所述方法的任何合適的電腦、模組、伺服器或計算元件。在一些實施例中,用戶端設備302可以是包括允許個人通過電腦網路進行電子交易的電子設備或線上服務的數位錢包設備或系統。例如,個人的銀行帳戶可以連結到數位錢包設備。其他身份資訊,例如駕照、醫療卡和加密金鑰,也可以儲存在數位錢包設備上。
在一些實施例中,用戶端設備302可以包括允許橋接設備(例如,橋接設備304a)與用戶端設備302通信的介面。在一些實施例中,用戶端設備302的介面可以是可以由用戶端設備302實現和/或擴展並且可以允許橋接設備(例如,橋接設備304a)向用戶端設備302發送資料的服務提供者介面(SPI)。在一些實施例中,SPI可以包括橋接設備定義的一組公共介面和抽象類別。在一些實施例中,SPI可以指定用戶端設備302為了實現目標需要遵循的標準或協定。在一些實施例中,用戶端設備302可以向橋接設備發送交易請求(例如,資金轉移的請求),並且經由用戶端設備302的SPI從橋接設備接收請求結果。
橋接設備304a-b可以包括例如被程式設計以執行本文所述方法的任何合適的電腦、模組、伺服器或計算元件。通常,橋接設備304a-b提供橋接功能以實現第三方系統(例如,用戶端設備302)和區塊鏈系統(例如,區塊鏈網路節點306)之間的通信。在一些示例中,橋接設備304a-b可以是代理伺服器,其充當用於處理來自用戶端設備302的從區塊鏈網路節點306尋求資源(例如,區塊鏈資料)的請求的仲介。如圖所示,橋接設備304a被通信地連結(例如,通過一個或多個有線或無線通道)到用戶端設備302和區塊鏈網路節點306。在一些實施例中,橋接設備可以被實現為用戶端設備302的元件或模組。
在一些實施例中,橋接設備(例如,橋接設備304a)可以包括允許用戶端設備302與橋接設備通信並進一步訪問區塊鏈網路的介面。在一些實施例中,橋接設備304a的介面可以包括暴露於用戶端設備302並且可以被用戶端設備302用來與橋接設備304a通信並經由區塊鏈網路節點306進一步訪問區塊鏈網路的應用程式設計介面(API)。橋接設備的API可以包括用戶端設備302可以訪問的子常式集、通信協定和方法。在一些實施例中,橋接設備(例如,橋接設備304a)可以經由橋接設備的API從用戶端設備302接收交易請求,並且經由用戶端設備302的SPI向用戶端設備302提供請求回應。
在一些實施例中,系統300包括多個橋接設備304a-b,並且橋接設備304a-b可以通過遵循預定的通信協議來彼此通信。在一些實施例中,每個橋接設備304a-b可以通信地連結到相應的區塊鏈網路節點。如圖所示,橋接設備304a通信地連結到區塊鏈網路節點306。
在一些實施例中,區塊鏈網路節點306可以是區塊鏈網路的共識節點或非共識節點。在一些實施例中,橋接設備304b可以連結到區塊鏈網路的另一區塊鏈網路節點(未示出)。在一些實施例中,每個橋接設備304a-b可以將來自用戶端設備302的交易請求轉換成區塊鏈交易,並且將區塊鏈交易提交給通信地連結的區塊鏈網路節點。例如,橋接設備(例如,橋接設備304a)可以對要在區塊鏈網路節點306上執行的智慧合約進行合約調用,以基於來自用戶端設備302的交易請求來生成區塊鏈交易。
在一些實施例中,每個橋接設備304a-b可以從連結的區塊鏈網路節點檢索區塊鏈區塊。在一些實施例中,橋接設備(例如,橋接設備304a)可以接收由區塊鏈網路節點(例如,區塊鏈網路節點306)推送到橋接設備的區塊鏈區塊。例如,區塊鏈網路節點306可以基於橋接設備304a的訂閱來週期性地將區塊鏈區塊推送到橋接設備304a。在一些實施例中,橋接設備(例如,橋接設備304a)可以例如根據需要從區塊鏈網路節點(例如,區塊鏈網路節點306)提取區塊鏈區塊。例如,橋接設備304a可以週期性地或不時地向區塊鏈網路節點306請求區塊鏈區塊。
在一些實施例中,橋接設備304a-b可以驗證從區塊鏈網路節點檢索到的區塊鏈區塊,以確定區塊鏈區塊是否可信。在一些實施例中,橋接設備可以通過將記錄在區塊鏈區塊中的交易資料與包括在由用戶端設備發送給橋接設備的交易請求中的資料進行比較來驗證區塊鏈區塊。在一些實施例中,橋接設備可以基於區塊鏈區塊中的區塊鏈交易的雜湊值來驗證區塊鏈區塊。例如,區塊鏈區塊可以包括區塊鏈交易和區塊鏈交易的第一雜湊值。橋接設備可以從區塊鏈區塊獲得區塊鏈交易,並計算該區塊鏈交易的第二雜湊值。橋接設備可以將第二雜湊值與第一雜湊值進行比較。如果確定兩個雜湊值匹配,則橋接設備可以確定區塊鏈區塊中的區塊鏈交易未被篡改,並且區塊鏈區塊是可信區塊。
在一些實施例中,橋接設備可以維護與由系統處理的區塊鏈區塊相關聯的三個游標值。在一些實施例中,這些游標值被實現為三個計數器,並且被儲存在橋接設備的資料儲存(例如,記憶體)中。在一些實施例中,三個游標值包括指示儲存在區塊鏈網路節點(例如,區塊鏈網路節點306)上的區塊鏈區塊的數量的第一值、指示儲存在橋接設備(例如,橋接設備304a)上的區塊鏈區塊的數量的第二值,以及指示已經由橋接設備驗證的區塊鏈區塊的數量的第三值。
圖4是示出根據本文實施例的儲存在圖3的基於區塊鏈的容錯系統中的游標值的示例的示圖400。如圖所示,橋接設備(例如,橋接設備304a)可以維護指示儲存在通信地連結的區塊鏈網路節點上的區塊鏈區塊(例如,區塊鏈區塊408a-d)的數量的遠端高度值402、指示儲存在橋接設備上的區塊鏈區塊(例如,區塊鏈區塊408a-c)的數量的本地高度值,以及指示已經由橋接設備驗證的區塊鏈區塊(例如,區塊鏈區塊408a)的數量的校驗高度值406。
在一些實施例中,橋接設備可以從區塊鏈網路節點接收指示遠端高度值402的通知。在一些實施例中,通知可以包括指示儲存在區塊鏈網路節點上的區塊鏈區塊的總數的遠程高度值402。在一些實施例中,該通知可以包括指示新區塊已經被添加到區塊鏈網路節點的區塊鏈中的新區塊通知。例如,新區塊通知可以指示遠端高度值402已經增加1。
在一些實施例中,橋接設備可以確定本地高度值404是否小於遠端高度值402。在一些實施例中,如果確定本地高度值404小於遠端高度值402,則橋接設備可以從區塊鏈網路節點檢索區塊鏈區塊。在一些實施例中,橋接設備可以從區塊鏈網路節點檢索尚未儲存在橋接設備304a上的一個或多個區塊鏈區塊。例如,參考圖4,橋接設備可以確定區塊鏈區塊408a-c被儲存在橋接設備上並且本地高度值404比遠端高度值402小1。回應於該確定,橋接設備可以從區塊鏈網路節點檢索區塊鏈區塊408d。在一些實施例中,橋接設備可以例如以如前所述的提取或推送模式(pull or push mode)從區塊鏈網路節點檢索區塊鏈區塊。在一些實施例中,在從區塊鏈網路節點檢索到區塊鏈區塊之後,橋接設備可更新本地高度值404。例如,如果橋接設備從區塊鏈網路節點獲得一個區塊鏈區塊,則橋接設備可以通過將本地高度值404增加1來更新本地高度值404。在一些實施例中,橋接設備可以繼續從區塊鏈網路節點檢索區塊鏈區塊並更新本地高度值404,直到本地高度值404等於遠端高度值402為止。
在一些實施例中,如果確定本地高度值404不小於遠端高度值402,則橋接設備可以停止或限制從區塊鏈網路節點檢索區塊鏈區塊。例如,如果本地高度值404等於遠端高度值402,則橋接設備可以限制從區塊鏈網路節點檢索區塊鏈區塊。
在一些實施例中,橋接設備可以確定校驗高度值406是否小於本地高度值404。如果確定校驗高度值406小於本地高度值404,則橋接設備可以驗證儲存在橋接設備上並且尚未由橋接設備驗證的區塊鏈區塊。例如,參考圖4,橋接設備可以確定區塊鏈區塊408a已經被驗證並且校驗高度值406比本地高度值404小2。回應於該確定,橋接設備可以繼續驗證區塊鏈區塊408b-c。
在一些實施例中,橋接設備驗證區塊鏈區塊以確定區塊鏈區塊是否可信。在一些實施例中,橋接設備通過將記錄在區塊鏈區塊中的交易資料與包括在由用戶端發送給橋接設備的交易請求中的資料進行比較來驗證區塊鏈區塊。例如,用戶端設備(例如,圖3的用戶端設備302)可以將交易請求發送到橋接設備(例如,圖3的橋接設備304a),其中交易請求識別從一個帳戶到另一帳戶的特定金額的資金轉移。橋接設備可以識別儲存在橋接設備上並且包括與資金轉移相關的區塊鏈交易的區塊鏈區塊。橋接設備可以將區塊鏈區塊中與資金轉移相關的區塊鏈交易與交易請求中包括的資料進行比較。橋接設備可以確定與區塊鏈交易中的資金轉移金額和帳戶資訊有關的資料是否與交易請求中的資料匹配。如果確定存在資料匹配,則橋接設備可以確定被驗證的區塊鏈區塊是可信區塊。
在一些實施例中,橋接設備可以基於區塊鏈區塊中的區塊鏈交易的雜湊值來驗證區塊鏈區塊。例如,區塊鏈區塊可以記錄區塊鏈交易和該區塊鏈交易的第一雜湊值。橋接設備可以獲得區塊鏈交易並計算區塊鏈交易的第二雜湊值。橋接設備可以將第二雜湊值與第一雜湊值進行比較。如果確定兩個雜湊值匹配,則橋接設備可以確定區塊鏈區塊中的區塊鏈交易未被篡改,並且區塊鏈區塊是可信區塊。
在一些實施例中,在驗證區塊鏈區塊之後,橋接設備可以更新校驗高度值406。例如,在橋接設備驗證區塊鏈區塊408b是可信區塊之後,橋接設備可以將校驗高度值406增加1。在一些實施例中,橋接設備可以繼續驗證儲存在橋接設備上的區塊鏈區塊,並更新校驗高度值406,直到校驗高度值406等於本地高度值404為止。
在一些實施例中,如果確定校驗高度值406不小於本地高度值404,則橋接設備可以停止或限制驗證區塊鏈區塊。例如,如果校驗高度值406等於本地高度值404,則橋接設備可以限制驗證儲存在橋接設備上的區塊鏈區塊。
在一些實施例中,可能發生系統報錯、異常、故障或錯誤。例如,橋接設備和區塊鏈網路節點之間的通信連接可能會丟失。在一些示例中,儲存在橋接設備上的區塊鏈區塊可能會因系統故障或錯誤而丟失。在一些實施例中,回應於檢測到系統故障或錯誤,橋接設備可以執行恢復處理。在一些實施例中,橋接設備可以基於校驗高度值406執行恢復處理。例如,橋接設備可以將本地高度值404設置為校驗高度值406。因為校驗高度值406指示已經由橋接設備驗證的區塊鏈區塊的總數量,所以即使這些區塊鏈區塊丟失,也不一定需要由橋接設備重新獲得。然而,在校驗高度值406之後編號並且在本地高度值404之前編號的任何區塊鏈區塊已經被獲得但尚未被驗證。這些區塊鏈區塊容易出現錯誤或丟失,例如由於系統故障或錯誤。因此,本地高度值404被設置(或減小)為校驗高度值406,以便橋接設備從區塊鏈網路節點重新獲得未驗證的區塊鏈區塊以進行驗證。例如,在將本地高度值404設置為校驗高度值406之後,橋接設備可以將本地高度值404與遠端高度值402進行比較,並確定本地高度值404是否小於遠端高度值402。如果確定本地高度值404小於遠端高度值402,則橋接設備可以從區塊鏈網路節點重新獲得未驗證的區塊鏈區塊。
在一些實施例中,橋接設備可以執行非同步處理以提高整個系統的效率和輸送量。非同步處理是執行兩個或更多個操作而不在這兩個或更多個操作之間施加處理依賴性或時間順序的方式。在非同步處理中,可以在運行的任務完成之前允許待處理任務開始。換句話說,當兩個操作非同步執行時,一個操作的執行不會阻塞或暫停另一操作的執行。一個操作可以開始,而無需等待其他操作完成,並且兩個操作可以同時執行。因此,當兩個操作被非同步處理時,對何時開始執行一個操作的確定獨立於(即不依賴於)另一操作的當前執行狀態。
在一些實施例中,非同步處理使各種工作流處理能夠同時運行。例如,在非同步處理中,諸如請求和回復之類的操作是在不同的會話上發送的。在請求和回復之間不存在任何處理依賴性,並且不對回復的時間進行任何假設。與阻塞或暫停處理直到操作完成的同步操作不同,非同步作業是非阻塞的並且在不阻塞或暫停處理的情況下發起操作。與在運行任務完成之後發起待處理任務的同步處理相比,在非同步處理中,可以允許在運行任務完成之前發起待處理任務。
在一些實施例中,橋接設備可以在從區塊鏈網路節點檢索區塊鏈區塊以及驗證儲存在橋接設備中的區塊鏈區塊時執行非同步處理。在一些實施例中,通過引入和監視三個游標值來調節或以其他方式控制橋接設備的處理,驗證操作可以與檢索操作非同步執行,從而使橋接設備無需等待檢索操作完成。例如,只要滿足游標值的相應條件,就可以相對於檢索操作相對獨立地執行驗證操作。例如,如果校驗高度值小於本地高度值,則可以執行驗證操作,如果本地高度值小於遠端高度值,則可以執行檢索操作。通過去除兩個操作之間的處理依賴性,橋接設備可以將兩個操作解耦,並以提高的效率執行兩個操作,從而提高系統輸送量。
在一些實施例中,橋接設備可以利用多執行緒處理能力來使用一個或多個獨立執行緒執行橋接設備的功能。執行緒通常是包括處理器執行指令流所需的資訊的執行上下文(execution context)。例如,執行緒可以包括程式設計的指令序列,並且被設計為由處理器獨立於父進程來調度和執行。在允許多個執行緒存在於一個進程的上下文中的同時,多執行緒還可以允許執行緒共用進程的資源並獨立執行。例如,多個執行緒可以存在於一個進程中、併發執行並且共用例如記憶體的資源。進程的執行緒在任何給定時間共用其可執行代碼以及其動態分配的變數和非執行緒本地全域變數的值。多執行緒是實現非同步處理和並存執行的示例性方式。
在一些實施例中,橋接設備可以使用不同的執行緒集來執行非同步作業和並存執行,以分別執行對區塊鏈區塊的檢索和驗證,這可以提高整個系統的效率和輸送量。作為實施方式的示例,橋接設備可以使用橋接設備的第一執行緒集從區塊鏈網路節點檢索第一區塊鏈區塊集。第一執行緒集可以包括多個執行緒,每個執行緒可以用於從區塊鏈網路節點獨立地檢索第一區塊鏈區塊集中的一個區塊鏈區塊。橋接設備可以使用橋接設備的第二執行緒集來驗證儲存在橋接設備中的第二區塊鏈區塊集。第二執行緒集可以包括多個執行緒,每個執行緒可用於獨立地驗證儲存在橋接設備中的第二區塊鏈區塊集中的一個區塊鏈區塊。
作為另一示例,橋接設備可以使用第一執行緒來橋接用戶端設備和區塊鏈網路之間的通信。作為具體示例,橋接設備(例如,圖3的橋接設備304a)可以使用第一執行緒來從用戶端設備(例如,圖3的用戶端設備302)接收交易請求,將交易請求提交給區塊鏈網路節點(例如,圖3的區塊鏈網路節點306),並從可能執行交易的區塊鏈網路節點接收執行結果的通知。在一些實施例中,橋接設備可以使用第二執行緒來從區塊鏈網路獲得一個或多個區塊鏈區塊。在一些實施例中,橋接設備可以使用第三執行緒驗證橋接設備所獲得的區塊鏈區塊。在一些實施例中,橋接設備可以使用附加或不同的執行緒,並將不同的任務分配給多個執行緒。在一些實施例中,一個或多個獨立執行緒可以由橋接設備的一個或多個處理器獨立地或並行地執行。
在一些實施例中,一個或多個獨立執行緒可以訪問和/或更新三個游標值來調節或以其他方式控制橋接設備的處理以及用戶端設備與區塊鏈網路之間的通信。在一些實施例中,一些執行緒可以被授權訪問三個游標值中的每個但不能更新三個游標值中的每個。
例如,在一些實施例中,例如基於從區塊鏈網路節點接收到的通知(例如,新區塊通知),第一執行緒可以用於更新遠端高度值402。其他執行緒可以被授權訪問遠端高度值402但不能更新遠端高度值402。例如,在從區塊鏈網路獲得一個或多個區塊鏈區塊之前,第二執行緒可以獲得遠端高度值402,將本地高度值404與遠端高度值402進行比較,並確定本地高度值404是否小於遠端高度值402。如果本地高度值404小於遠端高度值402,則第二執行緒可以從區塊鏈網路獲得一個或多個區塊鏈區塊。在一些實施例中,第二執行緒可用於更新本地高度值404,而其他執行緒可被授權訪問本地高度值404但不能更新本地高度值404。例如,在一些實施例中,驗證橋接設備所獲得的區塊鏈區塊之前,橋接設備可以使用第三執行緒來訪問本地高度值404,將校驗高度值406與本地高度值404進行比較,並且確定校驗高度值406是否小於本地高度值404。如果校驗高度值406小於本地高度值404,則第三執行緒將繼續驗證橋接設備所獲得的區塊鏈區塊。在一些實施例中,第三執行緒可以用於更新校驗高度值406,而其他執行緒可以被授權訪問校驗高度值406但不能更新校驗高度值406。
圖5是示出可根據本文實施例執行的處理500的示例的信號流。信號流表示用於區塊鏈區塊的非同步處理的處理500,其可以用於例如實現基於區塊鏈的容錯系統。為方便起見,該處理將被描述為由位於一個或多個位置並根據本文被適當地程式設計的一個或多個電腦的系統執行。例如,被適當程式設計的區塊鏈資料處理系統(例如,圖3的系統300)可以執行該處理。
在510,橋接設備504(例如,圖3的橋接設備304a)在橋接設備504的資料儲存(例如,記憶體)中維護三個游標值。例如,橋接設備504可以將三個游標值維護為三個計數器。在一些實施例中,維護三個游標值可以包括儲存和更新三個游標值。在一些實施例中,三個游標值可以包括指示儲存在區塊鏈網路節點506(例如,圖3的區塊鏈網路節點306)上的區塊鏈區塊的數量的遠端高度值(例如,圖4的遠端高度值402),指示儲存在橋接設備504上的區塊鏈區塊的數量的本地高度值(例如,圖4的本地高度值404)以及指示已經由橋接設備504驗證的區塊鏈區塊的數量的校驗高度值(例如,圖4的校驗高度值406)。
在512,用戶端設備502(例如,圖3的用戶端設備302)向橋接設備504發送交易請求。例如,用戶端設備502可以使用橋接設備504的API將資金轉移請求發送到橋接設備504。資金轉移請求可以識別將從第一帳戶(例如,與用戶端設備502相關聯的區塊鏈帳戶)轉移到第二帳戶(例如,與另一用戶端設備相關聯的區塊鏈帳戶)的資金金額。
在514,橋接設備504將交易請求轉發到區塊鏈網路節點506。例如,橋接設備504可以對執行於區塊鏈網路節點506上的智慧合約進行合約調用,以將交易請求作為區塊鏈交易提交給區塊鏈網路節點506。在一些實施例中,橋接設備504可以確定用戶端設備502是否被授權訪問區塊鏈網路節點506。例如,橋接設備504可以使用公開金鑰來驗證交易請求中包括的用戶端設備502的數位簽章。
在516,在從橋接設備504接收到區塊鏈交易之後,區塊鏈網路節點506可以基於區塊鏈交易生成新的區塊鏈區塊。例如,區塊鏈網路節點506可以在區塊鏈網路的多個共識節點之間發起關於區塊鏈交易的共識過程(例如,PBFT共識)。在一些實施例中,在確定共識節點之間達成共識和/或執行區塊鏈交易之後,可以生成新的區塊鏈區塊並將其添加到儲存在區塊鏈網路節點506上的區塊鏈中。
在518,區塊鏈網路節點506向橋接設備504發送通知。在一些實施例中,該通知可以指示遠端高度值,該遠端高度值指示已經儲存在區塊鏈網路節點506上的區塊鏈區塊的數量。例如,通知可以包括遠端高度值。作為另一示例,該通知可以包括新區塊通知,該新區塊通知指示新區塊已經被添加到區塊鏈網路節點506的區塊鏈中。
在一些實施例中,橋接設備504可以以推送或提取模式從區塊鏈網路節點506接收通知。例如,橋接設備504或用戶端設備502可以訂閱區塊鏈網路節點506的區塊鏈區塊,並且在新區塊被添加到區塊鏈網路節點506的區塊鏈中之後,區塊鏈網路節點506可以基於訂閱週期性地或者動態地將通知推送到橋接設備504。在一些實施例中,橋接設備504可以例如通過向區塊鏈網路節點發送針對通知的請求來從區塊鏈網路節點506提取區塊鏈的資訊。
在520,在從區塊鏈網路節點506接收到通知之後,橋接設備504將本地高度值與遠端高度值進行比較。在一些實施例中,如果通知包括遠端高度值,則橋接設備504可以更新儲存在橋接設備504的資料儲存中的遠端高度值。在一些實施例中,如果通知包括指示新區塊已經被添加到區塊鏈網路節點506的區塊鏈中的新區塊通知,則橋接設備504可以例如通過將遠端高度值增加1或其他單位來更新儲存的遠端高度值。
在一些實施例中,橋接設備504確定本地高度值是否小於遠端高度值。如果確定本地高度值小於遠端高度值,則橋接設備504可以從區塊鏈網路節點506檢索區塊鏈區塊。如果確定本地高度值不小於遠端高度值,則橋接設備504可以限制從區塊鏈網路節點506檢索區塊鏈區塊。
在522,在確定本地高度值小於遠端高度值之後,橋接設備504從區塊鏈網路節點506檢索一個或多個區塊鏈區塊。在一些實施例中,橋接設備504可以從區塊鏈網路節點506檢索尚未儲存在橋接設備504上的一個或多個區塊鏈區塊。例如,橋接設備504可以從區塊鏈網路節點506檢索一個或多個區塊鏈區塊,其中,一個或多個區塊鏈區塊是儲存在區塊鏈網路節點506上並且位於已經由橋接設備504獲得的最新區塊鏈區塊之後的區塊。例如,一個或多個區塊鏈區塊是位於由本地高度值指示的數量的區塊鏈區塊中的最新區塊鏈區塊之後的區塊。在一些實施例中,橋接設備504可以以推送或提取模式從區塊鏈網路節點檢索區塊鏈區塊。在一些實施例中,在從區塊鏈網路節點506檢索到區塊鏈區塊之後,橋接設備504可以更新本地高度值。在一些實施例中,橋接設備504可以繼續從區塊鏈網路節點506檢索區塊鏈區塊並更新本地高度值,直到本地高度值等於遠端高度值為止。在一些實施例中,當本地高度值等於遠端高度值時,橋接設備504可以停止或限制從區塊鏈網路節點506檢索區塊鏈區塊。
在524處,橋接設備504將校驗高度值與本地高度值進行比較。在一些實施例中,橋接設備504可以確定校驗高度值是否小於本地高度值。如果確定校驗高度值小於本地高度值,則橋接設備504可以驗證儲存在橋接設備上並且尚未由橋接設備504驗證的區塊鏈區塊。如果確定校驗高度值不小於本地高度值,則橋接設備504可以限制驗證儲存在橋接設備504上的區塊鏈區塊。
在526,在確定校驗高度值小於本地高度值之後,橋接設備504驗證儲存在橋接設備504上的區塊鏈區塊,以確定區塊鏈區塊是否可信。在一些實施例中,橋接設備504驗證儲存在橋接設備504上並且尚未由橋接設備504驗證的區塊鏈區塊。例如,橋接設備504可以驗證位於在已經由橋接設備504驗證並且由校驗高度值指示的數量的區塊鏈區塊之後的區塊鏈區塊。在一些實施例中,橋接設備504可以通過將記錄在區塊鏈區塊中的交易資料與包括在由用戶端設備502發送給橋接設備504的交易請求中的資料進行比較來驗證區塊鏈區塊。例如,交易請求可以識別將從一個區塊鏈帳戶轉移到另一區塊鏈帳戶的特定數量的資金。橋接設備504可以識別儲存在橋接設備504上並且包括與資金轉移有關的區塊鏈交易的區塊鏈區塊。橋接設備504可以將與資金轉移有關的區塊鏈交易資料與交易請求中包括的資料進行比較。橋接設備可以確定與轉移資金的金額和區塊鏈區塊中的帳戶資訊有關的資料是否與交易請求中的資料匹配或以其他方式是一致的。如果確定它們是一致的,則橋接設備可以確定被驗證的區塊鏈區塊是可信區塊鏈區塊。
在一些實施例中,橋接設備504可以基於區塊鏈區塊中的區塊鏈交易的雜湊值來驗證區塊鏈區塊。例如,區塊鏈區塊可以包括區塊鏈交易和區塊鏈交易的第一雜湊值。橋接設備504可以從區塊鏈區塊獲得區塊鏈交易,並計算區塊鏈交易的第二雜湊值。橋接設備504可以將第二雜湊值與第一雜湊值進行比較。如果確定兩個雜湊值匹配,則橋接設備504可以確定區塊鏈區塊中的區塊鏈交易資料未被篡改,並且區塊鏈區塊是可信區塊鏈區塊。
在一些實施例中,在驗證區塊鏈區塊之後,橋接設備504可以更新校驗高度值。例如,在橋接設備504驗證區塊鏈區塊是可信區塊之後,橋接設備504可以將校驗高度值例如增加1或另一單位。在一些實施例中,橋接設備可以繼續驗證儲存在橋接設備上的區塊鏈區塊並更新校驗高度值,直到校驗高度值等於本地高度值為止。在一些實施例中,當校驗高度值等於本地高度值時,橋接設備504可以限制驗證儲存在橋接設備504上的區塊鏈區塊。
在528,橋接設備504檢測系統錯誤。在一些實施例中,系統錯誤可以包括軟體漏洞和報錯、硬碟故障、輸入或輸出設備故障或者其他臨時或永久故障。在一些實施例中,系統錯誤導致橋接設備504與區塊鏈網路節點506之間的通信連接丟失或中斷。在一些示例中,儲存在橋接設備504上的區塊鏈區塊可能由於系統錯誤而被破壞或丟失。在一些實施例中,遠端高度值、本地高度值和校驗高度值被儲存在橋接設備504的非揮發性儲存媒體中,使得即使系統錯誤也可以保留這些游標值。
在530,在檢測到系統錯誤之後,橋接設備504執行恢復處理。在一些實施例中,橋接設備504可以基於校驗高度值來執行恢復處理。在一些實施例中,橋接設備504可以將本地高度值設置為校驗高度值。因為校驗高度值指示已經由橋接設備504驗證的區塊鏈區塊的數量,所以即使丟失了這些區塊鏈區塊,也不一定需要由橋接設備504重新獲得。然而,位於由校驗高度值406指示的最新區塊鏈區塊之後並且位於由本地高度值404指示的最新區塊鏈區塊之前的區塊鏈區塊已經由橋接設備504獲得但尚未驗證。這些區塊鏈區塊容易出錯或丟失,例如,由於系統錯誤。這樣,可以將本地高度值設置(或減小)為校驗高度值,以便從區塊鏈網路節點506重新獲得未驗證的區塊鏈區塊以進行驗證。例如,在將本地高度值設置為校驗高度值之後,橋接設備504可以將本地高度值與遠端高度值進行比較,並且確定本地高度值是否小於遠端高度值。如果確定本地高度值小於遠端高度值,則橋接設備504可以從區塊鏈網路節點506重新獲得未驗證的區塊鏈區塊。橋接設備504可以繼續驗證重新獲得的未驗證的區塊鏈區塊,直到校驗高度值達到本地高度值為止。
在一些實施例中,如上所述,橋接設備504在訪問和更新三個游標值、獲得區塊鏈區塊、驗證所獲得的區塊鏈區塊等操作時可以使用多個獨立執行緒。在一些實施例中,處理500的一些操作(例如,操作522、526和528)可以按其他循序執行或並存執行。例如,只要滿足游標值的相應條件,就可以相對於522處的檢索操作相對獨立地執行526處的驗證操作。例如,在特定時間實例處,如果確定校驗高度值小於本地高度值,則526處的驗證操作可以在522處的檢索操作之前開始。可以執行526處的驗證操作而無需等待522處的檢索操作完成。類似地,只要確定本地高度值小於遠端高度值,522處的檢索操作就可以開始而無需等待526處的驗證操作完成。處理500可以繼續並且進一步包括附加或不同的操作。例如,橋接設備504可以將交易請求的執行結果返回給例如SPI的用戶端設備502。在一些實施例中,處理500可以包括上述處理的附加或不同的反覆運算。
如上所述,橋接設備504通過從區塊鏈網路節點506接收到的新區塊通知來更新遠端高度值,以保持遠端高度值與區塊鏈網路的同步。在一些實施例中,橋接設備504通過從區塊鏈網路節點506檢索區塊鏈區塊來不斷地更新本地高度值。在一些實施例中,橋接設備504驗證區塊鏈區塊並更新校驗高度值。在一些實施例中,三個游標值滿足以下關係:校驗高度值≤本地高度值≤遠端高度值。
在一些實施例中,遠端高度值的更新與橋接設備504從區塊鏈網路節點506接收到的通知有關。在一些實施例中,通知包括新區塊通知,新區塊通知指示新區塊已被添加到儲存在區塊鏈網路節點506上的區塊鏈中。遠端高度值的更新和區塊鏈網路節點506的操作保持同步,使得橋接設備504處的遠端高度值基於新區塊通知不斷增加。在一些實施例中,橋接設備504通過基於本地高度值和遠端高度值之間的比較從區塊鏈網路節點檢索區塊鏈區塊,來同步區塊鏈區塊與區塊鏈網路節點506。在一些實施例中,已經由橋接設備504同步並且儲存在橋接設備504上的區塊鏈區塊由本地高度值指示。在一些實施例中,橋接設備504在區塊同步處理期間獲得的區塊鏈區塊中的區塊鏈交易資料觸發橋接設備504的驗證處理。在橋接設備504驗證了區塊鏈區塊中的區塊鏈交易資料之後,區塊鏈區塊可以被認為是可信區塊。已經由橋接設備504驗證的區塊鏈區塊由校驗高度值指示。
在一些實施例中,校驗高度值不斷增加(例如,每次增加1),這確保了小於(或低於)校驗高度值的區塊鏈區塊中的區塊鏈交易已經由橋接設備504完全處理。在一些實施例中,當發生系統錯誤或故障時,橋接設備504的恢復處理可以根據校驗高度值來開始。在一些實施例中,即使橋接設備504中的區塊資料丟失或被破壞,也可以通過將本地高度值重置為校驗高度值並監視來自區塊鏈網路節點506的區塊通知來恢復丟失或被破壞的區塊資料,從而更新遠端高度值。
圖6A是示出可根據本文實施例執行的用於實現基於區塊鏈的容錯系統的處理600的流程圖。處理600可以是結合圖5的處理500的上下文由基於區塊鏈的容錯系統執行的處理。為方便起見,處理600將被描述為由位於一個或多個位置的、並根據本文被適當地程式設計的一個或多個電腦的系統執行。例如,被適當地程式設計的區塊鏈資料處理系統(例如,圖3的系統300)可以執行處理600。
在602,橋接設備(例如,圖3的橋接設備304a或圖5的橋接設備504),例如使用橋接設備的第一執行緒集,從區塊鏈網路節點(例如,圖3的區塊鏈網路節點306)檢索第一區塊鏈區塊集。例如,第一區塊鏈區塊集可以包括不止一個區塊鏈區塊(例如,第一區塊鏈區塊和第二區塊鏈區塊),並且第一執行緒集可以包括不止一個執行緒(例如,第一執行緒和第二執行緒)。橋接設備可以使用第一執行緒和第二執行緒分別且並行地檢索第一區塊鏈區塊和第二區塊鏈區塊。
在604,橋接設備將第一區塊鏈區塊集儲存在橋接設備中。例如,橋接設備可以將第一區塊鏈區塊和第二區塊鏈區塊儲存在橋接設備的記憶體中。在一些實施例中,除了第一區塊鏈區塊集之外,橋接設備還可以儲存第二區塊鏈區塊集。例如,第二區塊鏈區塊集可以早於第一區塊鏈區塊集由橋接設備從區塊鏈網路節點檢索。
在606,橋接設備例如使用橋接設備的第二執行緒集來驗證儲存在橋接設備中的第二區塊鏈區塊集。在一些實施例中,第二區塊鏈區塊集可以包括不止一個區塊鏈區塊(例如,第三區塊鏈區塊和第四區塊鏈區塊),並且第二執行緒集可以包括不止一個執行緒(例如,第三執行緒和第四執行緒)。橋接設備可以使用第三執行緒和第四執行緒分別且並行地驗證第三區塊鏈區塊和第四區塊鏈區塊。
在一些實施例中,橋接設備使用第一執行緒集和第二執行緒集非同步地執行對第一區塊鏈區塊集的檢索以及對第二區塊鏈區塊集的驗證。如前所述,當兩個操作非同步執行時,一個操作的執行不會阻塞或暫停另一操作的執行。一個操作可以開始而無需等待另一操作完成,並且兩個操作可以同時執行。例如,橋接設備可以以並行方式檢索第一區塊鏈區塊集以及驗證第二區塊鏈區塊集。在使用第一執行緒集檢索第一區塊鏈區塊集時,橋接設備可以使用第二執行緒集來驗證第二區塊鏈區塊集。
圖6B是示出可根據本文實施例執行的用於非同步處理區塊鏈區塊的處理650的流程圖,該處理可用於例如實現基於區塊鏈的容錯系統。處理650可以是處理600的實施方式的示例。
在608,橋接設備(例如,圖3的橋接設備304a或圖5的橋接設備504)在橋接設備的資料儲存(例如,非揮發性儲存媒體)中維護遠端高度值(例如,圖4的遠端高度值402)、本地高度值(例如,圖4的本地高度值404)以及校驗高度值(例如,校驗高度值406)。在一些實施例中,遠端高度值指示儲存在通信地連結到橋接設備的區塊鏈網路節點(例如,圖3的區塊鏈網路節點306或圖5的區塊鏈網路節點506)上的區塊鏈區塊的數量。本地高度值指示儲存在橋接設備上的區塊鏈區塊的數量。校驗高度值指示已經由橋接設備驗證的區塊鏈區塊的數量。在一些實施例中,區塊鏈網路節點是區塊鏈網路的共識節點。
在610,橋接設備從區塊鏈網路節點接收通知。在一些實施例中,通知指示遠端高度值。在一些實施例中,通知包括新區塊通知,新區塊通知指示新區塊已被添加到區塊鏈網路的區塊鏈中。在一些實施例中,新區塊通知指示遠端高度值增加了特定值(例如,增加了1)。
在一些實施例中,橋接設備可以以推送或提取模式從區塊鏈網路節點接收通知。例如,回應於新區塊鏈區塊的生成,區塊鏈網路節點可以基於橋接設備和/或用戶端設備的訂閱,週期性地或動態地將通知推送至橋接設備。作為另一示例,橋接設備可以通過向區塊鏈網路節點發送針對通知的請求來從區塊鏈網路節點提取通知。
在一些實施例中,橋接設備可以從用戶端設備(例如,圖3的用戶端設備302或圖5的用戶端設備502)接收請求在區塊鏈網路上執行交易的交易請求。橋接設備可以將交易請求轉發到區塊鏈網路節點。區塊鏈網路節點可以向橋接設備發送第二通知。第二通知可以指示更新的遠端高度值,並且更新的遠端高度值可以指示基於交易被儲存在區塊鏈網路節點上的區塊鏈區塊的數量的增加。
在612,橋接設備確定本地高度值是否小於遠端高度值。在一些實施例中,如果確定本地高度值小於遠端高度值,則橋接設備可以從區塊鏈網路節點檢索區塊鏈區塊。如果確定本地高度值不小於遠端高度值,則橋接設備504可以限制從區塊鏈網路節點檢索區塊鏈區塊。
在614,回應於確定本地高度值小於遠端高度值,橋接設備從區塊鏈網路節點獲得未儲存在橋接設備上的至少一個區塊鏈區塊。例如,橋接設備可以從區塊鏈網路節點檢索區塊鏈區塊,其中區塊鏈區塊位於儲存在橋接設備上並由本地高度值指示的數量的區塊鏈區塊中的最新區塊鏈區塊之後。在一些實施例中,回應於從區塊鏈網路節點獲得至少一個區塊鏈區塊,橋接設備可以將至少一個區塊鏈區塊儲存在橋接設備上並更新本地高度值。在一些實施例中,橋接設備可以繼續從區塊鏈網路節點檢索區塊鏈區塊並更新本地高度值,直到本地高度值等於遠端高度值為止。
在616,回應於確定本地高度值不小於遠端高度值,橋接設備限制從區塊鏈網路節點獲得區塊鏈區塊。例如,如果本地高度值等於遠端高度值,則橋接設備可以停止或限制從區塊鏈網路節點檢索區塊鏈區塊。
在618,橋接設備確定校驗高度值是否小於本地高度值。在一些實施例中,如果確定校驗高度值小於本地高度值,則橋接設備可以驗證儲存在橋接設備上並且尚未由橋接設備驗證的區塊鏈區塊。如果確定校驗高度值不小於本地高度值,則橋接設備可以限制驗證儲存在橋接設備上的區塊鏈區塊。
在620處,回應於確定校驗高度值小於本地高度值,橋接設備驗證儲存在橋接設備上並且尚未由橋接設備驗證的區塊鏈區塊。在一些實施例中,驗證可以包括確定區塊鏈區塊中的一個或多個區塊鏈交易與交易請求之間的一致性。在一些實施例中,橋接設備可以通過將記錄在區塊鏈區塊中的交易資料與包括在由用戶端設備發送給橋接設備的交易請求中的資料進行比較來驗證區塊鏈區塊。
在一些實施例中,橋接設備可以進一步基於區塊鏈區塊中的區塊鏈交易的雜湊值來驗證區塊鏈區塊。例如,區塊鏈區塊可以包括區塊鏈交易和區塊鏈交易的第一雜湊值。橋接設備可以從區塊鏈區塊獲得區塊鏈交易,並計算該區塊鏈交易的第二雜湊值。橋接設備可以將第二雜湊值與第一雜湊值進行比較。如果確定兩個雜湊值匹配,則橋接設備可以確定區塊鏈區塊中的區塊鏈交易未被篡改,並且區塊鏈區塊是可信區塊。
在一些實施例中,回應於驗證了區塊鏈區塊,橋接設備可以確定區塊鏈區塊是可信的並且更新校驗高度值。在一些實施例中,橋接設備可以繼續驗證儲存在橋接設備上的區塊鏈區塊並更新校驗高度值,直到校驗高度值等於本地高度值為止。
在616,回應於確定校驗高度值不小於本地高度值,橋接設備限制驗證儲存在橋接設備上的區塊鏈區塊。例如。如果校驗高度值等於本地高度值,則橋接設備504可以限制驗證儲存在橋接設備504上的區塊鏈區塊。
在618處,檢測到系統錯誤。在一些實施例中,系統錯誤可以包括軟體漏洞和報錯、硬碟故障、輸入或輸出設備故障或者其他臨時或永久故障。在一些實施例中,系統錯誤可以導致橋接設備和區塊鏈網路節點之間的通信連接丟失。在一些示例中,儲存在橋接設備上的區塊鏈區塊可能會因系統錯誤而被破壞或丟失。
在620,橋接設備回應於檢測到系統錯誤而執行恢復處理。在一些實施例中,橋接設備可以將本地高度值設置為校驗高度值。回應於確定本地高度值小於遠端高度值,橋接設備可以獲得位於已經由橋接設備驗證並且由校驗高度值指示的數量的區塊鏈區塊中的最新區塊鏈區塊之後的至少一個區塊鏈區塊。
在一些實施例中,在恢復處理期間和/或之後,橋接設備可以返回到602以維護三個游標值並繼續處理650。在一些實施例中,如關於圖4至圖5所描述的,處理650可以由橋接設備的一個或多個獨立執行緒執行,這可以提高橋接設備的處理速度和靈活性,並且在增加用戶端設備與區塊鏈網路節點之間的通信輸送量的同時,提供容錯以及維護與區塊相關的處理的有序執行,以增強由橋接設備儲存並在用戶端設備與區塊鏈網路節點之間通信的資料的安全性和可信性。
圖7是根據本文實施例的裝置700的模組的示例的示圖。裝置700可以是橋接設備(例如,圖3的橋接設備304a或圖5的橋接設備504)的實施例的示例。裝置700可以對應於上述實施例,裝置700包括以下:檢索模組702,用於使用橋接設備的第一執行緒集從區塊鏈網路節點檢索第一區塊鏈區塊集;儲存模組704,用於將第一區塊鏈區塊集儲存在橋接設備中;驗證模組706,用於使用橋接設備的第二執行緒集來驗證儲存在橋接設備中的第二區塊鏈區塊集,其中,第一執行緒集與第二執行緒集不同,並且檢索第一區塊鏈區塊集以及驗證第二區塊鏈區塊集是使用第一執行緒集和第二執行緒集非同步地執行的。
在一些實施例中,第一區塊鏈區塊集包括第一區塊鏈區塊和第二區塊鏈區塊,其中,第一執行緒集包括第一執行緒和第二執行緒,並且使用橋接設備的第一執行緒集從區塊鏈網路節點檢索第一區塊鏈區塊集包括並行地:使用橋接設備的第一執行緒從區塊鏈網路節點檢索第一區塊鏈區塊,使用橋接設備的第二執行緒從區塊鏈網路節點檢索第二區塊鏈區塊。
在一些實施例中,第二區塊鏈區塊集包括第三區塊鏈區塊和第四區塊鏈區塊,其中,第二執行緒集包括第三執行緒和第四執行緒,並且使用橋接設備的第二執行緒集來驗證儲存在橋接設備中的第二區塊鏈區塊集包括並行地:使用橋接設備的第三執行緒驗證第三區塊鏈區塊,使用橋接設備的第四執行緒來驗證第四區塊鏈區塊。
在一些實施例中,裝置700還包括維護子模組,用於在橋接設備的資料儲存中維護遠端高度值和本地高度值,其中:遠端高度值指示儲存在區塊鏈網路節點上的區塊鏈區塊的數量;本地高度值指示已經從區塊鏈網路節點獲得並儲存在橋接設備上的區塊鏈區塊的數量。使用橋接設備的第一執行緒集從區塊鏈網路節點檢索第一區塊鏈區塊集包括:橋接設備確定本地高度值是否小於遠端高度值;以及回應於確定本地高度值小於遠端高度值,從區塊鏈網路節點獲得未儲存在橋接設備上的至少一個區塊鏈區塊。
在一些實施例中,裝置700還包括:儲存子模組,用於回應於從區塊鏈網路節點獲得至少一個區塊鏈區塊,將至少一個區塊鏈區塊儲存在橋接設備上;以及更新子模組,用於由橋接設備更新本地高度值。
在一些實施例中,裝置700還包括限制子模組,用於回應於確定本地高度值不小於遠端高度值,限制從區塊鏈網路節點獲得區塊鏈區塊。
在一些實施例中,裝置700還包括:第一接收子模組,用於由橋接設備從區塊鏈網路節點接收通知,該通知指示遠端高度值;第二接收子模組,用於由橋接設備從用戶端設備接收交易請求,該交易請求用於請求在區塊鏈網路上執行交易;發送子模組,用於由橋接設備將交易請求發送至區塊鏈網路節點;第三接收子模組,用於由橋接設備從區塊鏈網路節點接收第二通知,該第二通知指示更新的遠端高度值,其中,更新的遠端高度值指示至少部分地基於交易被儲存在區塊鏈網路節點上的區塊鏈區塊的數量的增加。
在一些實施例中,該通知包括指示新區塊已被添加到區塊鏈網路的區塊鏈中的新區塊通知,並且新區塊通知指示遠端高度值增加了例如1。
在一些實施例中,由橋接設備從區塊鏈網路節點接收通知包括以下中的至少一個:接收區塊鏈網路節點推送至橋接設備的通知;或由橋接設備從區塊鏈網路節點提取通知。
在一些實施例中,裝置700還包括維護子模組,用於在橋接設備的資料儲存中維護本地高度值和校驗高度值,其中:本地高度值指示已經從區塊鏈網路節點獲得並儲存在橋接設備上的區塊鏈區塊的數量;校驗高度值指示已經由橋接設備驗證的區塊鏈區塊的數量。使用橋接設備的第二執行緒集來驗證儲存在橋接設備中的第二區塊鏈區塊集包括:確定校驗高度值是否小於本地高度值;以及回應於確定校驗高度值小於本地高度值,驗證儲存在橋接設備中且尚未由橋接設備驗證的區塊鏈區塊。
在一些實施例中,驗證儲存在橋接設備中並且尚未由橋接設備驗證的區塊鏈區塊包括:確定區塊鏈區塊中的一個或多個區塊鏈交易與交易請求之間的一致性。
在一些實施例中,裝置700還包括:確定子模組,用於回應於驗證了儲存在橋接設備上並且尚未由橋接設備驗證的區塊鏈區塊,確定該區塊鏈區塊是可信的;更新子模組,用於由橋接設備更新校驗高度值。
在一些實施例中,裝置700還包括限制子模組,用於回應於確定校驗高度值不小於本地高度值,限制驗證儲存在橋接設備中的區塊鏈區塊。
在一些實施例中,裝置700還包括:檢測子模組,用於由橋設備檢測包括橋接設備和區塊鏈網路節點的系統中的系統錯誤;以及執行子模組,用於基於校驗高度值執行恢復處理。執行恢復處理包括:將本地高度值設置為等於校驗高度值;以及回應於確定本地高度值小於指示儲存在區塊鏈網路節點上的區塊鏈區塊的數量的遠端高度值,從區塊鏈網路節點獲得未儲存在橋接設備上的至少一個區塊鏈區塊。
前述實施例中示出的系統、裝置、模組或單元可以通過使用電腦晶片或實體來實施,或者可以通過使用具有特定功能的產品來實施。典型的實施例設備是電腦,電腦可以是個人電腦、筆記型電腦、行動電話、相機電話、智慧手機、個人數位助理、媒體播放機、導航設備、電子郵件收發設備、遊戲控制台、平板電腦、可穿戴設備或這些設備的任意組合。
對於裝置中每個模組的功能和作用的實施例處理,可以參考前一方法中相應步驟的實施例處理。為簡單起見,這裡省略了細節。
由於裝置實施基本上對應於方法實施,對於相關部件,可以參考方法實施中的相關描述。先前描述的裝置實施僅是示例。被描述為單獨部分的模組可以或不是物理上分離的,並且顯示為模組的部分可以是或不是物理模組,可以位於一個位置,或者可以分佈在多個網路模組上。可以基於實際需求來選擇一些或所有模組,以實現本文方案的目標。本領域的普通技術人員無需付出創造性勞動就能理解和實現本申請的實施例。
再次參見圖7,它可以被解釋為示出了容錯區塊鏈資料處理裝置的內部功能模組和結構。容錯區塊鏈資料處理裝置可以是被配置為連接用戶端設備和區塊鏈網路的區塊鏈網路節點的橋接設備(例如,圖3的橋接設備304a或圖5的橋接設備504)的示例。執行主體本質上可以是電子設備,並且該電子設備包括以下:一個或多個處理器;以及被配置為儲存一個或多個處理器的可執行指令的一個或多個電腦可讀記憶體。在一些實施例中,一個或多個電腦可讀記憶體耦接至一個或多個處理器且其上儲存有程式設計指令,所述程式設計指令能夠由所述一個或多個處理器執行以執行如本文中所述的演算法、方法、函數、處理、流程和程式。本文還提供了一個或多個非暫態電腦可讀儲存媒體,其耦接到一個或多個處理器並且具有儲存在其上的指令,當由一個或多個處理器執行時,該指令使得一個或多個處理器根據這裡提供的方法的實施例執行操作。
本文還提供了用於實現本文提供的方法的系統。該系統包括一個或多個處理器,以及耦接到一個或多個處理器的電腦可讀儲存媒體,其上儲存有指令,當由一個或多個處理器執行時,該指令使得一個或多個處理器根據這裡提供的方法的實施例執行操作。
本文中描述的主題、動作和操作的實施可以在數位電子電路、有形體現的電腦軟體或韌體、電腦硬體中實施,包括本文中公開的結構及其結構等同物,或者它們中的一個或多個的組合。本文中描述的主題的實施可以實現為一個或多個電腦程式,例如,編碼在電腦程式載體上的一個或多個電腦程式指令模組,用於由資料處理裝置執行或控制資料處理裝置的操作。例如,電腦程式載體可以包括一個或多個電腦可讀儲存媒體,其上編碼或儲存有指令。載體可以是有形的非暫態電腦可讀媒體,諸如磁片、磁光碟或光碟、固態驅動器、隨機存取記憶體(RAM)、唯讀記憶體(ROM)或其他類型的媒體。可選地或附加地,載體可以是人工生成的傳播信號,例如,機器生成的電信號、光信號或電磁信號,其被生成來編碼資訊用於傳輸到合適的接收器裝置以供資料處理裝置執行。電腦儲存媒體可以是或可以部分是機器可讀存放裝置、機器可讀儲存基板、隨機或串列訪問記憶體設備或它們中的一個或多個的組合。電腦儲存媒體不是傳播信號。
電腦程式,也可以被稱為或描述為程式、軟體、軟體應用程式、app、模組、軟體模組、引擎、腳本或代碼,可以以任何形式的程式設計語言編寫,包括編譯或解釋性語言、或聲明或程式性語言;它可以配置為任何形式,包括作為獨立程式,或作為模組、元件、引擎、副程式或適合在計算環境中執行的其他單元,該環境可包括由資料通信網路互連的一個或多個位置上的一台或多台電腦。
電腦程式可以但非必須對應於檔案系統中的檔。電腦程式可以儲存在:保存其他程式或資料的檔的一部分中,例如,儲存在標記語言文檔中的一個或多個腳本;專用於所討論的程式的單個檔中;或者多個協調檔中,例如,儲存一個或多個模組、副程式或代碼部分的多個檔。
用於執行電腦程式的處理器包括:例如,通用和專用微處理器兩者,和任意種類的數位電腦的任意一個或多個處理器。通常,處理器將接收用於執行的電腦程式的指令以及來自耦接至處理器的非暫態電腦可讀媒體的資料。
術語“資料處理裝置”包括用於處理資料的所有種類的裝置、設備和機器,例如包括可程式設計處理器、電腦或多個處理器或電腦。資料處理設備可以包括例如FPGA(現場可程式化閘陣列),ASIC(專用積體電路)或GPU(圖形處理單元)的專用邏輯電路。除了硬體,該裝置還可以包括為電腦程式創建執行環境的代碼,例如,構成處理器韌體、協定棧、資料庫管理系統、作業系統或者它們中一個或多個的組合的代碼。
本文中描述的處理和邏輯流程可以由執行一個或多個電腦程式的一台或多台電腦或處理器執行,以通過對輸入資料進行操作並生成輸出來執行操作。處理和邏輯流程也可以由例如FPGA、ASIC或GPU等的專用邏輯電路或專用邏輯電路與一個或多個程式設計電腦的組合來執行。
適合於執行電腦程式的電腦可以基於通用和/或專用微處理器,或任何其他種類的中央處理單元。通常,中央處理單元將從唯讀記憶體和/或隨機存取記憶體接收指令和資料。電腦的元件可包括用於執行指令的中央處理單元和用於儲存指令和資料的一個或多個存放裝置。中央處理單元和記憶體可以補充有專用邏輯電路或集成在專用邏輯電路中。
通常,電腦還將包括或可操作地耦接至一個或多個存放裝置,以從一個或多個存放裝置接收資料或向一個或多個存放裝置傳送資料。大型存放區設備可以是例如,磁片、磁光碟或光碟、固態驅動器或任何其他類型的非暫態電腦可讀媒體。但是,電腦不必需這樣的設備。因此,電腦可以耦接到例如一個或多個記憶體的本地和/或遠端的一個或多個大型存放區設備。例如,電腦可以包括作為電腦的組成部件的一個或多個本機存放區器,或者電腦可以耦接到雲網路中的一個或多個遠端存放器。此外,電腦可以嵌入在另一設備中,例如行動電話、個人數位助理(PDA)、移動音訊或視頻播放機、遊戲控制台、全球定位系統(GPS)接收器或例如通用序列匯流排(USB)快閃記憶體驅動器的可攜式存放裝置,這裡僅舉幾例。
元件可以通過直接或經由一個或多個中介軟體例如電連接或光連接地彼此連接通信而彼此“耦接”。如果部件中的一個部件被集成到另一個中,則部件也可以被彼此“耦接”。例如,集成到處理器中的大型存放區元件(例如,L2快取記憶體元件)被“耦接到”處理器。
為了提供與用戶的交互,本文中描述的主題的實施例可以在電腦上實現或配置為與該電腦通信,該計算機具有:顯示裝置,例如,LCD(液晶顯示器)監視器,用於向使用者顯示資訊;以及輸入裝置,使用者可以通過該輸入裝置向電腦提供輸入,例如鍵盤和例如滑鼠、軌跡球或觸控板等的指標裝置。其他類型的設備也可用於提供與用戶的交互;例如,提供給用戶的回饋可以是任何形式的感官回饋,例如視覺回饋、聽覺回饋或觸覺回饋;並且可以接收來自用戶任何形式的輸入,包括聲音、語音輸入或觸覺輸入。此外,電腦可以通過向使用者使用的設備發送文檔和從使用者使用的設備接收文檔來與用戶交互;例如,通過向使用者設備上的web流覽器發送web頁面以回應從web流覽器收到的請求,或者通過與例如智慧型電話或電子平板電腦等的使用者設備上運行的應用程式(app)進行交互。此外,電腦可以通過向個人設備(例如,運行消息收發應用程式的智慧手機)輪流發送文本消息或其他形式的消息來並且從使用者接收回應訊息來與用戶交互。
本文使用與系統,裝置和電腦程式元件有關的術語“配置為”。對於被配置為執行特定操作或動作的一個或多個電腦的系統,意味著系統已經在其上安裝了在運行中促使該系統執行所述操作或動作的軟體、固件、硬體或它們的組合。對於被配置為執行特定操作或動作的一個或多個電腦程式,意味著一個或多個程式包括當被資料處理裝置執行時促使該裝置執行所述操作或動作的指令。對於被配置為執行特定操作或動作的專用邏輯電路,意味著該電路具有執行所述操作或動作的電子邏輯。
雖然本文包含許多具體實施細節,但是這些細節不應被解釋為由申請專利範圍本身限定的對要求保護的範圍的限制,而是作為對特定實施例的具體特徵的描述。在本文中單個實施例的上下文中描述的多個特徵也可以在單個實施例中組合實現。相反,在單個實施方式的上下文中描述的各種特徵也可以單獨地或以任何合適的子組合在多個實施方式中實現。此外,儘管上面的特徵可以描述為以某些組合起作用並且甚至最初如此要求保護,但是在一些情況下可以從要求保護的組合中刪除該組合的一個或多個特徵,並且可以要求保護指向子組合或子組合的變體。
類似地,雖然以特定順序在附圖中描繪了操作並且在申請專利範圍中敘述了操作,但是這不應該被理解為:為了達到期望的結果,要求以所示的特定順序或依次執行這些操作,或者要求執行所有示出的操作。在某些情況下,多工和並行處理可能是有利的。此外,上述實施例中的各種系統模組和元件的劃分不應被理解為在所有實施例中都要求如此劃分,而應當理解,所描述的程式元件和系統通常可以一起集成在單個軟體產品中或打包成多個軟體產品。
已經描述了主題的特定實施方式。其他實施方式在以下申請專利範圍的範圍內。例如,申請專利範圍中記載的動作可以以不同的循序執行並且仍然實現所期望的結果。作為一個示例,附圖中描繪的過程無需要求所示的特定順序或次序來實現期望的結果。在一些情況下,多工並行處理可能是有利的。
100:環境
102:聯盟區塊鏈網路
106:計算系統
108:計算系統
110:網路
200:架構
202:參與者系統
204:參與者系統
206:參與者系統
212:區塊鏈網路
214:節點
216:區塊鏈
216’:完整副本
216”:完整副本
216”’:完整副本
300:系統
302:用戶端設備
304a:橋接設備
304b:橋接設備
306:區塊鏈網路節點
408a:區塊鏈區塊
408b:區塊鏈區塊
408c:區塊鏈區塊
408d:區塊鏈區塊
500:處理
502:用戶端設備
504:橋接設備
506:區塊鏈網路節點
600:處理
650:處理
700:裝置
702:檢索模組
704:儲存模組
706:驗證模組
[圖1]是示出可用於執行本文實施例的環境的示例的示圖。
[圖2]是示出根據本文實施例的架構的示例的示圖。
[圖3]是示出根據本文實施例的基於區塊鏈的容錯系統的示例的示圖。
[圖4]是示出根據本文實施例的儲存在圖3的基於區塊鏈的容錯系統中的游標值的示例的示圖。
[圖5]是示出可根據本文實施例執行的處理的示例的信號流。
[圖6A]是示出可根據本文實施例執行的用於非同步處理區塊鏈區塊的處理的流程圖。
[圖6B]是示出可根據本文實施例執行的用於非同步處理區塊鏈區塊的處理的流程圖,該處理可用於例如實現基於區塊鏈的容錯系統。
[圖7]是示出根據本文實施例的裝置的模組的示例的示圖。
各附圖中的相同附圖標記和名稱表示相同的元件。
300:系統
302:用戶端設備
304a:橋接設備
304b:橋接設備
306:區塊鏈網路節點
Claims (16)
- 一種由橋接設備執行的電腦實施方法,其中,該橋接設備通信地連結到區塊鏈網路中的區塊鏈網路節點,該方法包括:使用該橋接設備的第一執行緒集從該區塊鏈網路節點檢索第一區塊鏈區塊集,其中,於第一共識處理由該區塊鏈網路之共識節點執行後,該第一區塊鏈區塊集藉由該區塊鏈網路節點產生,其中,該橋接設備與該區塊鏈網路的該共識節點分開,且該橋接設備通訊地連結於用戶端設備;將該第一區塊鏈區塊集儲存在該橋接設備中;使用該橋接設備的第二執行緒集從該區塊鏈網路節點檢索第二區塊鏈區塊集,其中,於第二共識處理由該區塊鏈網路之該共識節點執行後,該第二區塊鏈區塊集藉由該區塊鏈網路節點產生;以及使用該橋接設備的第三執行緒集來驗證已儲存在該橋接設備中的該第一區塊鏈區塊集;其中,檢索該第二區塊鏈區塊集以及驗證該第一區塊鏈區塊集是使用該第二執行緒集和該第三執行緒集非同步地執行的。
- 如請求項1所述的方法,其中,該第二區塊鏈區塊集包括第一區塊鏈區塊和第二區塊鏈區塊,該第二執行緒集包括第一執行緒和第二執行緒, 使用該橋接設備的該第二執行緒集從該區塊鏈網路節點檢索該第二區塊鏈區塊集包括並行地:使用該橋接設備的該第一執行緒從該區塊鏈網路節點檢索該第一區塊鏈區塊,使用該橋接設備的該第二執行緒從該區塊鏈網路節點檢索該第二區塊鏈區塊。
- 如請求項1所述的方法,其中,該第一區塊鏈區塊集包括第三區塊鏈區塊和第四區塊鏈區塊,該第三執行緒集包括第三執行緒和第四執行緒,使用該橋接設備的該第三執行緒集來驗證儲存在該橋接設備中的該第一區塊鏈區塊集包括並行地:使用該橋接設備的該第三執行緒來驗證該第三區塊鏈區塊,使用該橋接設備的該第四執行緒來驗證該第四區塊鏈區塊。
- 如請求項1所述的方法,還包括:在該橋接設備的資料儲存中維護遠端高度值和本地高度值,其中:該遠端高度值指示儲存在該區塊鏈網路節點上的區塊鏈區塊的數量;以及該本地高度值指示已經從該區塊鏈網路節點獲得並且儲存在該橋接設備上的區塊鏈區塊的數量,其中,使用該橋接設備的該第二執行緒集從該區塊鏈 網路節點檢索該第二區塊鏈區塊集包括:該橋接設備確定該本地高度值是否小於該遠端高度值;以及回應於確定該本地高度值小於該遠端高度值,從該區塊鏈網路節點獲得未儲存在該橋接設備上的至少一個區塊鏈區塊。
- 如請求項4所述的方法,還包括:回應於將該第一區塊鏈區塊集儲存在該橋接設備中,該橋接設備更新該本地高度值以計算該第一區塊鏈區塊集;將該第二區塊鏈區塊集儲存在該橋接設備中;以及回應於將該第二區塊鏈區塊集儲存在該橋接設備中,該橋接設備更新該本地高度值以計算該第二區塊鏈區塊集。
- 如請求項4所述的方法,還包括:回應於確定該本地高度值不小於該遠端高度值,限制從該區塊鏈網路節點獲得區塊鏈區塊。
- 如請求項4所述的方法,還包括:該橋接設備從該區塊鏈網路節點接收通知,該通知指示該遠端高度值;該橋接設備從該用戶端設備接收交易請求,該交易請求用於請求在區塊鏈網路上執行交易;該橋接設備將該交易請求發送至該區塊鏈網路節點;以及 該橋接設備從該區塊鏈網路節點接收第二通知,該第二通知指示更新的遠端高度值,其中,該更新的遠端高度值指示至少部分基於該交易被儲存在該區塊鏈網路節點上的區塊鏈區塊的數量的增加。
- 如請求項7所述的方法,其中,該通知包括指示新區塊已經被添加到該區塊鏈網路的區塊鏈中的新區塊通知,並且該新區塊通知指示該遠程高度值增加。
- 如請求項7所述的方法,其中,該橋接設備從該區塊鏈網路節點接收該通知包括以下中的至少一個:接收該區塊鏈網路節點推送至該橋接設備的該通知;或該橋接設備從該區塊鏈網路節點提取該通知。
- 如請求項1所述的方法,還包括:在該橋接設備的資料儲存中維護本地高度值和校驗高度值,其中:該本地高度值指示已經從該區塊鏈網路節點獲得並儲存在該橋接設備上的區塊鏈區塊的數量;以及該校驗高度值指示已經由該橋接設備驗證的區塊鏈區塊的數量;其中,使用該橋接設備的該第三執行緒集來驗證儲存在該橋接設備中的該第一區塊鏈區塊集包括:確定該校驗高度值是否小於該本地高度值;以及 回應於確定該校驗高度值小於該本地高度值,驗證儲存在該橋接設備中並且尚未由該橋接設備驗證的區塊鏈區塊。
- 如請求項10所述的方法,其中,驗證儲存在該橋接設備中並且尚未由該橋接設備驗證的該區塊鏈區塊包括:確定該區塊鏈區塊中的一個或多個區塊鏈交易與交易請求之間的一致性。
- 如請求項10所述的方法,還包括:回應於驗證了儲存在該橋接設備上並且尚未由該橋接設備驗證的該區塊鏈區塊,確定該區塊鏈區塊是可信的;以及該橋接設備更新該校驗高度值。
- 如請求項10所述的方法,還包括:回應於確定該校驗高度值不小於該本地高度值,限制驗證儲存在該橋接設備中的區塊鏈區塊。
- 如請求項10所述的方法,還包括:該橋接設備檢測包括該橋接設備和該區塊鏈網路節點的系統中的系統錯誤;以及回應於檢測到該系統錯誤,基於該校驗高度值執行恢復處理,其中,執行該恢復處理包括:將該本地高度值設置為等於該校驗高度值;以及回應於確定該本地高度值小於指示儲存在該區塊鏈網路節點上的區塊鏈區塊的數量的遠端高度值,從該區塊鏈 網路節點獲得未儲存在該橋接設備上的至少一個區塊鏈區塊。
- 一種用於實現基於區塊鏈的容錯系統的裝置,該裝置包括用於執行請求項1至14中任一項所述的電腦實施方法的多個模組。
- 一種基於區塊鏈的容錯系統,包括:一個或多個處理器;以及耦接至該一個或多個處理器且其上儲存有指令的一個或多個電腦可讀記憶體,該指令能由該一個或多個處理器執行以執行如請求項1至14中任一項所述的電腦實施方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
WOPCT/CN2019/121346 | 2019-11-27 | ||
PCT/CN2019/121346 WO2020035095A2 (en) | 2019-11-27 | 2019-11-27 | Asynchronous processing of blockchain blocks |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202121226A TW202121226A (zh) | 2021-06-01 |
TWI759793B true TWI759793B (zh) | 2022-04-01 |
Family
ID=69525960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109123722A TWI759793B (zh) | 2019-11-27 | 2020-07-14 | 由橋接設備執行的電腦實施方法、基於區塊鏈的容錯系統及用於實現基於區塊鏈的容錯系統的裝置 |
Country Status (11)
Country | Link |
---|---|
US (2) | US11088875B2 (zh) |
EP (1) | EP3777030B1 (zh) |
JP (1) | JP6980131B2 (zh) |
KR (1) | KR102283744B1 (zh) |
CN (1) | CN111418183B (zh) |
AU (1) | AU2019321923B2 (zh) |
CA (1) | CA3098769C (zh) |
PH (1) | PH12020551810A1 (zh) |
SG (1) | SG11202010678VA (zh) |
TW (1) | TWI759793B (zh) |
WO (1) | WO2020035095A2 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3777030B1 (en) | 2019-11-27 | 2022-08-24 | Alipay (Hangzhou) Information Technology Co., Ltd. | Asynchronous processing of blockchain blocks |
CN111581214B (zh) * | 2020-05-07 | 2023-07-18 | 成都汉为科技有限公司 | 适用于能源区块链的并行merkle树构建与验证方法 |
EP3977390B1 (en) * | 2020-08-03 | 2023-12-06 | Alipay (Hangzhou) Information Technology Co., Ltd. | Blockchain transaction processing systems and methods |
CN115398397A (zh) * | 2020-08-03 | 2022-11-25 | 支付宝(杭州)信息技术有限公司 | 区块链交易处理***和方法 |
CN112968967B (zh) * | 2020-09-25 | 2023-05-19 | 支付宝(杭州)信息技术有限公司 | 区块同步方法及装置 |
CN113454597A (zh) | 2020-09-28 | 2021-09-28 | 支付宝(杭州)信息技术有限公司 | 区块链交易处理***和方法 |
CN113689296B (zh) * | 2021-08-30 | 2023-11-17 | 北京泛融科技有限公司 | 一种异步可信计算的合约调度方法、装置和电子设备 |
CN113505000B (zh) * | 2021-09-08 | 2021-12-21 | 广东卓启云链科技有限公司 | 区块链中的多线程处理方法、装置、***和存储介质 |
CN114066637B (zh) * | 2021-11-15 | 2024-07-09 | 深圳前海鸿泰源兴科技发展有限公司 | 一种基于物联网的金融分析***与操作方法 |
CN114363336B (zh) * | 2021-12-31 | 2024-06-14 | 支付宝(杭州)信息技术有限公司 | 一种启动/关闭区块链节点服务的方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301114A (zh) * | 2017-06-21 | 2017-10-27 | 郑州云海信息技术有限公司 | 一种云海os监控资源及其信息添加方法和装置 |
CN108259594A (zh) * | 2018-01-11 | 2018-07-06 | 杭州秘猿科技有限公司 | 一种基于区块链的数据交互***以及中继服务器 |
US20180349896A1 (en) * | 2017-06-05 | 2018-12-06 | Mastercard International Incorporated | Method and system for anonymization of electronic transactions via blockchain |
US20180375869A1 (en) * | 2017-06-27 | 2018-12-27 | Alibaba Group Holding Limited | Multi-blockchain network data processing |
US20190034465A1 (en) * | 2017-07-28 | 2019-01-31 | Hitachi, Ltd. | Blockchain logging of data from multiple systems |
TW201928743A (zh) * | 2017-12-15 | 2019-07-16 | 安地卡及巴布達商區塊鏈控股有限公司 | 用以基於證明驗證認證鏈外資料之系統及方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0969053A (ja) * | 1995-08-31 | 1997-03-11 | Toshiba Corp | メッセージ受信機構に於けるマルチスレッド制御方式及びキューイング方式 |
CA2260719A1 (en) * | 1998-02-04 | 1999-08-04 | Timestep Corporation | System and method for ciphering data |
US20180324681A1 (en) * | 2015-11-09 | 2018-11-08 | Telefonaktiebolaget Lm Ericsson (Publ) | First network node, wireless device, and mehthods therein, for handling a request for access in a wireless communications network |
US10523526B2 (en) * | 2016-12-28 | 2019-12-31 | Acronis International Gmbh | System and method for managing services and licenses using a blockchain network |
US10158479B2 (en) * | 2017-02-06 | 2018-12-18 | Northern Trust Corporation | Systems and methods for generating, uploading and executing code blocks within distributed network nodes |
CN107103054B (zh) * | 2017-04-12 | 2019-03-26 | 北京航空航天大学 | 一种私有区块链的智能合约异步执行存储***与实现方法 |
US20190238316A1 (en) * | 2018-01-31 | 2019-08-01 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing intelligent consensus, smart consensus, and weighted consensus models for distributed ledger technologies in a cloud based computing environment |
CA2995214A1 (en) * | 2018-02-14 | 2019-08-14 | Beijing Tiande Technologies Limited | A method of block building via pipeline parallelization |
US10754989B2 (en) * | 2018-03-27 | 2020-08-25 | International Business Machines Corporation | Runtime self-correction for blockchain ledgers |
CN111787072B (zh) | 2018-04-03 | 2023-02-28 | 创新先进技术有限公司 | 跨区块链的交互方法及装置、***、电子设备 |
CN108600353B (zh) * | 2018-04-12 | 2021-01-12 | 北京天德科技有限公司 | 一种区块链节点的并行块同步方法 |
CN110378694B (zh) * | 2018-05-21 | 2021-01-12 | 腾讯科技(深圳)有限公司 | 区块链数据处理方法、装置、计算机设备和存储介质 |
CN108681900A (zh) * | 2018-07-18 | 2018-10-19 | 众安信息技术服务有限公司 | 轻节点验证交易的方法 |
US10671315B2 (en) * | 2018-08-17 | 2020-06-02 | Bank Of America Corporation | Blockchain architecture for selective data restore and migration |
US10901957B2 (en) * | 2018-08-29 | 2021-01-26 | International Business Machines Corporation | Checkpointing for increasing efficiency of a blockchain |
CN109347917A (zh) * | 2018-09-14 | 2019-02-15 | 北京沃杰知识产权有限公司 | 区块链数据共识处理方法、***、存储介质和电子设备 |
CN109347941A (zh) * | 2018-10-10 | 2019-02-15 | 南京简诺特智能科技有限公司 | 一种基于区块链的数据共享平台及其实现方法 |
EP3777030B1 (en) | 2019-11-27 | 2022-08-24 | Alipay (Hangzhou) Information Technology Co., Ltd. | Asynchronous processing of blockchain blocks |
-
2019
- 2019-11-27 EP EP19849486.6A patent/EP3777030B1/en active Active
- 2019-11-27 AU AU2019321923A patent/AU2019321923B2/en active Active
- 2019-11-27 WO PCT/CN2019/121346 patent/WO2020035095A2/en unknown
- 2019-11-27 JP JP2020561069A patent/JP6980131B2/ja active Active
- 2019-11-27 CA CA3098769A patent/CA3098769C/en active Active
- 2019-11-27 KR KR1020207031170A patent/KR102283744B1/ko active IP Right Grant
- 2019-11-27 CN CN201980005780.XA patent/CN111418183B/zh active Active
- 2019-11-27 SG SG11202010678VA patent/SG11202010678VA/en unknown
-
2020
- 2020-07-14 TW TW109123722A patent/TWI759793B/zh active
- 2020-10-29 PH PH12020551810A patent/PH12020551810A1/en unknown
- 2020-10-30 US US17/085,018 patent/US11088875B2/en active Active
-
2021
- 2021-07-22 US US17/382,642 patent/US11394584B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180349896A1 (en) * | 2017-06-05 | 2018-12-06 | Mastercard International Incorporated | Method and system for anonymization of electronic transactions via blockchain |
CN107301114A (zh) * | 2017-06-21 | 2017-10-27 | 郑州云海信息技术有限公司 | 一种云海os监控资源及其信息添加方法和装置 |
US20180375869A1 (en) * | 2017-06-27 | 2018-12-27 | Alibaba Group Holding Limited | Multi-blockchain network data processing |
US20190034465A1 (en) * | 2017-07-28 | 2019-01-31 | Hitachi, Ltd. | Blockchain logging of data from multiple systems |
TW201928743A (zh) * | 2017-12-15 | 2019-07-16 | 安地卡及巴布達商區塊鏈控股有限公司 | 用以基於證明驗證認證鏈外資料之系統及方法 |
CN108259594A (zh) * | 2018-01-11 | 2018-07-06 | 杭州秘猿科技有限公司 | 一种基于区块链的数据交互***以及中继服务器 |
Also Published As
Publication number | Publication date |
---|---|
CA3098769C (en) | 2021-08-17 |
TW202121226A (zh) | 2021-06-01 |
US20210351958A1 (en) | 2021-11-11 |
CN111418183B (zh) | 2022-09-16 |
JP2021518962A (ja) | 2021-08-05 |
WO2020035095A3 (en) | 2020-10-08 |
AU2019321923B2 (en) | 2021-09-02 |
KR102283744B1 (ko) | 2021-08-02 |
WO2020035095A2 (en) | 2020-02-20 |
US20210160102A1 (en) | 2021-05-27 |
EP3777030A2 (en) | 2021-02-17 |
US11394584B2 (en) | 2022-07-19 |
CA3098769A1 (en) | 2020-02-20 |
PH12020551810A1 (en) | 2021-07-26 |
JP6980131B2 (ja) | 2021-12-15 |
EP3777030B1 (en) | 2022-08-24 |
KR20210067981A (ko) | 2021-06-08 |
CN111418183A (zh) | 2020-07-14 |
AU2019321923A1 (en) | 2021-06-10 |
SG11202010678VA (en) | 2020-11-27 |
US11088875B2 (en) | 2021-08-10 |
EP3777030A4 (en) | 2021-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI759793B (zh) | 由橋接設備執行的電腦實施方法、基於區塊鏈的容錯系統及用於實現基於區塊鏈的容錯系統的裝置 | |
TWI705690B (zh) | 分布式網路中進行主節點變更的系統 | |
US11271760B2 (en) | Managing blockchain-based centralized ledger systems | |
US10742423B1 (en) | Managing blockchain-based centralized ledger systems | |
US10904013B2 (en) | Managing blockchain-based centralized ledger systems | |
TW202040965A (zh) | 基於恢復的公開金鑰進行認證 | |
US10904017B2 (en) | Managing blockchain-based centralized ledger systems | |
KR20210058745A (ko) | 원장 시스템에서의 신뢰 포인트 관리 |