TW202119243A - 優先化共用區塊鏈資料儲存 - Google Patents
優先化共用區塊鏈資料儲存 Download PDFInfo
- Publication number
- TW202119243A TW202119243A TW109123721A TW109123721A TW202119243A TW 202119243 A TW202119243 A TW 202119243A TW 109123721 A TW109123721 A TW 109123721A TW 109123721 A TW109123721 A TW 109123721A TW 202119243 A TW202119243 A TW 202119243A
- Authority
- TW
- Taiwan
- Prior art keywords
- blockchain
- blocks
- data
- node
- nodes
- 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/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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- 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/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/182—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
-
- 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
-
- 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/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/3247—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 digital signatures
-
- 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
-
- 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
-
- 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
-
- 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/46—Secure multiparty computation, e.g. millionaire problem
- H04L2209/463—Electronic voting
-
- 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/56—Financial cryptography, e.g. electronic payment or e-cash
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)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Error Detection And Correction (AREA)
Abstract
本文公開了用於儲存區塊鏈資料的方法、系統和裝置,包括編碼在電腦儲存媒體上的電腦程式。所述方法之一包括:從區塊鏈網路中的區塊鏈節點接收多個區塊;對於所述多個區塊中的每個區塊:確定儲存從所述區塊的錯誤校正編碼(ECC)編碼版本劃分的資料集的區塊鏈節點的第一數量和儲存從所述區塊的ECC編碼版本劃分的由冗餘位元組成的資料集的區塊鏈節點的第二數量;基於所述第一數量和所述第二數量計算所述區塊的優先順序值,以及基於所述優先順序值使用ECC對所述多個區塊的至少一部分進行編碼,以生成多個編碼區塊。
Description
本說明書涉及基於錯誤校正碼優先化區塊鏈資料共用儲存。
分散式帳本系統(DLS),也可稱為共識網路和/或區塊鏈網路,使參與的實體能夠安全地且不可篡改地儲存資料。在不引用任何特定用例的情況下,分散式帳本系統通常被稱為區塊鏈網路。區塊鏈網路的示例類型可以包括公有區塊鏈網路、私有區塊鏈網路和聯盟區塊鏈網路。聯盟區塊鏈網路針對選定的實體組群提供,該實體組群控制共識過程,並且所述聯盟區塊鏈網路包括存取控制層。
基於區塊鏈的程式可以由分散式運算平臺執行。例如,分散式運算平臺可以包括提供用於執行智能合約的運行時環境的虛擬機器。區塊鏈計算平臺可以被視為基於交易的狀態機。平臺中的狀態資料可以集合成稱為世界狀態的全域共用狀態。世界狀態包括帳號位址和帳號狀態之間的映射。世界狀態可以被儲存在諸如默克爾派特裡夏樹(MPT)的資料結構中。
除了狀態資料,區塊鏈網路還可以儲存其他類型的資料,例如區塊資料和索引資料。區塊資料可以包括區塊頭和區塊體。區塊頭可以包括特定區塊的身份資訊,並且區塊體可以包括該區塊確認的交易。隨著越來越多的交易進入區塊鏈,狀態資料和區塊資料的大小可能會變得非常大。在某些DLS中,每個節點都儲存整個區塊鏈副本,這會佔用大量儲存空間。這是因為所有區塊資料和狀態資料以回溯到記錄在區塊鏈的第一筆交易的方式被儲存。在某些DLS中,一些共用節點儲存整個區塊鏈副本,並與其他可能產生“資料不平等”的區塊鏈節點共用區塊鏈資料。也就是說,當資料在不同節點之間分佈不均時,當儲存大多數資料的節點出現故障時,資料安全性風險可能會很高。
因此,期望能夠實現一種在容忍故障節點存在的同時保持資料同等性和完整性的資料儲存方案。還期望資料儲存方案可根據對區塊鏈網路所做的更改進行調整,並指示可帶來儲存節省最大化的資料處理方式。
所描述的主題的實施方案可以包括單獨或組合的一個或多個特徵。
例如,在一個實施例中,公開了一種電腦實現的在由計算設備執行的可信執行環境(TEE)中處理區塊鏈資料的方法。所述計算設備從區塊鏈網路中的區塊鏈節點接收多個區塊。對於所述多個區塊中的每個區塊,所述計算設備確定儲存從所述區塊的錯誤校正編碼(ECC)編碼版本劃分的資料集的區塊鏈節點的第一數量和儲存從所述區塊的ECC編碼版本劃分的由冗餘位元組成的資料集的區塊鏈節點的第二數量,基於所述第一數量和所述第二數量計算所述區塊的優先順序值。並使用ECC對所述多個區塊的至少一部分進行編碼,以生成多個編碼區塊,其中所述多個區塊的所述至少一部分的優先順序值比所述多個區塊中除所述多個區塊的所述至少一部分以外的剩餘部分的優先順序值小,並且所述多個區塊的至少一部分的編碼率等於所述區塊鏈網路所需的最小誠實區塊鏈節點數除以所述區塊鏈網路中的區塊鏈節點的總數。
在一些實施例中,這些一般和特定態樣可以使用系統、方法或電腦程式,或系統、方法和電腦程式的任何組合來實現。前述和其他描述的實施例可以各自可選地包括以下特徵中的一個或多個:
在一些實施例中,在對所述多個區塊的至少一部分進行編碼之後,所述計算設備基於所述區塊鏈網路可容忍的最大故障區塊鏈節點數和所述區塊鏈節點的總數,計算所述多個區塊的更新的優先順序值,其中所需的最小誠實區塊鏈節點數加可容忍的最大故障區塊鏈節點數為所述總數。
在一些實施例中,所述計算設備生成提供所述多個區塊的區塊標識(ID)與所述多個區塊的優先順序值之間的對應關係的索引,並用更新的優先順序值更新所述多個區塊的至少一部分的優先順序值。
在一些實施例中,所述計算設備將所述多個編碼區塊分別劃分為多個資料集,計算所述多個資料集的雜湊值,並且向所述區塊鏈節點分別發送所述多個資料集中的至少一個資料集、所述雜湊值以及提供所述多個資料集與所述雜湊值之間的對應關係的索引。
在一些實施例中,所述多個區塊的至少一部分是所述多個區塊的第一至少一部分,所述計算設備還執行以下操作:接收通知,所述通知表示在儲存由所述計算設備發送的所述多個資料集中的至少一個資料集並刪除所述多個區塊的所述第一至少一部分之後,所述區塊鏈節點上儲存的區塊鏈資料的大小超過預定資料儲存閾值;使用ECC對所述多個區塊的第二至少一部分進行編碼,其中,所述多個區塊的第二至少一部分的優先順序值比所述多個區塊的所述第一至少一部分的優先順序值大,並且比所述多個區塊中除所述多個區塊的所述第一至少一部分和所述多個區塊的所述第二至少一部分之外的剩餘部分的優先順序值小;以及使用更新的優先順序值更新所述多個區塊的所述第二至少一部分的優先順序值。
在一些實施例中,當所述計算設備的計算資源的利用率小於或等於預定值時,執行所述ECC。
在一些實施例中,所述ECC是通過向所述多個區塊添加冗餘位元來執行的糾刪編碼。
在一些實施例中,優先順序值被計算為所述第一數量減去所述第一數量除以所述第一數量和所述第二數量之間的差。
在一些實施例中,所述區塊鏈節點是儲存所述區塊鏈的副本的全節點。
在一些實施例中,所需的最小誠實區塊鏈節點數基於實用拜占庭容錯(PBFT)共識協定確定。
應該瞭解,根據本文的方法可以包括本文描述的態樣和特徵的任意組合。也就是說,根據本文的方法不限於本文具體描述的態樣和特徵的組合,還包括所提供的態樣和特徵的任意組合。
以下在附圖和描述中闡述了本文的一個或多個實施方式的細節。根據說明書和附圖以及申請專利範圍,本文的其他特徵和優點將顯現。
本說明書描述了在可信執行環境(TEE)中處理區塊鏈資料的技術。這些技術通常涉及從區塊鏈網路中的區塊鏈節點接收多個區塊;對於多個區塊中的每個區塊:確定儲存從所述區塊的錯誤校正編碼(ECC)編碼版本劃分的資料集的區塊鏈節點的第一數量和儲存從所述區塊的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可以用區塊ID 100索引與區塊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
表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–m≤N–F。也就是說,當E–m≤N–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,對於所述多個區塊中的每個區塊,計算設備確定儲存從所述區塊的ECC編碼版本劃分的資料集的區塊鏈節點的第一數量和儲存從所述區塊的ECC編碼版本劃分的由冗餘位元組成的資料集的區塊鏈節點的第二數量。
在906,計算設備基於所述第一數量和所述第二數量,計算所述區塊的優先順序值。在908,計算設備使用ECC對所述多個區塊的至少一部分進行編碼以生成多個編碼區塊,其中,所述多個區塊的至少一部分的優先順序值比所述多個區塊中除所述多個區塊的至少一部分以外的剩餘部分的優先順序值小,並且所述多個區塊的至少一部分的編碼率等於所述區塊鏈網路所需的最小誠實區塊鏈節點數除以所述區塊鏈網路中的區塊鏈節點的總數。在某些情況下,所需的最小誠實區塊鏈節點數基於PBFT共識協定確定。
在某些情況下,在對所述多個區塊的至少一部分進行編碼之後,所述計算設備基於所述區塊鏈網路可容忍的最大故障區塊鏈節點數和所述區塊鏈節點的總數,計算所述多個區塊的更新的優先順序值,其中所需的最小誠實區塊鏈節點數加可容忍的最大故障區塊鏈節點數為所述總數。
在某些情況下,所述計算設備還生成提供所述多個區塊的區塊ID與所述多個區塊的優先順序值之間的對應關係的索引,並用更新的優先順序值更新所述多個區塊的至少一部分的優先順序值。
在某些情況下,所述計算設備將所述多個編碼區塊分別劃分為多個資料集,計算所述多個資料集的雜湊值,並且向所述區塊鏈節點分別發送所述多個資料集中的至少一個資料集、所述雜湊值以及提供所述多個資料集與所述雜湊值之間的對應關係的索引。
在某些情況下,所述多個區塊的至少一部分是所述多個區塊的第一至少一部分,所述計算設備還執行以下操作:接收通知,所述通知表示在儲存由所述計算設備發送的多個資料集中的至少一個資料集並刪除所述多個區塊的第一至少一部分之後,所述區塊鏈節點上儲存的區塊鏈資料的大小超過預定資料儲存閾值;使用ECC對所述多個區塊的第二至少一部分進行編碼,其中,所述多個區塊的第二至少一部分的優先順序值比所述多個區塊的第一至少一部分的優先順序值大,並且比所述多個區塊中除所述多個區塊的第一至少一部分和所述多個區塊的第二至少一部分之外的剩餘部分的優先順序值小;以及使用更新的優先順序值更新所述多個區塊的第二至少一部分的優先順序值。
在某些情況下,所述優先順序值被計算為所述第一數量減去所述第一數量除以所述第一數量和所述第二數量之間的差。
在某些情況下,當計算設備的計算資源的利用率小於或等於預定值時,執行所述ECC。在某些情況下,所述ECC是通過向所述多個區塊添加冗餘位元來執行的糾刪編碼。
圖10是根據本文的實施例的裝置1000的模組的示例的圖。裝置1000可以是承載被配置為處理區塊鏈資料的TEE的計算設備的實施例的示例。裝置1000可以對應於上述實施例,裝置1000包括:接收模組1002,其用於從區塊鏈網路中的區塊鏈節點接收多個區塊;確定模組1004,對於所述多個區塊中的每個區塊,確定儲存從所述區塊的ECC編碼版本中劃分的資料集的區塊鏈節點的第一數量和儲存從所述區塊的ECC編碼版本劃分的由冗餘位元組成的資料集的區塊鏈節點的第二數量;計算模組1006,基於所述第一數量和所述第二數量,計算所述區塊的優先順序值;編碼模組1008,使用ECC對所述多個區塊的至少一部分進行編碼以生成多個編碼區塊,其中,所述多個區塊的至少一部分的優先順序值比所述多個區塊中除所述多個區塊的至少一部分之外的剩餘部分的優先順序值小,並且所述多個區塊的至少一部分的編碼率等於所述區塊鏈網路所需的最小誠實區塊鏈節點數除以所述區塊鏈網路中的區塊鏈節點的總數。
在一些實施例中,在對所述多個區塊的至少一部分進行編碼之後,所述計算模組1006還基於所述區塊鏈網路可容忍的最大故障區塊鏈節點數和所述區塊鏈節點的總數,計算所述多個區塊的更新的優先順序值,其中所需的最小誠實區塊鏈節點數加可容忍的最大故障區塊鏈節點數為所述總數。
在一些實施例中,裝置1000還包括:生成子模組,所述生成子模組生成提供所述多個區塊的區塊ID與所述多個區塊的優先順序值之間的對應關係的索引;和更新子模組,所述更新子模組使用更新的優先順序值更新所述多個區塊的至少一部分的優先順序值。
在一些實施例中,裝置1000還包括:劃分子模組,所述劃分子模組將所述多個編碼區塊分別劃分成多個資料集;所述計算模組1006還計算所述多個資料集的雜湊值;發送模組,所述發送模組向多個區塊鏈節點分別發送所述多個資料集中的至少一個資料集、所述雜湊值以及提供所述多個資料集與所述雜湊值之間的對應關係的索引。
在一些實施例中,所述多個區塊的至少一部分是所述多個區塊的第一至少一部分,所述接收模組1002還接收通知,所述通知表示在儲存由所述計算設備發送的多個資料集中的至少一個資料集並刪除所述多個區塊的第一至少一部分之後,所述區塊鏈節點上儲存的區塊鏈資料的大小超過預定資料儲存閾值;所述編碼模組1008還使用ECC對所述多個區塊的第二至少一部分進行編碼,其中,所述多個區塊的第二至少一部分的優先順序值比所述多個區塊的第一至少一部分的優先順序值大,並且比所述多個區塊中除所述多個區塊的第一至少一部分和所述多個區塊的第二至少一部分之外的剩餘部分的優先順序值小;以及使用更新的優先順序值更新所述多個區塊的第二至少一部分的優先順序值。
在一些實施例中,當計算設備的計算資源的利用率小於或等於預定值時,執行所述ECC。
在一些實施例中,所述ECC是通過向所述多個區塊添加冗餘位元來執行的糾刪編碼。
在一些實施例中,所述優先順序值被計算為所述第一數量減去所述第一數量除以所述第一數量和所述第二數量之間的差。
在一些實施例中,區塊鏈節點是儲存區塊鏈的副本的全節點。
在一些實施例中,所需的最小誠實區塊鏈節點數基於PBFT共識協定確定。
在先前實施中示出的系統、裝置、模組或單元可以通過使用電腦晶片或實體來實現,或者可以通過使用具有特定功能的產品來實現。典型的實施例設備是電腦,電腦可以是個人電腦、膝上型電腦、蜂巢式電話、相機電話、智慧型電話、個人數位助理、媒體播放機、導航設備、電子郵件接收和發送設備、遊戲控制台、平板電腦、可穿戴設備或這些設備的任意組合。
對於裝置中每個模組的功能和角色的實施例過程,可以參考前一方法中相應步驟的實施例過程。為了簡單起見,這裡省略了細節。
由於裝置實施例基本上與方法實施例相對應,因此對於相關部分,可以參考方法實施例中的相關描述。前述裝置實施例僅僅是示例。被描述為單獨部分的模組可以是或可以不是物理上分離的,並且顯示為模組的部分可以是或可以不是物理模組,可以位於一個位置,或者可以分佈在多個網路模組上。可以基於實際需求來選擇一些或所有模組,以實現本文方案的目標。本領域普通技術人員在無需付出進步性努力的情況下就能理解和實現本申請的實施例。
再次參考圖10,可以解釋為示出了內部功能模組和區塊鏈節點的結構。本質上,執行主體可以是電子設備,該電子設備包括:一個或多個處理器;被配置為儲存一個或多個處理器的可執行指令的一個或多個電腦可讀記憶體。在一些實施例中,一個或多個電腦可讀記憶體耦接至一個或多個處理器且其上儲存有程式設計指令,所述程式設計指令能夠由所述一個或多個處理器執行以執行如本文中所述的演算法、方法、函數、處理、流程和程式。本文還提供了耦接至一個或多個處理器並且其上儲存有指令的一個或多個非暫時性電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令將促使所述一個或多個處理器按照本文提供的方法的實施例執行操作。
本文還提供了用於實施本文提供的所述方法的系統。所述系統包括一個或多個處理器以及耦接到所述一個或多個處理器並且其上儲存有指令的電腦可讀儲存媒體,當所述指令由所述一個或多個處理器執行時,所述指令將促使所述一個或多個處理器按照本文提供的方法的實施例執行操作。
本文中描述的主題、動作和操作的實施例可以在數位電子電路中、有形體現的電腦軟體或韌體中、包括本文中公開的結構及其結構等同物的電腦硬體中,或者它們中的一個或多個的組合中實現。本文中描述的主題的實施例可以實現為一個或多個電腦程式,例如,一個或多個電腦程式指令模組,編碼在電腦程式載體上,用於由資料處理裝置執行或控制資料處理的操作。例如,電腦程式載體可以包括具有編碼在其上或儲存在其上的指令的一個或多個電腦可讀儲存媒體。載體可以是有形的非暫態電腦可讀媒體,例如磁片、磁光碟或光碟、固態驅動器、隨機存取記憶體(RAM)、唯讀記憶體(ROM)或其他媒體類型。可選地或附加地,載體可以是人工生成的傳播信號,例如,機器生成的電、光或電磁信號,其被生成為對資訊進行編碼用於傳輸到合適的接收器裝置以供資料處理裝置執行。電腦儲存媒體可以是或可以部分是機器可讀儲存設備、機器可讀儲存基板、隨機或串列存取記憶體設備或它們中的一個或多個的組合。電腦儲存媒體不是傳播信號。
電腦程式也可以被稱為或描述為程式、軟體、軟體應用程式、app、模組、軟體模組、引擎、腳本或代碼,可以以任何形式的程式設計語言編寫,包括編譯或解釋語言、說明或程式性語言;它可以被配置為任何形式,包括作為獨立程式,或者作為模組、元件、引擎、副程式或適合在計算環境中執行的其他單元,該環境可以包括由資料通信網路互連的在一個或多個位置的一台或多台電腦。
電腦程式可以但非必須對應於檔案系統中的檔。電腦程式可以儲存在:保存其他程式或資料的檔的一部分中,例如,儲存在標記語言文檔中的一個或多個腳本;專用於所討論的程式的單個檔;或者多個協調檔,例如,儲存一個或多個模組、副程式或代碼部分的多個檔。
舉例來說,用於執行電腦程式的處理器包括通用和專用微處理器,以及任何類型的數位電腦的任何一個或多個處理器。通常,處理器將從耦接到處理器的非暫態電腦可讀媒體接收用於執行的電腦程式的指令並且接收資料。
術語“資料處理裝置”包括用於處理資料的所有類型的裝置、設備和機器,包括例如可程式設計處理器、電腦或多個處理器或電腦。資料處理裝置可以包括例如FPGA(現場可程式設計閘陣列),ASIC(專用積體電路)或GPU(圖形處理單元)的專用邏輯電路。除了硬體,該裝置還可以包括為電腦程式創建執行環境的代碼,例如,構成處理器韌體、協定協定疊、資料庫管理系統、作業系統、或者它們中的一個或多個的組合的代碼。
本文中描述的處理和邏輯流程可以由一台或多台電腦或處理器執行一個或多個電腦程式進行,以通過對輸入資料進行運算並生成輸出來執行操作。過程和邏輯流程也可以由例如FPGA、ASIC或GPU等的專用邏輯電路或專用邏輯電路與一個或多個程式設計電腦的組合來執行。
適合於執行電腦程式的電腦可以基於通用和/或專用微處理器,或任何其他種類的中央處理單元。通常,中央處理單元將從唯讀記憶體和/或隨機存取記憶體接收指令和資料。電腦的元件可以包括用於執行指令的中央處理單元和用於儲存指令和資料的一個或多個儲存設備。中央處理單元和記憶體可補充有專用邏輯電路或集成在專用邏輯電路中。
通常,電腦還將包括或可操作地耦接為從一個或多個儲存設備接收資料或將資料傳輸到一個或多個儲存設備。儲存設備可以是例如磁片、磁光碟或光碟、固態驅動器或任何其他類型的非暫態電腦可讀媒體。然而,電腦不需要具有這樣的設備。因此,電腦可以耦接到本地和/或遠端的例如一個或多個記憶體的一個或多個儲存設備。例如,電腦可以包括作為電腦的集成元件的一個或多個本機存放區器,或者電腦可以耦接到雲端網路中的一個或多個遠端存放器。此外,電腦可以嵌入在另一個設備中,例如行動電話,個人數位助理(PDA),移動音訊或視頻播放機,遊戲控制台,全球定位系統(GPS)接收器或例如通用序列匯流排(USB)快閃記憶體驅動器的可攜式儲存設備,僅舉幾例。
元件可以通過諸如直接地連接、或經由一個或多個中間元件彼此電學連接或光學連接可通信地連接而彼此“耦接”。如果其中一個元件被集成到另一個元件中,元件也可以彼此“耦接”。例如,集成到處理器中的儲存元件(例如,L2快取記憶體組件)“耦接到”處理器。
為了提供與用戶的交互,本文中所描述的主題的實施例可以在電腦上實現或配置為與該電腦通信,該計算機具有:顯示裝置,例如,LCD(液晶顯示器)監視器,用於向用戶顯示資訊;以及輸入裝置,用戶可以通過該輸入裝置向該電腦提供輸入,例如鍵盤和例如滑鼠、軌跡球或觸控板等的指標裝置。其他類型的設備也可以用於提供與用戶的交互;例如,提供給用戶的回饋可以是任何形式的感覺回饋,例如視覺回饋、聽覺回饋或觸覺回饋;並且可以接收來自用戶的任何形式的輸入,包括聲音、語音或觸覺輸入。此外,電腦可以通過向用戶使用的設備發送文檔和從用戶使用的設備接收文檔來與用戶交互;例如,通過回應於從用戶設備上的web流覽器收到的請求,向web流覽器發送web頁面,或者通過與例如智慧型電話或電子平板電腦等的用戶設備上運行的應用程式(app)進行交互。此外,電腦可以通過向個人設備(例如,運行訊息應用的智能手機)發送文本訊息或其他形式的訊息並作為回應接收來自用戶的回應訊息來與用戶交互。
本文使用與系統,裝置和電腦程式元件有關的術語“配置為”。對於被配置為執行特定操作或動作的一個或多個電腦的系統,意味著系統已經在其上安裝了在運行中促使該系統執行所述操作或動作的軟體、韌體、硬體或它們的組合。對於被配置為執行特定操作或動作的一個或多個電腦程式,意味著一個或多個程式包括當被資料處理裝置執行時促使該裝置執行所述操作或動作的指令。對於被配置為執行特定操作或動作的專用邏輯電路,意味著該電路具有執行所述操作或動作的電子邏輯。
儘管本文包含許多具體實施例細節,但這些不應被解釋為對由申請專利範圍本身限定的請求保護的範圍的限制,而是作為對特定實施例的具體特徵的描述。在本文單獨實施例的上下文中描述的某些特徵也可以在單個實施例中組合實現。相反,在單個實施例的上下文中描述的各種特徵也可以單獨地或以任何合適的子組合在多個實施例中實現。此外,儘管上面的特徵可以被描述為以某些組合起作用並且甚至最初被如此請求保護,但是在一些情況下,可以從請求保護的組合中刪除來自該組合的一個或多個特徵,並且申請專利範圍可以涉及子組合或子組合的變體。
類似地,雖然以特定順序在附圖中描繪了操作並且在申請專利範圍中敘述了操作,但是這不應該被理解為:為了達到期望的結果,要求以所示的特定順序或序列循序執行這些操作,或者要求執行所有示出的操作。在某些情況下,多工和並行處理可能是有利的。此外,上述實施例中的各種系統模組和元件的劃分不應被理解為所有實施例中都要求如此劃分,而是應當理解,所描述的程式元件和系統通常可以一起集成在單個軟體產品中或打包成多個軟體產品。
已經描述了主題的特定實施例。其他實施例在以下申請專利範圍的範圍內。例如,申請專利範圍中記載的動作可以以不同的循序執行並且仍然實現期望的結果。作為一個示例,附圖中描繪的過程無需要求所示的特定順序或序列順序來實現期望的結果。在一些情況下,多工和並行處理可能是有利的。
區塊ID | 冗餘率 | 容錯能力 |
1-100 | 5+(3+1)/3 | 6/9 |
101–200 | 4+(4+1)/4 | 5/9 |
201–300 | 3+(5+1)/5 | 4/9 |
301–400 | 2+(5+2)/5 | 4/9 |
401–500 | 1+(6+2)/6 | 3/9 |
100:環境
102:聯盟區塊鏈網路
106,108:計算系統
110:網路
202,204,206:參與者系統
212:區塊鏈網路
214:節點
216:區塊鏈
300:編碼和雜湊處理
302,304,306,308:區塊鏈節點
312:儲存到區塊
314:ECC
316:雜湊處理
400:資料儲存方案
500:編碼和雜湊處理
502,504,506,508:區塊鏈節點
512:區塊資料被添加至區塊
514:ECC
516:雜湊處理
600:共用區塊鏈資料儲存的處理
610:區塊鏈網路
620:可信節點
630a-d:區塊鏈節點
700:示例
800:共識處理
802,804,806,808:區塊鏈節點
810:可信節點
812:請求階段
814:回應階段
816:提交階段
900:處理
1000:裝置
1002:接收模組
1004:確定模組
1006:計算模組
1008:編碼模組
[圖1]描繪了可用於執行本文實施例的環境的示例。
[圖2]描繪了根據本文的實施例的架構的示例。
[圖3]描繪了根據本文的實施例的區塊資料的編碼和雜湊處理的示例。
[圖4]描繪了根據本文的實施例的資料儲存方案的示例。
[圖5]描繪了根據本文的實施例的區塊資料的編碼和雜湊處理的另一示例。
[圖6]描繪了根據本文的實施例的基於可信執行環境(TEE)的共用區塊鏈資料儲存過程的示例。
[圖7]描繪了根據本文的實施例的向區塊鏈網路添加區塊鏈節點的示例。
[圖8]描繪了根據本文的實施例的共識處理的示例。
[圖9]描繪了可以根據本文的實施例執行的過程的示例。
[圖10]描繪了根據本文的實施例的裝置的模組的示例。
各附圖中相同的附圖標記和名稱表示相同的元件。
600:共用區塊鏈資料儲存的處理
610:區塊鏈網路
620:可信節點
630a-d:區塊鏈節點
Claims (12)
- 一種電腦實現的用於在可通信地耦接到區塊鏈網路的計算設備上執行的可信執行環境TEE中處理區塊鏈資料的方法,所述方法包括: 從所述區塊鏈網路中的區塊鏈節點接收多個區塊; 對於所述多個區塊中的每個區塊: 確定儲存從所述區塊的錯誤校正編碼(ECC)編碼版本中劃分的資料集的區塊鏈節點的第一數量和儲存從所述區塊的ECC編碼版本中劃分的由冗餘位元組成的資料集的區塊鏈節點的第二數量; 基於所述第一數量和所述第二數量,計算所述區塊的優先順序值;並且 使用ECC對所述多個區塊的至少一部分進行編碼以生成多個編碼區塊,其中,所述多個區塊的所述至少一部分的優先順序值比所述多個區塊中除所述多個區塊的所述至少一部分以外的剩餘部分的優先順序值小,並且所述多個區塊的至少一部分的編碼率等於所述區塊鏈網路所需的最小誠實區塊鏈節點數除以所述區塊鏈網路中的區塊鏈節點的總數。
- 如請求項1所述的方法,還包括: 在對所述多個區塊的至少一部分進行編碼之後,基於所述區塊鏈網路可容忍的最大故障區塊鏈節點數和所述區塊鏈節點的總數,計算所述多個區塊的更新的優先順序值,其中所述所需的最小誠實區塊鏈節點數加所述可容忍的最大故障區塊鏈節點數為所述總數。
- 如請求項2所述的方法,還包括: 生成提供所述多個區塊的區塊標識(ID)與所述多個區塊的優先順序值之間的對應關係的索引;以及 用所述更新的優先順序值更新所述多個區塊的至少一部分的優先順序值。
- 如請求項1所述的方法,還包括: 將所述多個編碼區塊分別劃分為多個資料集; 計算所述多個資料集的雜湊值;並且 向所述區塊鏈節點分別發送所述多個資料集中的至少一個資料集、所述雜湊值以及提供所述多個資料集與所述雜湊值之間的對應關係的索引。
- 如請求項4所述的方法,其中,所述多個區塊的至少一部分是所述多個區塊的第一至少一部分,並且所述方法還包括: 接收通知,所述通知表示在儲存由所述計算設備發送的所述多個資料集中的至少一個資料集並刪除所述多個區塊的所述第一至少一部分之後,所述區塊鏈節點上儲存的區塊鏈資料的大小超過預定資料儲存閾值; 使用ECC對所述多個區塊的第二至少一部分進行編碼,其中,所述多個區塊的第二至少一部分的優先順序值比所述多個區塊的所述第一至少一部分的優先順序值大,並且比所述多個區塊中除所述多個區塊的所述第一至少一部分和所述多個區塊的所述第二至少一部分之外的剩餘部分的優先順序值小;以及 用更新的優先順序值更新所述多個區塊的所述第二至少一部分的優先順序值。
- 如請求項1或5所述的方法,其中,當所述計算設備的計算資源的利用率小於或等於預定值時,執行所述ECC。
- 如請求項1或5所述的方法,其中,所述ECC是通過向所述多個區塊添加冗餘位元來執行的糾刪編碼。
- 如請求項1或5所述的方法,其中,所述優先順序值被計算為所述第一數量減去所述第一數量除以所述第一數量與所述第二數量之間的差。
- 如請求項1或5所述的方法,其中,所述區塊鏈節點是儲存所述區塊鏈的副本的全節點。
- 如請求項1或5所述的方法,其中,所述所需的最小誠實區塊鏈節點數基於實用拜占庭容錯(PBFT)共識協定確定。
- 一種用於通信共用的區塊鏈資料的系統,包括: 一個或多個處理器;和 耦接到所述一個或多個處理器並且其上儲存有指令的一個或多個電腦可讀記憶體,所述指令能由所述一個或多個處理器執行以執行請求項1至10中任一項所述的方法。
- 一種用於通信共用的區塊鏈資料的裝置,所述裝置包括用於執行請求項1至10中的任一項所述的方法的多個模組。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
WOPCT/CN2019/115902 | 2019-11-06 | ||
PCT/CN2019/115902 WO2020035088A2 (en) | 2019-11-06 | 2019-11-06 | Prioritizing shared blockchain data storage |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202119243A true TW202119243A (zh) | 2021-05-16 |
TWI740575B TWI740575B (zh) | 2021-09-21 |
Family
ID=69525957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109123721A TWI740575B (zh) | 2019-11-06 | 2020-07-14 | 用於優先化共用區塊鏈資料儲存的方法、系統和裝置 |
Country Status (10)
Country | Link |
---|---|
US (2) | US11023314B2 (zh) |
EP (1) | EP3769217B1 (zh) |
JP (1) | JP7050955B2 (zh) |
KR (1) | KR102396737B1 (zh) |
CN (1) | CN111417930B (zh) |
AU (1) | AU2019321745B2 (zh) |
CA (1) | CA3098645A1 (zh) |
SG (1) | SG11202010169PA (zh) |
TW (1) | TWI740575B (zh) |
WO (1) | WO2020035088A2 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2019321745B2 (en) | 2019-11-06 | 2022-01-27 | Alipay (Hangzhou) Information Technology Co., Ltd. | Prioritizing shared blockchain data storage |
CN113826354A (zh) * | 2019-11-13 | 2021-12-21 | 支付宝(杭州)信息技术有限公司 | 基于纠错码的区块链数据存储 |
CN111339089B (zh) * | 2020-02-21 | 2023-09-22 | 联动优势科技有限公司 | 一种应用于区块链的数据存储与获取方法及装置 |
CN111311263B (zh) * | 2020-03-18 | 2021-07-16 | 广州知弘科技有限公司 | 区块链节点本地安全记账方法 |
CN111526219B (zh) | 2020-07-03 | 2021-02-09 | 支付宝(杭州)信息技术有限公司 | 一种联盟链的共识方法及联盟链系统 |
CN111984735A (zh) * | 2020-09-03 | 2020-11-24 | 深圳壹账通智能科技有限公司 | 一种数据归档方法、装置、电子设备和存储介质 |
CN112257078B (zh) * | 2020-12-21 | 2021-04-20 | 江苏荣泽信息科技股份有限公司 | 一种基于tee技术的区块链加解密服务安全可信系统 |
US20230214392A1 (en) * | 2021-12-31 | 2023-07-06 | Verizon Patent And Licensing Inc. | Systems and methods for scalable off-chain storage of blockchain-secured data |
CN117076725B (zh) * | 2023-09-12 | 2024-02-09 | 北京云枢创新软件技术有限公司 | 基于底层数据查找树节点的方法、电子设备和介质 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5617541A (en) * | 1994-12-21 | 1997-04-01 | International Computer Science Institute | System for packetizing data encoded corresponding to priority levels where reconstructed data corresponds to fractionalized priority level and received fractionalized packets |
US8713405B2 (en) * | 2011-11-22 | 2014-04-29 | Simplivity Corporation | Method and apparatus for allocating erasure coded data to disk storage |
EP2845100A1 (en) * | 2012-05-04 | 2015-03-11 | Thomson Licensing | Method of storing a data item in a distributed data storage system, corresponding storage device failure repair method and corresponding devices |
EP3440823B1 (en) * | 2016-04-05 | 2020-09-02 | Zamna Technologies Limited | Method and system for managing personal information within independent computer systems and digital networks |
US10554746B2 (en) * | 2016-11-14 | 2020-02-04 | International Business Machines Corporation | Decentralized immutable storage blockchain configuration |
US10749668B2 (en) * | 2017-05-03 | 2020-08-18 | International Business Machines Corporation | Reduction in storage usage in blockchain |
CN107277781B (zh) | 2017-05-03 | 2019-03-22 | 上海点融信息科技有限责任公司 | 移动宽带网络下的区块链多播网络、区块链设备及其通信方法 |
GB201707788D0 (en) * | 2017-05-15 | 2017-06-28 | Nchain Holdings Ltd | Computer-implemented system and method |
US10924265B2 (en) * | 2017-11-22 | 2021-02-16 | International Business Machines Corporation | Blockchain technology |
TWI661706B (zh) * | 2018-05-23 | 2019-06-01 | 蔣永和 | 運用區塊鏈技術之節點系統及其運行方法 |
US11017112B2 (en) * | 2018-07-03 | 2021-05-25 | Tyson York Winarski | Distributed network for storing a redundant array of independent blockchain blocks |
CN109274717B (zh) * | 2018-08-22 | 2021-08-24 | 泰康保险集团股份有限公司 | 基于区块链的共享存储方法、装置、介质及电子设备 |
CN108900364B (zh) * | 2018-08-22 | 2021-11-26 | 泰康保险集团股份有限公司 | 区块链网络的管理方法、装置、介质及电子设备 |
CN109359223A (zh) * | 2018-09-17 | 2019-02-19 | 重庆邮电大学 | 基于纠删码实现的区块链账本分布式存储技术 |
EP3566392B1 (en) * | 2018-12-13 | 2021-08-25 | Advanced New Technologies Co., Ltd. | Achieving consensus among network nodes in a distributed system |
US20190278765A1 (en) | 2018-12-19 | 2019-09-12 | Alibaba Group Holding Limited | Shared secret-based blockchain storage |
CN109871366B (zh) | 2019-01-17 | 2021-09-10 | 华东师范大学 | 一种基于纠删码的区块链分片存储与查询方法 |
CN110612700B (zh) * | 2019-03-15 | 2021-06-22 | 创新先进技术有限公司 | 基于恢复的公钥进行认证 |
CN110096894B (zh) * | 2019-05-10 | 2023-01-17 | 东北大学 | 一种基于区块链的数据匿名共享系统及方法 |
CN110175212B (zh) | 2019-05-22 | 2021-07-06 | 杭州复杂美科技有限公司 | 区块链分布式存储方法、数据读取方法、设备和存储介质 |
CN110400218B (zh) * | 2019-06-05 | 2023-03-24 | 西安电子科技大学 | 基于陪审团制度的分层共识方法、区块链数据处理系统 |
WO2019228550A2 (en) * | 2019-08-20 | 2019-12-05 | Alibaba Group Holding Limited | Blockchain data storage based on shared nodes and error correction code |
AU2019321745B2 (en) | 2019-11-06 | 2022-01-27 | Alipay (Hangzhou) Information Technology Co., Ltd. | Prioritizing shared blockchain data storage |
-
2019
- 2019-11-06 AU AU2019321745A patent/AU2019321745B2/en active Active
- 2019-11-06 JP JP2020560983A patent/JP7050955B2/ja active Active
- 2019-11-06 EP EP19850703.0A patent/EP3769217B1/en active Active
- 2019-11-06 SG SG11202010169PA patent/SG11202010169PA/en unknown
- 2019-11-06 KR KR1020207031348A patent/KR102396737B1/ko active IP Right Grant
- 2019-11-06 WO PCT/CN2019/115902 patent/WO2020035088A2/en unknown
- 2019-11-06 CN CN201980005830.4A patent/CN111417930B/zh active Active
- 2019-11-06 CA CA3098645A patent/CA3098645A1/en active Pending
-
2020
- 2020-07-14 TW TW109123721A patent/TWI740575B/zh active
- 2020-10-30 US US17/086,034 patent/US11023314B2/en active Active
-
2021
- 2021-05-28 US US17/333,961 patent/US11327833B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN111417930B (zh) | 2022-04-15 |
EP3769217B1 (en) | 2022-06-01 |
JP2021528882A (ja) | 2021-10-21 |
SG11202010169PA (en) | 2020-11-27 |
US11327833B2 (en) | 2022-05-10 |
EP3769217A2 (en) | 2021-01-27 |
WO2020035088A3 (en) | 2020-09-03 |
US11023314B2 (en) | 2021-06-01 |
JP7050955B2 (ja) | 2022-04-08 |
EP3769217A4 (en) | 2021-04-21 |
CN111417930A (zh) | 2020-07-14 |
US20210286669A1 (en) | 2021-09-16 |
WO2020035088A2 (en) | 2020-02-20 |
TWI740575B (zh) | 2021-09-21 |
US20210049066A1 (en) | 2021-02-18 |
KR20210055632A (ko) | 2021-05-17 |
AU2019321745B2 (en) | 2022-01-27 |
AU2019321745A1 (en) | 2021-05-20 |
KR102396737B1 (ko) | 2022-05-10 |
CA3098645A1 (en) | 2020-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI720918B (zh) | 基於錯誤校正碼之共用區塊鏈資料儲存的共識 | |
TWI740575B (zh) | 用於優先化共用區塊鏈資料儲存的方法、系統和裝置 | |
US11025410B2 (en) | Shared blockchain data storage based on error correction coding in trusted execution environments | |
US10833846B1 (en) | Shared blockchain data storage based on error correction coding in trusted execution environments | |
TWI759791B (zh) | 基於錯誤校正碼的共享區塊鏈資料儲存的方法、系統及裝置 |