TWI759791B - 基於錯誤校正碼的共享區塊鏈資料儲存的方法、系統及裝置 - Google Patents
基於錯誤校正碼的共享區塊鏈資料儲存的方法、系統及裝置 Download PDFInfo
- Publication number
- TWI759791B TWI759791B TW109123543A TW109123543A TWI759791B TW I759791 B TWI759791 B TW I759791B TW 109123543 A TW109123543 A TW 109123543A TW 109123543 A TW109123543 A TW 109123543A TW I759791 B TWI759791 B TW I759791B
- Authority
- TW
- Taiwan
- Prior art keywords
- blockchain
- block
- nodes
- data
- node
- Prior art date
Links
Images
Classifications
-
- 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]
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- 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
-
- 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/602—Providing cryptographic facilities or services
-
- 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/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- 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
- 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
- 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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/34—Encoding or coding, e.g. Huffman coding or error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Accounting & Taxation (AREA)
- Economics (AREA)
- Development Economics (AREA)
- General Business, Economics & Management (AREA)
- Marketing (AREA)
- Medical Informatics (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Data Mining & Analysis (AREA)
- Power Engineering (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本文公開了用於儲存區塊鏈資料的方法、系統和裝置,包括編碼在電腦儲存媒體上的電腦程式。所述方法之一包括:接收來自區塊鏈節點的要從所述區塊鏈網路中被移除的請求;識別與所述區塊鏈節點儲存的區塊鏈資料相關聯的多個區塊;針對所述多個區塊中的每個區塊,確定所述區塊鏈網路中的除請求被移除的所述區塊鏈節點之外的剩餘區塊鏈節點的總數與所述剩餘區塊鏈節點可容忍的最大故障區塊鏈節點數之間的第一差、儲存從所述區塊的錯誤校正編碼(ECC)編碼版本劃分的資訊位元或冗餘位元資料集的所述剩餘區塊鏈節點的第一數量與儲存從所述區塊的ECC編碼版本劃分的冗餘位元資料集的所述剩餘區塊鏈節點的第二數量之間的第二差、以及所述第一差是否小於所述第二差,以及響應於確定所述第一差小於所述第二差,從所述區塊鏈節點中檢索與所述區塊相關聯的區塊鏈資料。
Description
本文涉及基於錯誤校正碼的共享區塊鏈資料儲存的資料安全性。
分散式帳本系統(DLS),也可稱為共識網路和/或區塊鏈網路,使參與的實體能夠安全地且不可篡改地儲存資料。在不引用任何特定用例的情況下,分散式帳本系統通常被稱為區塊鏈網路。區塊鏈網路的示例類型可以包括公有區塊鏈網路、私有區塊鏈網路和聯盟區塊鏈網路。聯盟區塊鏈網路針對選定的實體組群提供,該實體組群控制共識過程,並且所述聯盟區塊鏈網路包括存取控制層。
基於區塊鏈的程式可以由分散式計算平台執行。例如,分散式計算平台可以包括提供用於執行智慧合約的執行時環境的虛擬機。區塊鏈計算平台可以被視為基於交易
的狀態機。平台中的狀態資料可以集合成稱為世界狀態的全域共享狀態。世界狀態包括帳號位址和帳號狀態之間的映射。世界狀態可以被儲存在諸如默克爾帕特裡夏樹(MPT)的資料結構中。
除了狀態資料,區塊鏈網路還可以儲存其他類型的資料,例如區塊資料和索引資料。區塊資料可以包括區塊信頭和區塊體。區塊信頭可以包括特定區塊的身份資訊,並且區塊體可以包括該區塊確認的交易。隨著越來越多的交易進入區塊鏈,狀態資料和區塊資料的大小可能會變得非常大。在某些DLS中,每個節點都儲存整個區塊鏈副本,這會佔用大量儲存空間。這是因為所有區塊資料和狀態資料以回溯到記錄在區塊鏈的第一筆交易的方式被儲存。在某些DLS中,一些共享節點儲存整個區塊鏈副本,並與其他可能產生“資料不平等”的區塊鏈節點共享區塊鏈資料。也就是說,當資料在不同節點之間分佈不均時,當儲存大多數資料的節點出現故障時,資料安全性風險可能會很高。
因此,期望能夠實現一種在容忍故障節點存在的同時保持資料同等性和完整性的資料儲存方案。還期望資料儲存方案可針對區塊鏈網路所做的更改進行調整,並指示可帶來儲存節省最大化的資料處理方式。
所描述的標的的實施例可以包括單獨或組合的一個或
多個特徵。
例如,在一個實施例中,公開了一種電腦實現的用於在計算設備執行的可信執行環境(TEE)中處理區塊鏈資料的方法。計算設備接收來自區塊鏈節點的要從區塊鏈網路中被移除的請求,並且識別與所述區塊鏈節點儲存的區塊鏈資料相關聯的多個區塊。針對所述多個區塊中的每個區塊,所述計算設備確定:除請求被移除的所述區塊鏈節點之外的所述區塊鏈網路的剩餘區塊鏈節點的總數與所述剩餘區塊鏈節點可容忍的最大故障區塊鏈節點數之間的第一差、儲存從所述區塊的錯誤校正編碼(ECC)編碼版本中劃分的資訊位元或冗餘位元資料集的所述剩餘區塊鏈節點的第一數量與儲存從所述區塊的ECC編碼版本中劃分的冗餘位元資料集的所述剩餘區塊鏈節點的第二數量之間的第二差、以及所述第一差是否小於所述第二差。所述計算設備響應於確定所述第一差小於所述第二差,從所述區塊鏈節點檢索與所述區塊相關聯的區塊鏈資料。
在一些實施例中,所述計算設備還確定與該區塊相關聯的區塊鏈資料是該區塊本身,並使用ECC對該區塊進行編碼以生成編碼區塊,其中,對該區塊的編碼率等於剩餘區塊鏈節點所需的最小誠實區塊鏈節點數除以剩餘區塊鏈節點的總數,所需的最小誠實區塊鏈節點數加可容忍的最大故障區塊鏈節點數為剩餘區塊鏈節點的總數。
在一些實施例中,所述計算設備還確定與該區塊相關聯的區塊鏈資料是從區塊的ECC編碼版本劃分的資料集,
從多個區塊鏈節點檢索從該區塊的ECC編碼版本劃分的剩餘資料集;基於資料集和剩餘資料集對該區塊進行解碼,並使用ECC對該區塊進行編碼以生成編碼區塊,其中,對該區塊的編碼率等於剩餘區塊鏈節點所需的最小誠實區塊鏈節點數除以剩餘區塊鏈節點的總數,所需的最小誠實區塊鏈節點數加可容忍的最大故障區塊鏈節點數為剩餘區塊鏈節點的總數。
在一些實施例中,所述計算設備在使用ECC對區塊進行編碼之後,進一步將編碼區塊劃分為多個資料集,其中,所述多個資料集的數量等於區塊鏈網路中的區塊鏈節點的數量,計算所述多個資料集的雜湊值,並向區塊鏈網路中的區塊鏈節點分別發送多個資料集和雜湊值之一。
在一些實施例中,當計算設備的計算資源的利用率小於或等於預定值時,執行ECC。
在一些實施例中,ECC是透過向一個或多個區塊添加冗餘位元來執行的抹除編碼。
在一些實施例中,在檢索所述區塊鏈資料之後,計算設備還允許來自所述區塊鏈節點的要從所述區塊鏈網路中被移除的所述請求。
在一些實施例中,可容忍的最大故障區塊鏈節點數基於實用拜占庭容錯(PBFT)共識協定確定。
應該瞭解,根據本文的方法可以包括本文描述的方面和特徵的任意組合。也就是說,根據本文的方法不限於本文具體描述的方面和特徵的組合,還包括所提供的方面和
特徵的任意組合。
以下在附圖和描述中闡述了本文的一個或多個實施方式的細節。根據說明書和附圖以及申請專利範圍,本文的其他特徵和優點將顯現。
100:環境
102:區塊鏈網路
106:計算系統
108:計算系統
110:網路
200:架構
202:參與者系統
204:參與者系統
206:參與者系統
212:區塊鏈網路
214:節點
216:區塊鏈
216’,216”,216”’:副本
300:區塊資料編碼和雜湊處理
302:區塊鏈節點
304:區塊鏈節點
306:區塊鏈節點
308:區塊鏈節點
312:區塊
314:錯誤校正編碼
316:雜湊處理
400:資料儲存方案
500:區塊資料編碼和雜湊處理
502:區塊鏈節點
504:區塊鏈節點
506:區塊鏈節點
508:區塊鏈節點
512:資料添加到區塊
514:錯誤校正編碼
516:雜湊處理
600:處理
610:區塊鏈網路
620:可信節點
630a~d:區塊鏈節點
700:示例
800:共識處理
802:區塊鏈節點
804:區塊鏈節點
806:區塊鏈節點
808:區塊鏈節點
810:可信節點
812:請求階段
814:響應階段
816:提交階段
900:處理
902:步驟
904:步驟
906:步驟
908:步驟
1000:設備
1002:接收模組
1004:識別模組
1006:確定模組
1008:檢索模組
[圖1]描繪了可用於執行本文實施例的環境的示例。
[圖2]描繪了根據本文的實施例的架構的示例。
[圖3]描繪了根據本文的實施例的區塊資料的編碼和雜湊處理的示例。
[圖4]描繪了根據本文的實施例的資料儲存方案的示例。
[圖5]描繪了根據本文的實施例的區塊資料的編碼和雜湊處理的另一示例。
[圖6]描繪了根據本文的實施例的基於可信執行環境(TEE)的共享區塊鏈資料儲存過程的示例。
[圖7]描繪了根據本文的實施例的向區塊鏈網路添加區塊鏈節點的示例。
[圖8]描繪了根據本文的實施例的共識處理的示例。
[圖9]描繪了可以根據本文的實施例執行的過程的示例。
[圖10]描繪了根據本文的實施例的裝置的模組的示例。
各附圖中相同的元件符號和名稱表示相同的元件。
本文描述了在可信執行環境(TEE)中處理區塊鏈資料的技術。這些技術通常涉及,接收來自區塊鏈節點的要從區塊鏈網路中被移除的請求,識別與所述區塊鏈節點儲存的區塊鏈資料相關聯的多個區塊,針對所述多個區塊中的每個區塊確定:所述區塊鏈網路中的除請求被移除的區塊鏈節點之外的剩餘區塊鏈節點的總數與所述剩餘區塊鏈節點可容忍的最大故障區塊鏈節點數之間的第一差、儲存從所述區塊的錯誤校正編碼(error correction coding,ECC)編碼版本劃分的資訊位元或冗餘位元資料集的所述剩餘區塊鏈節點的第一數量與儲存從所述區塊的ECC編碼版本劃分的冗餘位元資料集的所述剩餘區塊鏈節點的第二數量之間的第二差,以及所述第一差是否小於所述第二差,以及響應於確定所述第一差小於所述第二差,從所述區塊鏈節點中檢索與所述區塊相關聯的區塊鏈資料。
如本文所述,區塊鏈網路可以儲存不同類型的資料,例如狀態資料、區塊資料和索引資料。區塊資料包括區塊鏈網路中的所有交易,由於新區塊不斷被添加到區塊鏈中,因此會佔用大量儲存空間。對於區塊鏈節點來說,每個區塊鏈節點儲存所有區塊資料、尤其是不經常被存取的區塊(例如,很久以前添加到區塊鏈中的區塊)的資料,這可能是低效率的。因此,本文的實施例設定每個區塊鏈節點儲存區塊中不經常被存取的部分,並且當需要時從其他
區塊鏈節點檢索剩餘區塊資料,以降低儲存消耗。但是,如果區塊鏈網路中存在故障節點或不可靠節點,則檢索到的資料不能被信任,並且可能會發生資料丟失。
在一些實施例中,區塊鏈節點可以執行ECC諸如抹除編碼(erasure coding)以對不經常存取的區塊進行編碼。然後,可以將ECC編碼區塊劃分為多個資料集。多個資料集可以被編入索引並分配給不同的區塊鏈節點,以基於資料儲存方案進行儲存。當區塊鏈節點需要來自不經常存取的區塊的資料以執行智慧合約時,區塊鏈節點可以基於索引從其他區塊鏈節點檢索對應的資料集,以形成ECC編碼區塊並恢復原始區塊。透過共享ECC編碼區塊,即使存在不可信資料或發生資料丟失,只要誠實的區塊鏈節點的百分比大於或等於ECC的編碼率,就可以恢復原始區塊資料。
在一些實施例中,代替在每個區塊鏈節點上執行ECC,可以在與可信節點相關聯的TEE下執行ECC。透過使用TEE技術,可信節點可以生成可驗證的編碼區塊,將編碼區塊劃分為資料集,並向每個區塊鏈節點發送資料集和資料儲存方案以進行儲存。在TEE下生成的資料集可以由區塊鏈節點進行驗證。然後,每個區塊鏈節點可以基於資料儲存方案儲存一部分資料集,以節省儲存空間。透過具有啟用TEE的可信節點,ECC僅需要執行一次,而不必由每個區塊鏈節點分別執行。這樣,區塊鏈網路的總體計算資源消耗可以顯著降低。
在一些實施例中,新的區塊鏈節點作為全節點被添加
到區塊鏈網路。新添加的全節點儲存其他節點未共享的附加區塊副本。所述附加區塊副本可以在儲存方面增加區塊鏈網路的冗餘。可信節點可以使用全節點中儲存的區塊副本對該區塊再次執行ECC,並向區塊鏈節點發送從ECC編碼區塊劃分的資料集,以替換原始區塊鏈資料。由於不同區塊的冗餘副本數量可能不同,因此再次執行ECC(re-ECC)可以導致不同的儲存節省。因此,可以基於每個區塊的冗餘度來確定每個區塊的re-ECC優先級,從而可以對具有較高re-ECC優先級的區塊執行re-ECC操作以實現更大的儲存節省。
在一些實施例中,當從區塊鏈網路删除區塊鏈節點時。可信節點可以再次執行ECC,以使誠實區塊鏈節點的百分比可以大於或等於ECC的編碼率,從而確保資料安全。本文的實施例提供用於確定最大編碼率的方法,該最大編碼率可以被用來安全地執行re-ECC。
執行re-ECC之後,可信節點可以啟動與區塊鏈節點的共識處理,以基於re-ECC對新的資料儲存方案達成協定。在達成共識後,區塊鏈節點可以安全地删除原始資料,並遵循新的資料儲存方案進行區塊鏈資料的儲存和恢復。
本文中描述的技術產生若干技術效果。例如,本標的的實施例減輕了區塊鏈網路的儲存資源的負擔,同時維持了區塊鏈節點的計算效率和資料平等性。對於不經常存取的區塊(例如,較舊的區塊),可以透過在每個區塊鏈節點上僅保存一部分ECC編碼區塊(本文也稱為編碼區塊)並當
需要時從其他區塊鏈節點檢索所述編碼區塊的剩餘區塊,來節省區塊鏈節點的儲存資源。
在一些實施例中,新的區塊鏈節點作為全節點被添加到區塊鏈網路。新添加的全節點儲存其他節點未共享的附加區塊副本。所述附加區塊副本在儲存方面增加區塊鏈網路的冗餘。本文的實施例提供了對區塊的re-ECC和與其他區塊鏈節點共享從ECC編碼區塊劃分的資料集,以降低儲存消耗的技術。該技術特別適用於儲存資源有限的區塊鏈網路。區塊鏈節點也可以在CPU使用率低時再次執行ECC,以更好地利用計算資源。
在一些實施例中,透過在與可信節點相關聯的TEE中執行ECC,可信節點可以生成編碼區塊,將編碼區塊劃分為資料集,並向每個區塊鏈節點發送資料集和資料儲存方案以進行儲存。在TEE下生成的資料集可以被區塊鏈節點驗證,以確保資料的可信性。然後,每個區塊鏈節點可以基於資料儲存方案儲存一部分資料集,而不是整個區塊,以節省儲存空間。透過具有啟用TEE的可信節點,ECC僅需要執行一次,而不必由每個區塊鏈節點分別執行。這樣,區塊鏈網路的總體計算資源消耗可以降低。
在一些實施例中,可以在將全區塊鏈節點添加到區塊鏈網路之後,再次執行ECC。基於區塊鏈網路可容忍的故障區塊鏈節點的最大數量,可以以更高的編碼率執行ECC,從而提高儲存效率。然而,對區塊鏈的每個區塊執行re-ECC會消耗大量的計算資源,所以可以基於re-ECC的
儲存節省為,確定每個區塊的re-ECC優先級。這樣,re-ECC可以對於具有較高re-ECC優先級的區塊給予優先,以實現更大的儲存節省,同時保持低計算資源消耗。
在一些實施例中,可以從區塊鏈網路中删除區塊鏈節點。可以再次執行ECC,以使誠實區塊鏈節點的百分比仍可以大於或等於ECC的編碼率,以確保資料安全。本文實施例提供確定編碼率的方法,該編碼率可被安全地用於re-ECC並提高用以達成有效區塊鏈資料儲存的共識的處理的效率。
為本文的實施例提供進一步的背景,如上所述,分散式帳本系統(DLS),也可以稱為共識網路(例如,由點對點(Peer-to-Peer)節點組成)和區塊鏈網路,使參與實體能夠安全且不可篡改地進行交易並儲存資料。儘管術語“區塊鏈”通常與特定網路和/或用例相關,但本文所使用的區塊鏈一般指在不參考任何特定用例的情況下的DLS。
區塊鏈是以交易是不可篡改的方式儲存交易的資料結構。因此,記錄在區塊鏈上的交易是可靠和值得信賴的。區塊鏈包括一個或多個區塊。鏈中的每個區塊透過包括緊鄰其之前的前一區塊的加密雜湊值(cryptographic hash)鏈接到該前一區塊。每個區塊還包括時間戳、自身的加密雜湊值以及一個或多個交易。已經由區塊鏈網路的節點驗證的交易經雜湊處理並編碼成默克爾(Merkle)樹。Merkle樹是資料結構,其中樹的葉節點處的資料是經雜湊處理的,並且在該樹的每個分支中的所有雜湊值在該分支的根處連
接。此過程沿著樹持續一直到整個樹的根,在整個樹的根處儲存了代表樹中所有資料的雜湊值。聲稱是儲存在樹中的交易的雜湊值可以透過確定其是否與樹的結構一致而被快速驗證。
區塊鏈是用於儲存交易的去中心化或至少部分去中心化的資料結構,而區塊鏈網路是透過廣播、驗證和確認交易等來管理、更新和維護一個或多個區塊鏈的計算節點的網路。如上所述,區塊鏈網路可提供為公有區塊鏈網路、私有區塊鏈網路或聯盟區塊鏈網路。在本文中參考聯盟區塊鏈網路進一步詳細描述本文的實施例。然而,可以預期,可以在任何適當類型的區塊鏈網路中實現本文的實施例。
通常,聯盟區塊鏈網路在參與的實體中是私有的。在聯盟區塊鏈網路中,共識過程由授權的節點集控制,該節點集可以被稱為共識節點,一個或多個共識節點由相應實體(例如,金融機構、保險公司)操作。例如,由十(10)個實體(例如,金融機構、保險公司)組成的聯盟可以操作聯盟區塊鏈網路,每個實體可以操作聯盟區塊鏈網路中的至少一個節點。
在一些示例中,在聯盟區塊鏈網路內,提供全域區塊鏈作為跨所有節點複製的區塊鏈。也就是說,所有的共識節點相對於全域區塊鏈而言處於完全共識狀態。為了達成共識(例如,同意將區塊添加到區塊鏈),在聯盟區塊鏈網路內實施共識協定。例如,聯盟區塊鏈網路可以實施實用
拜佔庭容錯(PBFT)共識,下面將進一步詳細描述。
圖1是示出了可以用於執行本文實施例的環境100的示例的圖。在一些示例中,環境100使得實體能夠參與聯盟區塊鏈網路102。環境100包括計算系統106、108和網路110。在一些示例中,網路110包括區域網路(LAN)、廣域網路(WAN)、網際網路或其組合,並且連接網站、用戶設備(例如,計算設備)和後端系統。在一些示例中,可以透過有線和/或無線通信鏈路來存取網路110。在一些示例中,網路110使得能夠與聯盟區塊鏈網路102通信或能夠在聯盟區塊鏈網路102內部通信。通常,網路110表示一個或多個通信網路。在一些情況下,計算系統106、108可以是雲端計算系統(未示出)的節點,或者每個計算系統106、108可以是單獨的雲端計算系統,其包括透過網路互連並且用作分散式處理系統的多個電腦。
在所描述的示例中,計算系統106、108可以各自包括能夠作為節點參與至聯盟區塊鏈網路102中的任何適當計算系統。計算設備的示例包括但不限於伺服器、桌上型電腦、膝上型電腦、平板計算設備和智慧電話。在一些示例中,計算系統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中,以包括主共識節點和備共識節點的序列提供共識節點。主共識節點被周期性地改變,透過區塊鏈網路內的所有共識節點對區塊鏈網路的全域狀態達成一致,將交易添加到區塊鏈中。在該處理中,消息在共識節點之間傳輸,並且每個共識節點證明消息是從指定的對等節點(peer node)接收的,並驗證在傳輸期間消息未被修改。
在PBFT中,共識協定是在所有共識節點以相同的狀態開始的情況下分多個階段提供的。首先,客戶端向主共識節點發送調用服務操作(例如,在區塊鏈網路內執行交易)的請求。響應於接收到請求,主共識節點將請求多播到備共識節點。備共識節點執行請求,並且各自向客戶端發送回復。客戶端等待直到接收到臨限值數量的回復。在一些示例中,客戶端等待直到接收到f+1個回復,其中f是區塊鏈網路內可以容忍的故障共識節點的最大數量。在PBFT中,故障共識節點的最大數量必須小於共識節點總數的1/3。最終結果是,足夠數量的共識節點就將記錄添加到區塊鏈的順序達成一致,並且該記錄或被接受或被拒絕。
在一些區塊鏈網路中,實施密碼學來維護交易的隱
私。例如,如果兩個節點想要保持交易隱私,以使得區塊鏈網路中的其他節點不能夠看出交易的細節,則這兩個節點可以對交易資料進行加密處理。加密處理的示例包括但不限於對稱加密和非對稱加密。對稱加密是指使用單個密鑰既進行加密(從明文生成密文)又進行解密(從密文生成明文)的加密過程。在對稱加密中,同一密鑰對於多個節點可用,因此每個節點都可以對交易資料進行加密/解密。
非對稱加密使用密鑰對,每個密鑰對包括私鑰和公鑰,私鑰僅對於相應節點是已知的,而公鑰對於區塊鏈網路中的任何或所有其他節點是已知的。節點可以使用另一個節點的公鑰來加密資料,並且加密的資料可以使用其他節點的私鑰被解密。例如,再次參考圖2,參與者A可以使用參與者B的公鑰來加密資料,並將加密的資料發送給參與者B。參與者B可以使用其私鑰來解密該加密的資料(密文)並提取原始資料(明文)。使用節點的公鑰加密的消息只能使用該節點的私鑰解密。
非對稱加密用於提供數位簽名,這使得交易中的參與者能夠確認交易中的其他參與者以及交易的有效性。例如,節點可以對消息進行數位簽名,而另一個節點可以根據參與者A的該數位簽名來確認該消息是由該節點發送的。數位簽名也可以用於確保消息在傳輸過程中不被篡改。例如,再次參考圖2,參與者A將向參與者B發送消息。參與者A生成該消息的雜湊值,然後使用其私鑰加密該雜湊值以提供作為加密雜湊值的數位簽名。參與者A將
該數位簽名附加到該消息上,並將該具有數位簽名的消息發送給參與者B。參與者B使用參與者A的公鑰解密該數位簽名,並提取雜湊值。參與者B對該消息進行雜湊處理並比較雜湊值。如果雜湊值相同,則參與者B可以確認該消息確實來自參與者A,且未被篡改。
在一些實施例中,區塊鏈網路的節點和/或與區塊鏈網路通信的節點可以使用TEE(可信執行環境)來操作。在較高層面上,TEE是硬體(一個或多個處理器、儲存器)內與硬體的作業環境(例如,作業系統(OS)、基本輸入/輸出系統(BIOS))隔離的可信環境。更詳細地,TEE是確保主處理器中執行的碼和加載的資料的機密性和完整性的處理器的獨立安全區域。在處理器內,TEE與OS平行執行。至少部分所謂的可信應用(TA)在TEE內執行,並且可以存取處理器和儲存器。透過TEE,TA被保護免受主OS中執行的其他應用的影響。此外,TEE以密碼學方式將TEE內的TA彼此隔離。
TEE的示例包括由美國加利福尼亞州聖克拉拉的英特爾公司提供的軟體保護擴展(Software Guard Extensions,SGX)。儘管本文以示例的方式討論了SGX,但可以預期本文的實施例可以使用任何適當的TEE來實現。
SGX提供基於硬體的TEE。在SGX中,可信硬體是中央處理器(CPU)的核心,實體儲存器的一部分被隔離以保護選擇的碼和資料。儲存器的隔離部分被稱為飛地(enclave)。更具體地,飛地被提供為儲存器中的飛地頁面
快取(EPC),並被映射到應用位址空間。儲存器(例如,DRAM)包括用於SGX的保留隨機儲存器(PRM)。PRM是最低BIOS級別的連續儲存空間,並且不能被任何軟體存取。每個EPC都是儲存器集(例如4KB),其由OS分配以在PRM中加載應用資料和碼。EPC元資料(EPCM)是各個EPC的入口位址,並且確保每個EPC只能由一個飛地共享。也就是說,單個飛地可以使用多個EPC,而一個EPC專用於單個飛地。
在執行TA期間,處理器在存取儲存在飛地中的資料時以所謂的飛地模式操作。飛地模式下的操作對每個儲存器存取强制執行額外的硬體檢查。在SGX中,TA被編譯為可信部分和不可信部分。可信部分不可被例如OS、BIOS、特權系統碼、虛擬機管理器(VMM)、系統管理模式(SMM)等存取。在操作中,TA在儲存器的PRM內執行並創建飛地。飛地內的可信部分執行的可信函數被不可信部分調用,在飛地內執行的碼將資料視為明文資料(未加密),並且對資料的外部存取被拒絕。可信部分提供對所述調用的加密響應,TA繼續執行。
可執行認證處理以驗證預期碼(例如,TA的可信部分)是否在SGX提供的TEE內安全執行。通常,認證處理包括TA接收來自質詢者(例如,區塊鏈網路中的另一個節點、區塊鏈網路的密鑰管理系統(KMS))的認證請求。作為響應,TA要求其飛地提供遠程認證,也稱為報價(quote)。提供遠程認證包括從飛地向所謂的報價飛地發送本地認
證,該報價飛地驗證本地認證並透過使用非對稱認證密鑰對所述本地認證簽名,從而將所述本地認證轉換為遠程認證。該遠程認證(報價)被提供給質詢者(例如,區塊鏈網路的KMS)。
質詢者使用認證驗證服務來驗證遠程認證。對於SGX,英特爾提供英特爾認證服務(IAS),其接收來自質詢者的遠程認證並驗證該遠程認證。更具體地,IAS處理該遠程認證並提供報告(例如,認證驗證報告(AVR)),該報告指示該遠程認證是否通過驗證。如果未通過驗證,則可以指示錯誤。如果通過驗證(例如,預期碼在TEE中安全地執行),質詢者可以發起或繼續與TA互動。例如,響應於所述驗證,KMS(作為質詢者)可以對執行TEE的節點(例如,透過密鑰交換處理,諸如橢圓曲線Diffie-Hellman(ECDH))發佈非對稱加密密鑰(例如,公鑰和私鑰對),以使這些節點能夠與其他節點和/或客戶端安全通信。
圖3描繪了根據本文的實施例的區塊資料的編碼和雜湊處理300的示例。在此示例中,描繪了4個區塊鏈節點的區塊鏈網路,4個區塊鏈節點是區塊鏈節點302、304、306和308。以區塊鏈節點302為例來說明編碼和雜湊處理300,區塊鏈節點302可以將區塊鏈網路的區塊資料儲存到區塊312的區塊體中。在所示的示例中,區塊資料被儲存在區塊100中。之後,區塊鏈節點302可以與其他區塊鏈節點304、306和308一起參與共識處理。在共識處理中,區
塊鏈節點302可執行共識演算法,例如工作量證明(PoW)或權益證明(PoS),以在區塊鏈上創建相應的區塊。
在一些實施例中,區塊鏈節點302可以識別一個或多個不經常存取的區塊。實際上,區塊已經創建的時間越長,對應的區塊資料為執行諸如智慧合約的操作所需要的可能性就越小。當本地儲存的區塊是針對預定時間量已經在區塊鏈上創建的歷史區塊時,區塊鏈節點302可以確定本地儲存的區塊不常被存取。例如,預定時間量可以是創建區塊的平均時間的一倍或兩倍。在一些示例中,當區塊中的區塊資料在預定時間量內沒有被檢索用以執行智慧合約時,該區塊也可以被確定為不經常被存取。
在識別不經常存取的區塊之後,區塊鏈節點302可以對每個不經常被存取的區塊的區塊體中的區塊資料執行ECC 314。透過向資料添加冗餘位元(也稱為冗餘),ECC可用於控制不可靠傳輸中的資料錯誤或丟失。冗餘位元可以是許多原始資訊位元的複雜函數。冗餘使得資料的錯誤或丟失可以被糾正,而無需再次發送資料。原始資訊可能會或可能不會真正地出現在編碼輸出中。編碼輸出中包括未修改的原始資訊的ECC碼被稱為系統ECC碼,而那些不包括的被稱為非系統ECC碼。可以透過ECC糾正的錯誤或丟失位元的最大比例由ECC碼的設計確定。因此,不同的錯誤校正編碼用於不同的條件。通常,更强的ECC碼會引起更多的冗餘,這會增加碼的儲存消耗,並降低通信效率,如果要傳輸編碼的資訊的話。
ECC的一個示例可以是抹除編碼。使用抹除編碼,可以將k個符號的消息編碼為具有n個符號的碼字,其中k和n是自然數,並且k<n。該消息可以從n-符號碼字的子集中被恢復。分數r=k/n是抹除編碼的編碼率。
透過使用ECC,每個區塊鏈節點可以儲存一部分編碼區塊資料,並在需要時從其他區塊鏈節點檢索剩餘的編碼區塊資料。在一些實施例中,可以當區塊鏈節點302的計算資源的利用率低於預定值(例如40%)時執行ECC。這樣,可以減少對區塊鏈節點302上的其他計算操作的干擾。在一些實施例中,可以當區塊鏈節點302的儲存空間的使用率大於或等於預定百分比時執行ECC,使得在ECC之後,編碼區塊資料的某些部分可以被删除以釋放儲存空間。
再次以區塊100為例,假設區塊鏈節點302將區塊100確定為不經常存取的區塊並執行ECC 314,則ECC編碼資料可以基於資料儲存方案被劃分為多個資料集。可以將資料儲存方案提供為一組電腦可執行指令,這些指令定義了將資料儲存在區塊鏈網路中的位置和/或方式。在一些示例中,資料儲存方案可以由具有權限證明的可信節點提供並由區塊鏈節點同意。在一些示例中,資料儲存方案可以由區塊鏈節點透過共識來被同意。通常,資料儲存方案可以包括一個或多個預定規則,用於基於區塊鏈網路中的區塊鏈節點的數量將編碼資料劃分為多個資料集。所述資料儲存方案還可以包括要由每個區塊鏈節點儲存或進行雜湊
處理的多個資料集中的一個或多個資料集的分配。為了確保資料同等,資料儲存方案可以包括要由區塊鏈網路的每個區塊鏈節點儲存的至少一個資料集的分配。
在圖3所示的示例中,區塊100的編碼區塊資料被分為四個資料集,分別是Data1、Data2、Data3和Vdata1,每個資料集將由區塊鏈節點302、304、306和308中的一個節點儲存。Vdata1可以代表用於錯誤校正的ECC的冗餘位元。根據資料儲存方案,Data1經選擇由區塊鏈節點302儲存。Data2、Data3和Vdata1經選擇分別進行雜湊處理316以分別產生雜湊值Dhash2、Dhash3和Vhash1。根據本文的實施例,當區塊鏈網路具有四個以上的節點時,可以將編碼資料劃分為四個以上資料集。在一些示例中,每個區塊鏈節點可以儲存一個以上資料集,並對分配給其他節點儲存的剩餘資料集進行雜湊處理。
現在參考圖4,圖4描繪了根據本文的實施例的資料儲存方案400的示例。如前所述,根據資料儲存方案400,Data1經選擇由區塊鏈節點302儲存。基於資料儲存方案400,區塊鏈節點304儲存Data2並分別對Data1、Data3和Vdata1進行雜湊處理以分別生成雜湊值Dhash1、Dhash3和Vhash1。區塊鏈節點306儲存Data3並分別對Data1、Data2和Vdata1進行雜湊處理,以分別生成雜湊值Dhash1、Dhash2和Vhash1。區塊鏈節點308儲存Vdata1並分別對Data1、Data2和Data3進行雜湊處理以分別生成雜湊值Dhash1、Dhash2和Dhash3。
再次參考圖3,因為雜湊值對應於相同區塊的編碼資料集,所以它們可以透過該區塊的區塊ID被索引。例如,區塊鏈節點302可以用區塊ID 100索引與區塊100相關聯的Data1、Dhash1、Dhash2和Vhash1。這樣,區塊鏈節點302可以使用索引的區塊ID將雜湊值映射到其對應的區塊。在圖6的描述中討論了索引資料集和雜湊值的更詳細的示例。
應當理解,根據資料儲存方案,可以為區塊鏈節點302、304、306和308做出其他資料儲存方案。在一些示例中,可以將區塊100的編碼區塊資料劃分為四個以上資料集。應當理解,根據資料儲存方案,可以為區塊鏈節點502、504、506和508做出其他資料儲存方案。
在生成並儲存Dhash2、Dhash3和Vhash1之後,區塊鏈節點302可以從儲存中删除Data2、Data3和Vdata1以節省儲存空間。這樣,對於每個區塊,區塊鏈節點302僅儲存一個ECC編碼資料集(即,Data1)和三個雜湊值(即,Dhash2、Dhash3和Vhash1),而不是整個區塊。這樣,可以大大減少儲存空間。類似於區塊100,可以對由區塊鏈節點304、306和308儲存的其他不經常存取的區塊執行編碼和雜湊處理。
當區塊鏈節點302確定執行智慧合約需要區塊100的區塊資料時,它可以根據資料儲存方案分別從區塊鏈節點304、306和308檢索Data2、Data3和Vdata1。為了從其他區塊鏈節點304、306和308檢索資料集,區塊鏈節點302可
以根據資料儲存方案發送與將要檢索的資料集相對應的雜湊值。
例如,為了檢索Data2,區塊鏈節點302可以向區塊鏈節點304發送Dhash2。如果區塊鏈節點304儲存有Data2,則其可以響應於接收Dhash2而將Data2發送回區塊鏈節點302。接收到來自區塊鏈節點304的Data2之後,區塊鏈節點302可以對接收的資料集進行雜湊處理,並比較雜湊值與Dhash2。如果雜湊值與Dhash2相同,則區塊鏈節點302可以確定接收的資料集是可信的。否則,可以確定接收的資料集是不可信的。當接收的資料集被確定為不可信時,區塊鏈節點302可以報告區塊鏈節點304為故障節點(或拜佔庭節點)。如果區塊鏈節點302接收的不可信資料的百分比小於或等於可以由ECC校正的錯誤或丟失位元的最大比例,則可以從本地儲存和接收的資料集恢復區塊100。
如上所述,區塊鏈網路可以儲存不同類型的資料,例如狀態資料、區塊資料和索引資料。狀態資料通常儲存為內容尋址狀態樹,例如MPT或固定深度默克爾樹(FDMT)。內容尋址狀態樹本質上是增加的。即,透過添加新的樹結構而不是僅更新現有狀態樹的值來反映帳號狀態的變化。因此,當將區塊連續添加到區塊鏈時,內容尋址狀態樹的大小會變得非常大。在FDMT儲存方案下,狀態資料可以被分為與當前區塊關聯的當前狀態資料和與區塊鏈的所有區塊關聯的歷史狀態資料。FDMT中的大多數資料是不經常使用的歷史狀態資料。就儲存資源的使用而
言,將所有歷史狀態資料儲存在每個共識節點中可能效率很低。
在一些實施例中,類似於編碼和共享區塊資料,ECC諸如抹除編碼可以用於編碼歷史狀態資料。區塊鏈網路中的每個共識節點僅儲存部分歷史狀態資料,並從其他節點檢索剩餘的歷史狀態資料以減少儲存消耗。透過共享ECC編碼的歷史狀態資料而不是原始歷史狀態資料,即使存在不可信資料或發生資料丟失,只要不可信資料或資料丟失的百分比小於或等於能夠由ECC糾正的錯誤或丟失位元的最大比例,就可以恢復原始歷史狀態資料。
圖5描繪了根據本文的實施例的區塊資料的編碼和雜湊處理500的另一示例。在此示例中,描繪了4個區塊鏈節點的區塊鏈網路,4個區塊鏈節點是區塊鏈節點502、504、506和508。以區塊鏈節點502為例來說明編碼及雜湊處理500,當新的區塊資料被添加至區塊512時,區塊鏈節點502可執行ECC 514以對區塊資料進行編碼。與在圖3的描述中討論的編碼和雜湊處理300相比,當區塊資料被寫入區塊時,區塊鏈節點502對區塊資料執行ECC。這樣,區塊鏈節點502不需要儲存整個區塊,而是可以基於資料儲存方案儲存ECC編碼區塊資料的選定部分和與剩餘的編碼區塊資料相對應的雜湊值。該編碼和雜湊處理500可以特別適合於區塊鏈節點502具有低磁碟空間的情況。
在一些實施例中,代替將資料儲存為區塊,區塊鏈節點502可以儲存預寫日誌(WAL)文件或其他類似的前滾日
誌文件(roll-forward journal file)。預寫日誌文件可以記錄已經被區塊鏈節點502提交但尚未被儲存的區塊資料。使用預寫日誌文件,原始的區塊鏈資料可以被保存在資料庫文件中,而區塊鏈資料的更改可以被寫入單獨的預寫日誌文件中。能夠利用更改提交前滾,而無需寫入原始區塊鏈資料。這種安排允許在更改被提交至預寫日誌文件時繼續進行區塊鏈資料的操作。透過使用預寫日誌文件儲存透過編碼和雜湊處理500進行的更改,區塊鏈節點502可以指示其具有用於共識的區塊資料,同時在適當的時候在後台執行ECC。這樣,當區塊鏈節點502的計算資源的利用率較低時可以執行ECC,以降低對計算效率的影響或者共識處理的延時。
在一些實施例中,區塊鏈節點502可以將區塊資料儲存在緩衝器中。當資料的大小大於預定臨限值或當緩衝器已滿時,區塊鏈節點502可以對緩衝器中儲存的區塊資料執行ECC。在執行ECC之後,區塊鏈節點502可以遵循編碼和雜湊處理500以儲存編碼區塊資料和雜湊值,如以下描述中所討論的。
再次以區塊100為例,在執行ECC之後,可以基於資料儲存方案將編碼區塊資料劃分為多個資料集。類似於圖3的描述中討論的示例,區塊100的編碼區塊資料可以被分為四個資料集,分別是Data1、Data2、Data3和Vdata1,每個資料集將由區塊鏈節點502、504、506和508中的一個節點儲存。Vdata1可以代表ECC的冗餘位元。根據資料儲存
方案,Data1經選擇由區塊鏈節點502儲存。Data2、Data3和Vdata1經選擇分別進行雜湊處理516以分別產生雜湊值Dhash2、Dhash3和Vhash1。
雜湊值可以透過雜湊值的對應區塊的區塊ID被索引。例如,區塊鏈節點502可以用區塊ID 100索引與區塊100相關聯的Data1、Dhash1、Dhash2和Vhash1。這樣,區塊鏈節點502可以使用索引的區塊ID將雜湊值映射到其對應的區塊。在圖6的描述中討論了索引資料集和雜湊值的更詳細的示例。
應當理解,根據資料儲存方案,可以為一個或多個區塊鏈節點502、504、506和508做出其他資料儲存方案。例如,可以將區塊100的編碼區塊資料劃分為四個以上資料集。區塊鏈節點502、504、506和508中的每一個可以儲存一個以上資料集,並對其他節點儲存的剩餘資料集進行雜湊處理。
在生成Dhash2、Dhash3和Vhash1之後,區塊鏈節點502可以儲存Data1、Dhash2、Dhash3和Vhash1並從儲存中删除Data2、Data3和Vdata1以節省儲存空間。這樣,對於區塊鏈中的每個區塊,區塊鏈節點502僅儲存ECC編碼區塊資料的一個資料集(即,Data1)和三個雜湊值(即,Dhash2、Dhash3和Vhash1),而不是儲存原始區塊資料,從而節省儲存空間。當區塊鏈節點502確定執行智慧合約需要區塊100的區塊資料時,它可以根據資料儲存方案分別從區塊鏈節點504、506和508檢索Data2、Data3和
Vdata1。
為了從其他區塊鏈節點504、506和508檢索資料集,區塊鏈節點502可以根據資料儲存方案發送與將要檢索的資料集相對應的雜湊值。例如,為了檢索Data2,區塊鏈節點502可以向區塊鏈節點504發送Dhash2。如果區塊鏈節點504儲存有Data2,則其可以響應於接收Dhash2而將Data2發送回區塊鏈節點502。接收到來自區塊鏈節點504的Data2之後,區塊鏈節點502可以對接收的資料集進行雜湊處理,並比較雜湊值與Dhash2。如果雜湊值與Dhash2相同,則區塊鏈節點502可以確定接收的資料集是可信的。否則,接收的資料集可以被確定為不可信。當接收的資料集被確定為不可信時,區塊鏈節點502可以報告區塊鏈節點504為故障節點(或拜佔庭節點)。如果區塊鏈節點502接收的不可信資料的百分比小於或等於可以由ECC校正的錯誤或丟失位元的最大比例,則可以從本地儲存和接收的資料集恢復區塊100。
如前所述,透過執行編碼和雜湊處理,區塊鏈資料可以被ECC編碼並被劃分為多個資料集。為了節省儲存空間,每個區塊鏈節點可以基於資料儲存方案儲存多個資料集中的一個或多個以及剩餘資料集的雜湊值。儲存的資料集和雜湊值可以使用區塊ID進行索引,以便區塊鏈節點從其他節點檢索資料集以恢復原始資料。
圖6描繪了根據本文的實施例的基於TEE的共享區塊鏈資料儲存的處理600的示例。在該示例中,假設區塊鏈
網路610包括4個區塊鏈節點,它們是區塊鏈節點630a-d。區塊鏈網路610還包括承載TEE的可信節點620或與承載TEE的可信節點620通信。可信節點620可以是計算設備、計算系統或雲端計算系統。如前所述,TEE可以由與一個或多個資料處理器的作業系統隔離的可信節點620的一個或多個資料處理器承載,並且被配置為在一個或多個資料處理器內提供碼執行和資料加載的增强的機密性和完整性。
在一些實施例中,可信節點620可以是具有權限證明(POA)的節點。在一些示例中,可以基於可信節點620的狀態提供POA。例如,可信節點620可以是由區塊鏈網路610的部署方管理的節點。在這種情況下,可信節點620可以是區塊鏈網路610的一部分,也可以在區塊鏈網路610的外部。在某些示例中,可以透過投票獲得POA。例如,假設區塊鏈網路包括3f+1個節點(在圖6所示的示例中,f=1,當可信節點620參與區塊鏈網路610的共識時),在PBFT共識協定下,可以容忍的故障共識節點或拜佔庭節點(即,不能行動或惡意行動的節點)最多為f。這樣,如果2f+1個節點投票(由其各自的數位簽名背書的)選擇可信節點620,則接收的2f+1票可以用作可信節點620的POA。
如上所述,TA(諸如啟用SGX的應用)可以包括可信組件(或飛地組件)和不可信組件(應用組件)。應用組件位於TEE外部,可以透過飛地介面功能存取TEE的TCB。在一些實施方案中,這些飛地介面功能是由應用組件使用的應
用程式介面(API)。應用組件可以使用API來進行“ecalls”以調用TEE中的虛擬機以執行智慧合約。虛擬機可以是執行以特定程式語言或者諸如位元流(或稱為比特流)的二進制格式編碼的程式指令的軟體程式。在一些示例中,虛擬機可以提供程式指令和執行虛擬機的計算設備的底層硬體之間的抽象層。這樣的配置可以允許相同的程式指令以相同的方式在具有不同硬體的不同計算設備上執行。
在一些實施例中,調用(ecall)可以由應用組件進行以執行智慧合約,該智慧合約用於根據在圖3和圖5的描述中討論的編碼和雜湊處理300和500執行一個或多個軟體指令。然後,TEE可以在整個處理300、500的多個步驟中發生的多個事件期間執行資料處理。與僅基於處理300、500的最終結果的記錄相比,從與處理300、500的多個步驟相關聯的事件得到的資料的經驗證的記錄更可靠。換句話說,透過使用TEE技術,對於需要被驗證的每段資料,不僅驗證這段資料本身,而且還驗證包括生成該段資料的多個步驟的處理。這確保了最後一段資料是高度可靠的,因為該處理的每個步驟都被欺詐性地修改的機率很小。這樣,如果在TEE 620下執行,則編碼和雜湊處理300、500可以被執行一次。計算結果基於處理300、500的步驟是可驗證的,並且可以被區塊鏈節點630a-d信任和使用。相比之下,在沒有TEE的情況下,每個區塊鏈節點都需要單獨執行編碼和雜湊處理300或500,這會顯著增加整個區塊鏈網路的計算資源消耗。
在一些實施例中,一個或多個區塊鏈節點603a-d可以向可信節點620發送區塊鏈資料。區塊鏈資料可以包括不經常存取的區塊,如在圖3的描述中所討論的。可信節點620可以基於資料儲存方案來調用TEE的飛地組件以執行一個或多個軟體指令。例如,資料儲存方案可以是在圖4的描述中討論的方案400。在對每個不經常存取的區塊進行編碼之後,生成ECC編碼區塊。基於資料儲存方案,每個ECC編碼區塊可以被劃分為四個資料集。資料集可以表示為Data1、Data2、Data3和Vdata1,每個資料集由區塊鏈節點630a-d之一保存。Vdata1可以代表用於錯誤校正的ECC的冗餘位元。在一些實施例中,可信節點620還可以在TEE下計算Data1、Data2、Data3和Vdata1的雜湊值,其分別表示為Dhash1、Dhash2、Dhash3和Vhash1。
在一些實施例中,資料集和雜湊值可以透過它們相應的區塊ID被索引。例如,區塊鏈節點630a可以用區塊ID100索引與區塊100相關聯的Data1、Dhash1、Dhash2和Vhash1。這樣,區塊鏈節點630a-d可以使用索引的區塊ID來將雜湊值映射到其對應的區塊以進行資料恢復。
在將每個編碼區塊劃分為資料集Data1、Data2、Data3和Vdata1之後,可信節點620可以向區塊鏈節點630a-d中的每一個發送資料集和資料儲存方案。在接收資料集後,每個區塊鏈節點可以儲存一個或多個資料集,並根據資料儲存方案對剩餘的資料集進行雜湊處理。例如,區塊鏈節點630a可以儲存Data1並對Data2、Data3和Vdata1進行
雜湊處理以生成Dhash2、Dhash3和Vhash1。在儲存一個或多個資料集和雜湊值之後,可以删除相應的區塊和資料集的剩餘部分,以節省區塊鏈節點的儲存空間。例如,在儲存了與區塊100相關聯的Data1、Dhash2、Dhash3和Vhash1之後,可以從區塊鏈節點删除Data2、Data3、Vdata1和區塊100。
在一些實施例中,可信節點620可以生成基於區塊鏈資料得出的校驗和。該校驗和也可以被發送到區塊鏈節點630a-d進行錯誤檢測,以確保資料完整性。當區塊鏈節點630a確定執行智慧合約需要區塊100的區塊鏈資料時,它可以從可信節點檢索Data2、Data3和Vdata1,或發送相應的雜湊值以從區塊鏈節點630b、630c和630d檢索資料集。然後檢索的資料集可以與Data1組合以恢復相應的區塊。
如本文所述,透過將資料加載到TEE以進行處理,可以保護資料的機密性和完整性。可以信任可信節點620生成可驗證的編碼區塊,將編碼區塊劃分為資料集,並向每個區塊鏈節點發送資料集和資料儲存方案以進行儲存。然後,每個區塊鏈節點都可以基於資料儲存方案儲存一部分資料集,以節省儲存空間。透過具有啟用TEE的可信節點,ECC只需由可信節點執行一次,而不是由每個區塊鏈節點分別執行。這樣,區塊鏈網路的總體計算資源消耗可以顯著降低。
圖7描繪了根據本文的實施例的將區塊鏈節點添加到區塊鏈網路的示例700。如前所述,可以執行編碼和雜湊
處理以有效降低區塊鏈網路的儲存消耗。在PBFT共識協定下,如果區塊鏈節點總數由N表示,故障區塊鏈節點的數量由f表示,則N>3f必須滿足區塊鏈網路是拜佔庭容錯的。例如,在四節點區塊鏈網路中,在PBFT共識協定下,區塊鏈網路可容忍的最大故障節點數為1。換句話說,區塊鏈網路所需的最小誠實區塊鏈節點數為3。因此,如果區塊鏈節點以不大於3/4的編碼率(即原始資料的比例不超過總編碼資料的3/4)對原始區塊鏈資料(或原始資料)執行ECC,並且每個區塊鏈節點儲存1/4的編碼區塊鏈資料(或編碼資料),即使區塊鏈節點之一是故障節點,也可以恢復原始資料。冗餘率可以定義為由區塊鏈網路的區塊鏈節點儲存的編碼資料和原始資料的總量除以原始資料的副本的量。在該示例中,由於沒有區塊鏈節點儲存原始資料,因此冗餘率是編碼率(即編碼資料量除以原始資料)的倒數,即4/3。
在所描繪的示例700中,假設當生成區塊1至100時,在區塊鏈網路中存在4個區塊鏈節點,節點1、節點2、節點3和節點4。在PBFT共識協定下,區塊鏈網路所需的最小誠實區塊鏈節點數為3。如在圖3和圖5的描述中所討論的,應用編碼和雜湊處理,可以以3/4的最大編碼率對區塊1至100分別進行編碼。每個編碼區塊可以被劃分為3個原始資料集和1個冗餘位元資料集,以由4個區塊鏈節點儲存。
在生成區塊101期間,節點5作為全節點被添加到區塊
鏈網路中。也就是說,節點5儲存區塊1-100的整個副本,但是從生成區塊101開始,節點5與4個現有區塊鏈節點一起參與編碼和雜湊處理。假設在生成區塊101-200期間,區塊鏈網路有5個區塊鏈節點,那麽在PBFT共識協定下,區塊鏈網路所需的最小誠實區塊鏈節點數為4。這樣,可以以4/5的最大編碼率對區塊101-200分別進行編碼。每個編碼區塊可以劃分為4個原始資料集和1個冗餘位元資料集,以由區塊鏈網路中的5個區塊鏈節點儲存。
在生成區塊201期間,節點6作為全節點被添加到區塊鏈網路中。也就是說,節點6儲存區塊1-200的整個副本,但是自區塊201生成以來,節點6與區塊鏈網路的其他區塊鏈節點一起參與編碼和雜湊處理。假設在生成區塊201-300期間,區塊鏈網路有6個區塊鏈節點,那麽在PBFT共識協定下,區塊鏈網路所需的最小誠實區塊鏈節點數為5。這樣,可以以5/6的最大編碼率對區塊201-300分別進行編碼。每個編碼區塊可以劃分為4個原始資料集和2個冗餘位元資料集,以由區塊鏈網路中的6個區塊鏈節點儲存。
在生成區塊301期間,節點7作為全節點被添加到區塊鏈網路中。也就是說,節點7儲存區塊1-300的整個副本,但是自區塊301生成以來,節點7與區塊鏈網路的其他區塊鏈節點一起參與編碼和雜湊處理。假設在生成區塊301-400期間,區塊鏈網路有7個區塊鏈節點,那麽在PBFT共識協定下,區塊鏈網路所需的最小誠實區塊鏈節點數為
5。這樣,可以以5/7的最大編碼率對區塊301-400分別進行編碼。每個編碼區塊可以劃分為5個原始資料集和2個冗餘位元資料集,以由區塊鏈網路中的7個區塊鏈節點儲存。
在生成區塊401期間,節點8作為全節點被添加到區塊鏈網路中。也就是說,節點8儲存區塊1-400的整個副本,但是自區塊401生成以來,節點8與區塊鏈網路的其他區塊鏈節點一起參與編碼和雜湊處理。假設在生成區塊401-500期間,區塊鏈網路有8個區塊鏈節點,那麽在PBFT共識協定下,區塊鏈網路所需的最小誠實區塊鏈節點數為6。這樣,可以以3/4的最大編碼率對區塊401-500分別進行編碼。每個編碼區塊可以劃分為6個原始資料集和2個冗餘位元資料集,以由區塊鏈網路中的8個區塊鏈節點儲存。
在生成區塊501期間,節點9作為全節點被添加到區塊鏈網路中。也就是說,節點9儲存區塊1-500的整個副本,但是自區塊501生成以來,節點9與區塊鏈網路的其他區塊鏈節點一起參與編碼和雜湊處理。
表1顯示了根據上述示例700的具有9個區塊鏈節點的區塊鏈網路下的區塊1-500的冗餘率和容錯能力。節點1、2、3和4儲存從ECC編碼區塊1-100劃分的資料集。節點5、6、7、8和9儲存原始區塊1-100。由於用於編碼區塊1-100的編碼率為3/4,因此節點1、2、3和4儲存原始區塊的4/3副本。節點5、6、7、8和9各自儲存原始區塊的一個副本。因此,儲存區塊1-100的冗餘率為5+4/3。容錯能力是區塊鏈網路可以容忍的故障區塊鏈節點的比例。由於節點5、6、7、8和9儲存原始區塊1-100,只要它們中的任何一個是誠實區塊鏈節點,它就可以將原始區塊提供給區塊鏈網路的其他區塊鏈節點。如果節點5、6、7、8和9均為故障區塊鏈節點,則儲存資料集的節點1、2、3和4中的3個節點必須是誠實節點才能恢復原始區塊的副本。因此,9個區塊鏈節點中最多6個節點可以是故障區塊鏈節點。容錯能力為2/3。
假設每個區塊鏈節點儲存一個資料集,如果從ECC編碼區塊劃分的資料集的數量為E,則可以將儲存原始區塊的區塊鏈節點的數量計算為N-E。基於以上分析,如果m個區塊鏈節點儲存冗餘位元資料集,則最大允許故障區塊鏈節點DF可以表示為DF=m+N-E。由於DF大於等於f,因此可以推斷出E-mN-F。也就是說,當E-mN-F(E>0)時,ECC的編碼率(E-m)/E足夠低,以容忍N個故障節點中的F個並確保資料恢復的安全性。冗餘率r可以表示為r=N-
E+E/(E-m)。
對於區塊101-200,節點1、2、3、4和5儲存從ECC編碼區塊101-200劃分的資料集。節點6、7、8和9儲存原始區塊。由於用於編碼區塊101-200的編碼率為4/5,因此節點1、2、3、4和5儲存原始區塊的5/4副本。節點6、7、8和9各自儲存原始區塊的一個副本。因此,儲存區塊101-200的冗餘率為4+5/4。9個區塊鏈節點中最多5個節點可以是故障區塊鏈節點。容錯能力為5/9。
對於區塊201至300,節點1、2、3、4、5和6儲存從ECC編碼區塊201-300劃分的資料集。節點7、8和9儲存原始區塊。由於用於編碼區塊201-300的編碼率為2/3,因此節點1、2、3、4、5和6儲存原始區塊的6/5副本。節點7、8和9各自儲存原始區塊的一個副本。因此,儲存區塊201-300的冗餘率為3+6/5。9個區塊鏈節點中最多4個節點可以是故障區塊鏈節點。容錯能力為4/9。
對於區塊301至400,節點1、2、3、4、5、6和7儲存從ECC編碼區塊301-400劃分的資料集。節點8和9儲存原始區塊。由於用於編碼區塊301-400的編碼率為5/7,因此節點1、2、3、4、5、6和7儲存原始區塊的7/5副本。節點8和9各自儲存原始區塊的一個副本。因此,儲存區塊301-400的冗餘率為2+7/5。9個區塊鏈節點中最多4個節點可以是故障區塊鏈節點。容錯能力為4/9。
對於區塊401-500,節點1、2、3、4、5、6、7和8儲存從ECC編碼區塊301-400劃分的資料集。節點9儲存原始
區塊。由於用於編碼區塊401-500的編碼率為3/4,因此節點1、2、3、4、5、6、7和8儲存原始區塊的4/3副本。節點9儲存原始區塊的一個副本。因此,儲存區塊401-500的冗餘率為1+7/5。9個區塊鏈節點中最多3個節點可以是故障區塊鏈節點。容錯能力為1/3。
如果區塊鏈節點同意對區塊1-500再次執行ECC編碼,則由於9個區塊鏈節點的區塊鏈網路可容忍的故障區塊鏈節點的最大數量為2,ECC的最大編碼率為7/9。執行編碼和雜湊處理之後,容錯能力降低到2/9。另一方面,冗餘率降低到9/7,這顯著低於再次執行該處理之前的冗餘率。因此,當將原始區塊儲存在至少一個區塊鏈節點中時,再次執行編碼和雜湊處理可有效降低系統的冗餘率和儲存消耗。
在一些情況下,區塊鏈節點可以確定其儲存的區塊鏈資料超過預定資料量臨限值。在這種情況下,區塊鏈節點可以向其他區塊鏈節點發起請求,以對一個或多個區塊再次執行編碼和雜湊處理,以降低區塊鏈網路的冗餘率。在一些情況下,諸如響應於確定區塊鏈網路的冗餘率大於預定臨限值,用於再次執行編碼和雜湊處理的請求可以由區塊鏈網路外部的可信節點發起。例如,對於如示例700所示的具有9個區塊鏈節點的區塊鏈網路,PBFT協定下的最小冗餘率是9/7。當一個或多個區塊的冗餘率超過2時,可信節點可以發起請求。在一些實施例中,所述區塊可以基於它們的冗餘率被選擇以再次執行編碼和雜湊處理。由於
儲存上節省更多,具有較高冗餘率的區塊可以以較高優先級被選擇。
用於再次執行編碼和雜湊處理的請求可以包括用於執行ECC的最大編碼率,該最大編碼率考慮了可容忍的故障區塊鏈節點的最大數量(即,f/(3f+1))。所述請求還可以包括將一個或多個編碼區塊中的每個編碼區塊劃分為多個資料集並將多個資料集分配給區塊鏈網路的區塊鏈節點的指令。例如,所述指令可以指示將每個編碼區塊劃分為九個資料集,每個資料集被分配給9個區塊鏈節點之一。在某些情況下,所述指令由在圖3至圖5的描述中所討論的資料儲存方案提供。
如果所述請求是由區塊鏈節點發起的,則區塊鏈網路可以根據所述請求中包括的指令完成PBFT演算法的三個階段處理(預準備、準備和提交階段)以達成re-ECC的共識。發起所述請求的區塊鏈節點可以充當用於執行PBFT演算法的主區塊鏈節點。任何接收所述請求的區塊鏈節點都可以從主區塊鏈節點中識別並檢索一個或多個區塊。
如果接收到來自具有權限證明的可信節點的所述請求,則區塊鏈節點還可以根據所述指令直接再次執行ECC。在這種情況下,所述請求還可包括識別儲存一個或多個區塊的至少一個區塊鏈節點的標識。然後,接收所述請求的區塊鏈節點可以基於所述請求識別儲存所述一個或多個區塊的區塊鏈網路的至少一個區塊鏈節點,並從至少一個區塊鏈節點之一中檢索一個或多個區塊。
為了檢索一個或多個區塊,區塊鏈節點可以向至少一個區塊鏈節點之一發送一個或多個區塊的雜湊值。在一些示例中,雜湊值被儲存在區塊鏈的區塊信頭中。在接收一個或多個區塊之後,區塊鏈節點可以透過比較接收的一個或多個區塊的雜湊值與其發送的對應雜湊值來確定接收的一個或多個區塊是否是經認證的。如果雜湊值相同,則可以確定接收的一個或多個區塊是可信的。否則,區塊鏈節點可以報告從其接收一個或多個區塊的區塊鏈節點為故障節點。
然後,區塊鏈節點可以基於該請求中提供的編碼率執行一個或多個區塊的ECC,以生成一個或多個編碼區塊。在圖6所示的示例中,對於一個或多個編碼區塊中的每個編碼區塊,區塊鏈節點可以根據指令將編碼區塊劃分為九個資料集,並根據指令儲存分配給區塊鏈節點的九個資料集中的至少一個資料集。然後,區塊鏈節點可以對多個資料集中的剩餘八個資料集進行雜湊處理,以生成與剩餘八個資料集相對應的雜湊值,儲存雜湊值,並删除一個或多個區塊。此後,一個或多個區塊的編碼和雜湊處理便完成。
對於所有可用區塊完成編碼和雜湊處理之後,如果區塊鏈網路的冗餘率仍然超過預定資料儲存臨限值,或者區塊鏈節點的儲存消耗大於預定資料儲存臨限值,則區塊鏈節點可以通知其他區塊鏈節點響應於要添加到區塊鏈網路的新區塊鏈節點而觸發另一輪編碼和雜湊處理。例如,如
果在添加節點9之前8個區塊鏈節點對區塊1-400執行編碼和雜湊處理,並且區塊鏈節點的儲存消耗仍大於節點8的儲存容量的90%,則節點8可以向節點1-7發送通知,以對添加節點8之後生成的區塊執行另一輪編碼和雜湊處理。
圖8描繪了根據本文的實施例的共識處理800的示例。在該示例中,共識處理800由區塊鏈網路的可信節點810和4個區塊鏈節點802、804、806和808執行。如在圖7的描述中所討論的,當將新的全區塊鏈節點添加到區塊鏈網路時,由於全節點尚未參與編碼和雜湊處理,因此它們儲存原始區塊而不是儲存從ECC編碼區塊劃分出的資料集。可以透過具有較高編碼率的區塊的re-ECC降低由全節點儲存的區塊的冗餘率。
但是,在每個區塊鏈節點上執行re-ECC可能會顯著增加區塊鏈網路的計算負擔。如在圖6的描述中所討論的,區塊鏈資料可以被加載到可信節點810的TEE。可信節點810可以生成可驗證的編碼區塊,將編碼區塊劃分為資料集,並向每個區塊鏈節點發送資料集和資料儲存方案以進行儲存。透過具有啟用TEE的可信節點,ECC僅需要執行一次,而不必由每個區塊鏈節點分別執行。可以降低區塊鏈網路的總體計算資源消耗。
在一些實施例中,區塊鏈節點可以向可信節點810發送請求,以再次執行對一個或多個區塊的編碼和雜湊處理。在接收該請求之後,可信節點810可以標識區塊鏈網路中儲存一個或多個區塊的區塊鏈節點802、804、806或
808。區塊鏈節點可以是發送該請求的同一節點,也可以是儲存一個或多個區塊的不同區塊鏈節點。假設可信節點810標識區塊鏈節點802儲存一個或多個區塊,則可信節點810可以從區塊鏈節點802檢索所述一個或多個區塊。為了檢索所述一個或多個區塊,可信節點810可以向區塊鏈節點802發送與所述一個或多個區塊相對應的雜湊值。區塊鏈節點802可以標識與雜湊值相對應的一個或多個區塊,並將它們發送給可信節點810。
當新的區塊鏈節點被添加到區塊鏈網路時,可信節點810可以對區塊鏈網路施行新的資料儲存方案以進行儲存優化。例如,對於採用如在圖4的描述中討論的資料儲存方案的四節點區塊鏈網路,最大ECC編碼率為3/4。當將新的全節點添加到區塊鏈時,可信節點810可以施行涉及所有5個區塊鏈節點的新的資料儲存方案。由於五節點區塊鏈網路只能容忍一個故障區塊鏈節點,因此最大ECC編碼率可以提高至4/5以提高儲存效率。
因此,基於新的資料儲存方案,可信節點810可以使用具有較高編碼率的ECC對一個或多個區塊進行編碼。然後,對於一個或多個區塊中的每個區塊,可信節點810可以將該區塊劃分為多個資料集並計算多個資料集的雜湊值。
為了施行新的資料儲存方案,可信節點810可以與區塊鏈節點802、804、806和808一起參與共識處理800。執行共識處理800,以使得可信節點810可以確認區塊鏈節點
同意新的資料儲存方案,從而可以使用新的資料儲存方案下的資料集來替換區塊鏈節點802、804、806和808儲存的現有資料,以節省儲存空間。
共識處理800可以是三個階段處理,其包括請求階段812、響應階段814和提交階段816。在共識處理800之後,新的資料儲存方案可以由可信節點810激活,並被區塊鏈節點802、804、806和808採納。然後,區塊鏈節點802、804、806和808可以基於新的資料儲存方案來儲存或恢復區塊鏈資料。PBFT共識協定在本文中用於描述共識處理800。根據本文的實施例,諸如工作量證明(PoW)、權益證明(PoS)和委托權益證明(DPoS)之類的其他共識協定可以附加地或替代地用於達成共識。
在請求階段812,可信節點810可以向區塊鏈節點802、804、806和808中的每一個發送請求。在一些實施例中,該請求可以包括分配為由每個區塊鏈節點儲存的資料。分配的分配資料可以包括多個資料集中的至少一個資料集、雜湊值或提供多個資料集與每個區塊鏈節點之間的對應關係的索引。分配資料旨在替換與區塊鏈節點當前儲存的一個或多個區塊相關聯的資料,以節省儲存空間。在一些示例中,索引可以示出多個資料集與區塊鏈節點802、804、806和808之間的對應關係,諸如根據圖4中描繪的資料管理方案400的對應關係。該索引可以提供:區塊鏈節點802儲存Data1,區塊鏈節點804儲存Data2,區塊鏈節點806儲存Data3,以及區塊鏈節點808儲存Vdata1。
在一些示例中,該請求還可以包括可信節點810的數位簽名,以供接收方驗證可信節點810的身份。
在區塊鏈節點802、804、806和808接收請求之後,它們都可以在響應階段814各自響應該請求。響應消息可以包括相應的區塊鏈節點已經接收並接受新的資料儲存方案的指示。在一些實施例中,該響應消息可能不會被可信節點810同步接收。例如,某些區塊鏈節點可能有故障、繁忙或與區塊鏈網路斷開連接,這可能導致其響應消息被延遲或不可用。因此,在區塊鏈節點802、804、806和808從可信節點810接收已經接收足以達成共識的響應消息的確認之前,它們可以儲存分配的資料集、雜湊值和索引,且無需删除預先存在的資料集。為了實現更快的同步,每個區塊鏈節點可以使用其私鑰對其響應消息進行數位簽名。因此,每個響應消息都攜帶其發送節點的數位簽名。即使發送節點斷開連接或以其他方式不可用,可信節點810也可以驗證響應消息並繼續進行共識處理800,且不會產生額外的延遲。
如果可信節點810接收到來自區塊鏈節點的N-DF=E-m個響應消息,則共識處理800可以進入提交階段816。透過接收E-m個響應消息,可信節點810可以確定區塊鏈節點802、804、806和808已就採用可信節點810提供的新的資料儲存方案達成共識。因此,可信節點810可以向區塊鏈節點802、804、806和808分別發送提交消息,以激活新的資料儲存方案。在一些實施例中,在接收該提交消息之
後,區塊鏈節點802、804、806和808可以删除與這些區塊相對應的預先存在的資料以降低儲存消耗。
在一些實施例中,響應於區塊鏈節點退出區塊鏈網路或被從區塊鏈網路删除,可信節點810再次執行ECC和共識處理800。例如,對於多個區塊中的每個區塊,可信節點810可以確定儲存ECC編碼區塊的至少一部分的區塊鏈節點的數量E以及儲存該ECC編碼區塊的冗餘位元的至少一部分的區塊鏈節點的數量m。可信節點810還可以確定區塊鏈網路的區塊鏈節點總數N以及區塊鏈網路可容忍的故障區塊鏈節點的最大數量f。如果可信節點810確定E-m>N-F,則其可以基於(N-f)/N編碼率對多個區塊進行re-ECC。
在一些實施例中,當可信節點810的計算資源的利用率小於或等於預定值時,可信節點810可以執行ECC。例如,在可信節點810的CPU使用率低於50%時,可以執行ECC。
在一些實施例中,當區塊鏈網路包括多個全節點時,由於全節點尚未共享從ECC編碼區塊劃分的資料集的儲存,由全節點儲存的區塊的冗餘率可以相對較高。在某些情況下,每個區塊的re-ECC可能會需要計算資源。在這種情況下,確定區塊的優先級值並對可以節省更多儲存的區塊優先進行re-ECC可能是有益的。
如前所述,儲存在N節點區塊鏈網路中的區塊的冗餘率可以表示為r=N-E+E/(E-m)。該區塊的優先級值可以定
義為N-r=E-E/(E-m)。優先級值越低,區塊的re-ECC優先級越高。換句話說,在對區塊執行re-ECC操作之後,具有較低優先級值的區塊可以具有較高的冗餘率扣除。因此,區塊鏈網路可以對具有最低優先級值的區塊優先進行re-ECC。re-ECC可以基於最大允許編碼率(N-f)/N實現最大儲存節省。
在一些實施例中,可信節點810可以維護優先級索引中的優先級值。優先級索引可以提供每個區塊的區塊ID與其對應的優先級值之間的對應關係。在區塊的re-ECC之後,優先級索引可以基於新的優先級值被更新,所述新的優先級值是基於re-ECC編碼率計算的。
在re-ECC並且共享ECC編碼區塊的儲存之後,如果區塊鏈節點確定其儲存的區塊鏈資料仍然具有超過預定資料儲存臨限值的大小,則其可以向可信節點810發送通知以添加額外區塊進行re-ECC。在接收該通知之後,可信節點810可以基於優先級索引的優先級值選擇額外區塊進行re-ECC。
圖9描繪了可以根據本文的實施方案執行的處理900的示例。為了方便起見,處理900將被描述為在位於一個或多個位置並根據本文被適當地程式化的計算設備或者一個或多個電腦的系統的TEE中被執行。例如,計算系統(例如,圖1的計算系統106、108)中的計算設備被適當地程式化,可以執行處理900。
在步驟902,計算設備接收來自區塊鏈節點的要從區
塊鏈網路中被移除的請求。在步驟904,計算設備識別與區塊鏈節點儲存的區塊鏈資料相關聯的多個區塊。
在步驟906,針對多個區塊中的每個區塊,所述計算設備確定:除請求被移除的區塊鏈節點之外的區塊鏈網路中的剩餘區塊鏈節點的總數與剩餘區塊鏈節點可容忍的最大故障區塊鏈節點數之間的第一差、儲存從區塊的錯誤校正編碼(ECC)編碼版本中劃分的資訊位元或冗餘位元資料集的剩餘區塊鏈節點的第一數量與儲存從區塊的ECC編碼版本中劃分的冗餘位元資料集的剩餘區塊鏈節點的第二數量之間的第二差、以及所述第一差是否小於第二差。
在步驟908,計算設備響應於確定所述第一差小於所述第二差,從區塊鏈節點檢索與所述區塊相關聯的區塊鏈資料。在某些情況下,所述計算設備還確定與該區塊相關聯的區塊鏈資料是該區塊本身,並使用ECC對該區塊進行編碼以生成編碼區塊,其中,對該區塊的編碼率等於剩餘區塊鏈節點所需的最小誠實區塊鏈節點數除以剩餘區塊鏈節點的總數,所需的最小誠實區塊鏈節點數加可容忍的最大故障區塊鏈節點數為剩餘區塊鏈節點的總數。
在某些情況下,所述計算設備還確定與該區塊相關聯的區塊鏈資料是從該區塊的ECC編碼版本劃分的資料集,從多個區塊鏈節點檢索從該區塊的ECC編碼版本劃分的剩餘資料集;基於資料集和剩餘資料集對該區塊進行解碼,並使用ECC對該區塊進行編碼以生成編碼區塊,其中,對該區塊的編碼率等於剩餘區塊鏈節點所需的最小誠實區塊
鏈節點數除以剩餘區塊鏈節點的總數,所需的最小誠實區塊鏈節點數加可容忍的最大故障區塊鏈節點數為剩餘區塊鏈節點的總數。
在某些情況下,所述計算設備在使用ECC對區塊進行編碼之後,進一步將編碼區塊劃分為多個資料集,其中,所述多個資料集的數量等於區塊鏈網路中的區塊鏈節點的數量,計算所述多個資料集的雜湊值,並向區塊鏈網路中的區塊鏈節點分別發送多個資料集和雜湊值之一。
在某些情況下,當計算設備的計算資源的利用率小於或等於預定值時,執行ECC。
在某些情況下,ECC是透過向一個或多個區塊添加冗餘位元來執行的抹除編碼。
在某些情況下,在檢索區塊鏈資料之後,計算設備還允許來自所述區塊鏈節點的要從區塊鏈網路中被移除的所述請求。
在某些情況下,可容忍的最大故障區塊鏈節點數基於實用拜佔庭容錯(PBFT)共識協定確定。
圖10是根據本文的實施例的裝置1000的模組的示例的圖。裝置1000可以是承載被配置為處理區塊鏈資料的TEE的計算設備的實施例的示例。裝置1000可以對應於上述實施例,裝置1000包括:接收模組1002,用於接收來自區塊鏈節點的要從區塊鏈網路中被移除的請求;識別模組1004,識別與所述區塊鏈節點儲存的區塊鏈資料相關聯的多個區塊;確定模組1006,用於針對所述多個區塊中的每
個區塊確定,所述區塊鏈網路中除請求被移除的所述區塊鏈節點之外的剩餘區塊鏈節點的總數與所述剩餘區塊鏈節點可容忍的最大故障區塊鏈節點數之間的第一差、儲存從所述區塊的錯誤校正編碼(ECC)編碼版本劃分的資訊位元或冗餘位元資料集的所述剩餘區塊鏈節點的第一數量與儲存從區塊的ECC編碼版本中劃分的冗餘位元資料集的所述剩餘區塊鏈節點的第二數量之間的第二差、以及所述第一差是否小於所述第二差;檢索模組1008,用於響應於確定所述第一差小於所述第二差,從所述區塊鏈節點檢索與所述區塊相關聯的區塊鏈資料。
在一些實施例中,所述確定模組1006還確定與該區塊相關聯的區塊鏈資料是該區塊本身,所述裝置1000還包括編碼子模組,所述編碼子模組使用ECC對該區塊進行編碼以生成編碼區塊,其中,對該區塊的編碼率等於剩餘區塊鏈節點所需的最小誠實區塊鏈節點數除以剩餘區塊鏈節點的總數,所需的最小誠實區塊鏈節點加可容忍的最大故障區塊鏈節點數為剩餘區塊鏈節點的總數。
在某些情況下,所述確定模組1006還確定與該區塊相關聯的區塊鏈資料是從該區塊的ECC編碼版本劃分的資料集,所述檢索模組1008還從多個區塊鏈節點檢索從該區塊的ECC編碼版本劃分的剩餘資料集,所述裝置1000還包括解碼子模組和編碼模組,所述解碼子模組基於資料集和剩餘資料集對該區塊進行解碼,所述編碼模組使用ECC對該區塊進行編碼以生成編碼區塊,其中,對該區塊的編碼率
等於剩餘區塊鏈節點所需的最小誠實區塊鏈節點數除以剩餘區塊鏈節點的總數,所需的最小誠實區塊鏈節點數加可容忍的最大故障區塊鏈節點數為剩餘區塊鏈節點的總數。
在一些實施例中,裝置1000還包括:劃分子模組,在使用ECC對區塊進行編碼之後將編碼區塊劃分為多個資料集,其中,所述多個資料集的數量等於區塊鏈網路中的區塊鏈節點的數量;計算子模組,計算所述多個資料集的雜湊值;以及發送子模組,向區塊鏈網路中的區塊鏈節點分別發送所述多個資料集和所述雜湊值之一。
在一些實施例中,當計算設備的計算資源的利用率小於或等於預定值時,執行ECC。
在一些實施例中,ECC是透過向所述一個或多個區塊添加冗餘位元來執行的抹除編碼。
在一些實施例中,裝置1000還包括允許子模組,在檢索區塊鏈資料之後,允許來自所述區塊鏈節點的要從所述區塊鏈網路中被移除的所述請求。
在一些實施例中,可容忍的最大故障區塊鏈節點數基於實用拜佔庭容錯(PBFT)共識協定確定。
在先前實施中示出的系統、裝置、模組或單元可以透過使用電腦晶片或實體來實現,或者可以透過使用具有特定功能的產品來實現。典型的實施例設備是電腦,電腦可以是個人電腦、膝上型電腦、蜂巢式電話、相機電話、智慧電話、個人數位助理、媒體播放器、導航設備、電子郵件接收和發送設備、遊戲控制台、平板電腦、穿戴式設備
或這些設備的任意組合。
對於裝置中每個模組的功能和角色的實施例過程,可以參考前一方法中相應步驟的實施例過程。為了簡單起見,這裡省略了細節。
由於裝置實施例基本上與方法實施例相對應,因此對於相關部分,可以參考方法實施例中的相關描述。前述裝置實施例僅僅是示例。被描述為單獨部分的模組可以是或可以不是實體上分離的,並且顯示為模組的部分可以是或可以不是實體模組,可以位於一個位置,或者可以分佈在多個網路模組上。可以基於實際需求來選擇一些或所有模組,以實現本文方案的目標。本領域普通技術人員在無需付出創造性努力的情況下就能理解和實現本申請的實施例。
再次參考圖10,可以解釋為示出了內部功能模組和區塊鏈節點的結構。本質上,執行主體可以是電子設備,該電子設備包括:一個或多個處理器;被配置為儲存一個或多個處理器的可執行指令的一個或多個電腦可讀儲存器。在一些實施例中,一個或多個電腦可讀儲存器耦接至一個或多個處理器且其上儲存有程式指令,所述程式指令能夠由所述一個或多個處理器執行以執行如本文中所述的演算法、方法、函數、處理、流程和程式。本文還提供了耦接至一個或多個處理器並且其上儲存有指令的一個或多個非暫時性電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令將促使所述一個或多個處理器按
照本文提供的方法的實施例執行操作。
本文還提供了用於實施本文提供的所述方法的系統。所述系統包括一個或多個處理器以及耦接到所述一個或多個處理器並且其上儲存有指令的電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令將促使所述一個或多個處理器按照本文提供的方法的實施例執行操作。
本文中描述的主題、動作和操作的實施例可以在數位電子電路中、有形體現的電腦軟體或韌體中、包括本文中公開的結構及其結構等同物的電腦硬體中,或者它們中的一個或多個的組合中實現。本文中描述的主題的實施例可以實現為一個或多個電腦程式,例如,一個或多個電腦程式指令模組,編碼在電腦程式載體上,用於由資料處理裝置執行或控制資料處理的操作。例如,電腦程式載體可以包括具有編碼在其上或儲存在其上的指令的一個或多個電腦可讀儲存媒體。載體可以是有形的非暫態電腦可讀媒體,例如磁碟、磁光碟或光碟、固態驅動器、隨機存取儲存器(RAM)、唯讀儲存器(ROM)或其他媒體類型。可選地或附加地,載體可以是人工生成的傳播信號,例如,機器生成的電、光或電磁信號,其被生成為對資訊進行編碼用於傳輸到合適的接收器裝置以供資料處理裝置執行。電腦儲存媒體可以是或可以部分是機器可讀儲存設備、機器可讀儲存基板、隨機或串行存取儲存器設備或它們中的一個或多個的組合。電腦儲存媒體不是傳播信號。
電腦程式也可以被稱為或描述為程式、軟體、軟體應用程式、app、模組、軟體模組、引擎、脚本或碼,可以以任何形式的程式語言編寫,包括編譯或解釋語言、說明或程式性語言;它可以被配置為任何形式,包括作為獨立程式,或者作為模組、組件、引擎、副程式或適合在計算環境中執行的其他單元,該環境可以包括由資料通信網路互連的在一個或多個位置的一台或多台電腦。
電腦程式可以但非必須對應於文件系統中的文件。電腦程式可以儲存在:保存其他程式或資料的文件的一部分中,例如,儲存在標記語言文件中的一個或多個脚本;專用於所討論的程式的單個文件;或者多個協調文件,例如,儲存一個或多個模組、子程式或碼部分的多個文件。
舉例來說,用於執行電腦程式的處理器包括通用和專用微處理器,以及任何類型的數位電腦的任何一個或多個處理器。通常,處理器將從耦接到處理器的非暫態電腦可讀媒體接收用於執行的電腦程式的指令並且接收資料。
術語“資料處理裝置”包括用於處理資料的所有類型的裝置、設備和機器,包括例如可程式處理器、電腦或多個處理器或電腦。資料處理裝置可以包括例如FPGA(現場可程式閘陣列),ASIC(專用積體電路)或GPU(圖形處理單元)的專用邏輯電路。除了硬體,該裝置還可以包括為電腦程式創建執行環境的碼,例如,構成處理器韌體、協定棧、資料庫管理系統、作業系統、或者它們中的一個或多個的組合的碼。
本文中描述的處理和邏輯流程可以由一台或多台電腦或處理器執行一個或多個電腦程式進行,以透過對輸入資料進行運算並生成輸出來執行操作。過程和邏輯流程也可以由例如FPGA、ASIC或GPU等的專用邏輯電路或專用邏輯電路與一個或多個程式化電腦的組合來執行。
適合於執行電腦程式的電腦可以基於通用和/或專用微處理器,或任何其他種類的中央處理單元。通常,中央處理單元將從唯讀儲存器和/或隨機存取儲存器接收指令和資料。電腦的元件可以包括用於執行指令的中央處理單元和用於儲存指令和資料的一個或多個儲存設備。中央處理單元和儲存器可補充有專用邏輯電路或集成在專用邏輯電路中。
通常,電腦還將包括或可操作地耦接為從一個或多個儲存設備接收資料或將資料傳輸到一個或多個儲存設備。儲存設備可以是例如磁碟、磁光碟或光碟、固態驅動器或任何其他類型的非暫態電腦可讀媒體。然而,電腦不需要具有這樣的設備。因此,電腦可以耦接到本地和/或遠程的例如一個或多個儲存器的一個或多個儲存設備。例如,電腦可以包括作為電腦的集成組件的一個或多個本地儲存器,或者電腦可以耦接到雲端網路中的一個或多個遠程儲存器。此外,電腦可以嵌入在另一個設備中,例如行動電話,個人數位助理(PDA),移動音頻或視頻播放器,遊戲控制台,全球定位系統(GPS)接收器或例如通用串列匯流排(USB)快閃驅動器的攜帶式儲存設備,僅舉幾例。
組件可以透過諸如直接地連接、或經由一個或多個中間組件彼此電學連接或光學連接可通信地連接而彼此“耦接”。如果其中一個組件被集成到另一個組件中,組件也可以彼此“耦接”。例如,集成到處理器中的儲存組件(例如,L2高速快取組件)“耦接到”處理器。
為了提供與用戶的互動,本文中所描述的主題的實施例可以在電腦上實現或配置為與該電腦通信,該電腦具有:顯示設備,例如,LCD(液晶顯示器)監視器,用於向用戶顯示資訊;以及輸入設備,用戶可以透過該輸入設備向該電腦提供輸入,例如鍵盤和例如滑鼠、軌述球或觸控板等的指示設備。其他類型的設備也可以用於提供與用戶的互動;例如,提供給用戶的反饋可以是任何形式的感覺反饋,例如視覺反饋、聽覺反饋或觸覺反饋;並且可以接收來自用戶的任何形式的輸入,包括聲音、語音或觸覺輸入。此外,電腦可以透過向用戶使用的設備發送文件和從用戶使用的設備接收文件來與用戶互動;例如,透過響應於從用戶設備上的web瀏覽器收到的請求,向web瀏覽器發送web頁面,或者透過與例如智慧電話或電子平板電腦等的用戶設備上執行的應用程式(app)進行互動。此外,電腦可以透過向個人設備(例如,執行消息應用的智慧手機)發送文字消息或其他形式的消息並作為回應接收來自用戶的響應消息來與用戶互動。
本文使用與系統,裝置和電腦程式組件有關的術語“配置為”。對於被配置為執行特定操作或動作的一個或多
個電腦的系統,意味著系統已經在其上安裝了在執行中促使該系統執行所述操作或動作的軟體、韌體、硬體或它們的組合。對於被配置為執行特定操作或動作的一個或多個電腦程式,意味著一個或多個程式包括當被資料處理裝置執行時促使該裝置執行所述操作或動作的指令。對於被配置為執行特定操作或動作的專用邏輯電路,意味著該電路具有執行所述操作或動作的電子邏輯。
儘管本文包含許多具體實施例細節,但這些不應被解釋為對由申請專利範圍本身限定的請求保護的範圍的限制,而是作為對特定實施例的具體特徵的描述。在本文單獨實施例的上下文中描述的某些特徵也可以在單個實施例中組合實現。相反,在單個實施例的上下文中描述的各種特徵也可以單獨地或以任何合適的子組合在多個實施例中實現。此外,儘管上面的特徵可以被描述為以某些組合起作用並且甚至最初被如此請求保護,但是在一些情況下,可以從請求保護的組合中删除來自該組合的一個或多個特徵,並且申請專利範圍可以涉及子組合或子組合的變體。
類似地,雖然以特定順序在附圖中描繪了操作並且在申請專利範圍中叙述了操作,但是這不應該被理解為:為了達到期望的結果,要求以所示的特定順序或序列順序執行這些操作,或者要求執行所有示出的操作。在某些情況下,多任務和平行處理可能是有利的。此外,上述實施例中的各種系統模組和組件的劃分不應被理解為所有實施例中都要求如此劃分,而是應當理解,所描述的程式組件和
系統通常可以一起集成在單個軟體產品中或打包成多個軟體產品。
已經描述了主題的特定實施例。其他實施例在以下申請專利範圍內。例如,申請專利範圍中記載的動作可以以不同的順序執行並且仍然實現期望的結果。作為一個示例,附圖中描繪的過程無需要求所示的特定順序或序列順序來實現期望的結果。在一些情況下,多任務和平行處理可能是有利的。
600:處理
610:區塊鏈網路
620:可信節點
630a~d:區塊鏈節點
Claims (9)
- 一種電腦實現的用於在可通信地耦接到區塊鏈網路的計算設備上執行的可信執行環境(TEE)中處理區塊鏈資料的方法,所述方法包括:接收來自區塊鏈節點的要從所述區塊鏈網路中被移除的請求;識別與所述區塊鏈節點儲存的區塊鏈資料相關聯的多個區塊;針對所述多個區塊中的每個區塊確定:所述區塊鏈網路中除請求被移除的所述區塊鏈節點之外的剩餘區塊鏈節點的總數與所述剩餘區塊鏈節點可容忍的最大故障區塊鏈節點數之間的第一差,儲存從所述區塊的錯誤校正編碼(ECC)編碼版本劃分的資訊位元或冗餘位元資料集的所述剩餘區塊鏈節點的第一數量與儲存從所述區塊的ECC編碼版本劃分的冗餘位元資料集的所述剩餘區塊鏈節點的第二數量之間的第二差,以及所述第一差是否小於所述第二差;並且針對所述多個區塊中的每個區塊,響應於確定所述第一差小於所述第二差,從所述區塊鏈節點檢索與所述區塊相關聯的區塊鏈資料,及在檢索所述區塊鏈資料之後,允許來自所述區塊鏈節點的要求從所述區塊鏈網路移除。
- 如請求項1所述的方法,還包括: 確定與所述區塊相關聯的區塊鏈資料為所述區塊本身;以及使用ECC對所述區塊進行編碼以生成編碼區塊,其中,對所述區塊的編碼率等於所述剩餘區塊鏈節點所需的最小誠實區塊鏈節點數除以所述剩餘區塊鏈節點的總數,以及其中所述所需的最小誠實區塊鏈節點數加所述可容忍的最大故障區塊鏈節點數為所述剩餘區塊鏈節點的總數。
- 如請求項1所述的方法,還包括:確定與所述區塊相關聯的區塊鏈資料是從所述區塊的ECC編碼版本劃分的資料集;從多個區塊鏈節點檢索從所述區塊的ECC編碼版本劃分的剩餘資料集;基於所述資料集和所述剩餘資料集對所述區塊進行解碼;以及使用ECC對所述區塊進行編碼以生成編碼區塊,其中,對所述區塊的編碼率等於所述剩餘區塊鏈節點所需的最小誠實區塊鏈節點數除以所述剩餘區塊鏈節點的總數,以及其中所述所需的最小誠實區塊鏈節點數加所述可容忍的最大故障區塊鏈節點數為所述剩餘區塊鏈節點的總數。
- 如請求項2或3所述的方法,還包括:在使用ECC對所述區塊進行編碼之後,將所述編碼區塊劃分為多個資料集,其中,所述多個資料集的數量等於所述剩餘區塊鏈節點的總數;計算所述多個資料集的雜湊值;以及 向所述剩餘區塊鏈節點分別發送所述多個資料集和所述雜湊值之一。
- 如請求項2或3所述的方法,其中,當所述計算設備的計算資源的利用率小於或等於預定值時,執行所述ECC。
- 如請求項2或3所述的方法,其中,所述ECC是透過向一個或多個區塊添加冗餘位元來執行的抹除編碼。
- 如請求項1所述的方法,其中,所述可容忍的最大故障區塊鏈節點數基於實用拜佔庭容錯(PBFT)共識協定確定。
- 一種用於通信共享的區塊鏈資料的系統,包括:一個或多個處理器;和耦接到所述一個或多個處理器並且其上儲存有指令的一個或多個電腦可讀儲存器,所述指令能由所述一個或多個處理器執行以執行如請求項1所述的方法。
- 一種用於通信共享的區塊鏈資料的裝置,所述裝置包括用於執行如請求項1所述的方法的多個模組。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
WOPCT/CN2019/115878 | 2019-11-06 | ||
PCT/CN2019/115878 WO2020035086A2 (en) | 2019-11-06 | 2019-11-06 | Data security of shared blockchain data storage based on error correction code |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202119210A TW202119210A (zh) | 2021-05-16 |
TWI759791B true TWI759791B (zh) | 2022-04-01 |
Family
ID=69525956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109123543A TWI759791B (zh) | 2019-11-06 | 2020-07-13 | 基於錯誤校正碼的共享區塊鏈資料儲存的方法、系統及裝置 |
Country Status (10)
Country | Link |
---|---|
US (1) | US11057190B2 (zh) |
EP (1) | EP3769216B1 (zh) |
JP (1) | JP7004423B2 (zh) |
KR (1) | KR102363271B1 (zh) |
CN (1) | CN111373378B (zh) |
AU (1) | AU2019320956B2 (zh) |
CA (1) | CA3098932C (zh) |
SG (1) | SG11202010725TA (zh) |
TW (1) | TWI759791B (zh) |
WO (1) | WO2020035086A2 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7348878B2 (ja) * | 2020-04-22 | 2023-09-21 | 株式会社日立製作所 | 分散台帳管理方法、分散台帳システム、およびノード |
CN111787119A (zh) * | 2020-07-10 | 2020-10-16 | 福富信息科技(上海)有限公司 | 一种基于区块链技术控制工业物联网设备通讯协议装置 |
CN112365247A (zh) * | 2020-10-15 | 2021-02-12 | 天津大学 | 基于余数***与raft算法的区块链存储优化方法 |
CN113127562A (zh) * | 2021-03-30 | 2021-07-16 | 河南九域腾龙信息工程有限公司 | 一种低冗余区块链数据存储和检索方法及*** |
CN112995340B (zh) * | 2021-04-21 | 2021-08-13 | 湖南天河国云科技有限公司 | 一种基于区块链的去中心化文件***再平衡方法 |
CN113961868B (zh) * | 2021-12-22 | 2022-03-18 | 石家庄学院 | 一种基于区块链的物流搬运调节方法、***及存储介质 |
CN114866561B (zh) * | 2022-05-03 | 2023-09-01 | 中国人民解放军国防科技大学 | 一种组合本地纠删码联盟链存储方法及*** |
CN115499453B (zh) * | 2022-06-28 | 2024-03-12 | 重庆邮电大学 | 面向联盟链的分片存储方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201832513A (zh) * | 2017-01-31 | 2018-09-01 | 安地卡及巴布達商區塊鏈控股有限公司 | 用於更新網路的關於網路拓樸的知識之電腦實施系統及方法 |
US20180323965A1 (en) * | 2017-05-03 | 2018-11-08 | International Business Machines Corporation | Reduction in storage usage in blockchain |
CN109032802A (zh) * | 2018-07-26 | 2018-12-18 | 国信优易数据有限公司 | 一种区块链***和管理方法 |
US20190230089A1 (en) * | 2018-01-19 | 2019-07-25 | International Business Machines Corporation | Building trusted public blockchain networks based on participants' digital social behavior |
US20190327180A1 (en) * | 2018-04-23 | 2019-10-24 | EMC IP Holding Company LLC | Decentralized data management across highly distributed systems |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3420669B1 (en) | 2016-02-23 | 2021-03-24 | Nchain Holdings Limited | Cryptographic method and system for secure extraction of data from a blockchain |
PT3440823T (pt) * | 2016-04-05 | 2020-12-04 | Zamna Tech Limited | Método e sistema para gestão de informações pessoais dentro de sistemas informáticos independentes e redes digitais |
CN107104816A (zh) * | 2017-03-07 | 2017-08-29 | 阿里巴巴集团控股有限公司 | 一种信息变更监控方法和装置 |
CN110445619B (zh) | 2017-03-30 | 2020-10-16 | 腾讯科技(深圳)有限公司 | 区块链***、消息处理方法及存储介质 |
US11095432B2 (en) * | 2017-04-05 | 2021-08-17 | Samsung Sds Co., Ltd. | System for processing data based on blockchain and operating method thereof |
CN107171829B (zh) * | 2017-04-24 | 2019-12-24 | 杭州趣链科技有限公司 | 一种基于bft共识算法实现的动态节点管理方法 |
GB201711879D0 (en) * | 2017-07-24 | 2017-09-06 | Nchain Holdings Ltd | Computer-implemented system and method |
CN107592292B (zh) * | 2017-07-26 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 一种区块链节点间通信方法及装置 |
US10749879B2 (en) * | 2017-08-31 | 2020-08-18 | Topia Technology, Inc. | Secure decentralized file sharing systems and methods |
WO2019133682A1 (en) * | 2017-12-29 | 2019-07-04 | Nanthealth, Inc. | User interface log validation via blockchain system and methods |
US11728995B2 (en) * | 2018-04-09 | 2023-08-15 | American Express Travel Related Services Company, Inc. | Reward point transfers using blockchain |
US11563557B2 (en) * | 2018-04-24 | 2023-01-24 | International Business Machines Corporation | Document transfer processing for blockchains |
TWI661706B (zh) * | 2018-05-23 | 2019-06-01 | 蔣永和 | 運用區塊鏈技術之節點系統及其運行方法 |
CN109104415B (zh) * | 2018-07-21 | 2021-07-20 | 江苏飞搏软件股份有限公司 | 构建可信节点网络的***及方法 |
CN109359223A (zh) * | 2018-09-17 | 2019-02-19 | 重庆邮电大学 | 基于纠删码实现的区块链账本分布式存储技术 |
US11729186B2 (en) * | 2018-10-04 | 2023-08-15 | Research Foundation Of The City University Of New York | Blockchain architecture for computer security applications |
US10826705B2 (en) * | 2018-12-13 | 2020-11-03 | International Business Machines Corporation | Compact state database system |
AU2018348336B2 (en) | 2018-12-13 | 2020-07-23 | Advanced New Technologies Co., Ltd. | Performing a change of primary node in a distributed system |
AU2018348334C1 (en) * | 2018-12-13 | 2021-05-13 | Advanced New Technologies Co., Ltd. | Achieving consensus among network nodes in a distributed system |
CN109871366B (zh) * | 2019-01-17 | 2021-09-10 | 华东师范大学 | 一种基于纠删码的区块链分片存储与查询方法 |
WO2019120336A2 (en) * | 2019-04-19 | 2019-06-27 | Alibaba Group Holding Limited | Methods and devices for establishing communication between blockchain networks |
US11009859B2 (en) * | 2019-05-06 | 2021-05-18 | Fisher-Rosemount Systems, Inc. | Framework for privacy-preserving big-data sharing using distributed ledger |
CN110096894B (zh) * | 2019-05-10 | 2023-01-17 | 东北大学 | 一种基于区块链的数据匿名共享***及方法 |
CN110175212B (zh) * | 2019-05-22 | 2021-07-06 | 杭州复杂美科技有限公司 | 区块链分布式存储方法、数据读取方法、设备和存储介质 |
EP3665892B1 (en) * | 2019-06-21 | 2022-01-12 | Advanced New Technologies Co., Ltd. | Methods and systems for automatic blockchain deployment based on cloud platform |
WO2021016998A1 (en) * | 2019-08-01 | 2021-02-04 | Advanced New Technologies Co., Ltd. | Shared blockchain data storage based on error correction code |
SG11202002912XA (en) * | 2019-08-01 | 2021-03-30 | Advanced New Technologies Co Ltd | Shared blockchain data storage based on error correction code |
CN111033491B (zh) * | 2019-08-01 | 2023-06-30 | 创新先进技术有限公司 | 基于纠错编码存储共享的区块链数据 |
EP3673404A4 (en) * | 2019-08-20 | 2020-10-14 | Alibaba Group Holding Limited | BLOCKCHAIN DATA STORAGE BASED ON SHARED N UDS AND ERROR CORRECTION CODE |
CN110730204B (zh) * | 2019-09-05 | 2022-09-02 | 创新先进技术有限公司 | 区块链网络中删除节点的方法和区块链*** |
EP3682342B1 (en) * | 2019-09-11 | 2021-08-18 | Advanced New Technologies Co., Ltd. | Shared blockchain data storage based on error correction coding in trusted execution environments |
AU2019302939B2 (en) * | 2019-10-15 | 2021-12-16 | Alipay (Hangzhou) Information Technology Co., Ltd. | Indexing and recovering encoded blockchain data |
-
2019
- 2019-11-06 EP EP19850170.2A patent/EP3769216B1/en active Active
- 2019-11-06 KR KR1020207030957A patent/KR102363271B1/ko active IP Right Grant
- 2019-11-06 JP JP2020561077A patent/JP7004423B2/ja active Active
- 2019-11-06 AU AU2019320956A patent/AU2019320956B2/en active Active
- 2019-11-06 SG SG11202010725TA patent/SG11202010725TA/en unknown
- 2019-11-06 WO PCT/CN2019/115878 patent/WO2020035086A2/en unknown
- 2019-11-06 CA CA3098932A patent/CA3098932C/en active Active
- 2019-11-06 CN CN201980005848.4A patent/CN111373378B/zh active Active
-
2020
- 2020-07-13 TW TW109123543A patent/TWI759791B/zh active
- 2020-10-28 US US17/082,339 patent/US11057190B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201832513A (zh) * | 2017-01-31 | 2018-09-01 | 安地卡及巴布達商區塊鏈控股有限公司 | 用於更新網路的關於網路拓樸的知識之電腦實施系統及方法 |
US20180323965A1 (en) * | 2017-05-03 | 2018-11-08 | International Business Machines Corporation | Reduction in storage usage in blockchain |
US20190230089A1 (en) * | 2018-01-19 | 2019-07-25 | International Business Machines Corporation | Building trusted public blockchain networks based on participants' digital social behavior |
US20190327180A1 (en) * | 2018-04-23 | 2019-10-24 | EMC IP Holding Company LLC | Decentralized data management across highly distributed systems |
CN109032802A (zh) * | 2018-07-26 | 2018-12-18 | 国信优易数据有限公司 | 一种区块链***和管理方法 |
Also Published As
Publication number | Publication date |
---|---|
JP7004423B2 (ja) | 2022-01-21 |
CN111373378B (zh) | 2022-03-18 |
SG11202010725TA (en) | 2020-11-27 |
EP3769216A2 (en) | 2021-01-27 |
TW202119210A (zh) | 2021-05-16 |
JP2021520574A (ja) | 2021-08-19 |
US20210044422A1 (en) | 2021-02-11 |
US11057190B2 (en) | 2021-07-06 |
AU2019320956B2 (en) | 2021-11-25 |
KR20210055631A (ko) | 2021-05-17 |
EP3769216A4 (en) | 2021-05-05 |
AU2019320956A1 (en) | 2021-05-20 |
CN111373378A (zh) | 2020-07-03 |
CA3098932C (en) | 2021-09-28 |
WO2020035086A2 (en) | 2020-02-20 |
EP3769216B1 (en) | 2022-03-16 |
KR102363271B1 (ko) | 2022-02-14 |
CA3098932A1 (en) | 2020-02-20 |
WO2020035086A3 (en) | 2020-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI737392B (zh) | 電腦實現的用於由區塊鏈網路的區塊鏈節點在可信賴執行環境tee中處理區塊鏈資料的方法、通信共享區塊鏈資料的系統及用於通信共享區塊鏈資料的裝置 | |
TWI759791B (zh) | 基於錯誤校正碼的共享區塊鏈資料儲存的方法、系統及裝置 | |
TWI729880B (zh) | 可信賴執行環境中基於錯誤校正編碼的共享區塊鏈資料儲存 | |
TWI720918B (zh) | 基於錯誤校正碼之共用區塊鏈資料儲存的共識 | |
TWI740575B (zh) | 用於優先化共用區塊鏈資料儲存的方法、系統和裝置 |